package Ġmot oc it izen . presentation . screens . home Ċ Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġdagger . h ilt . android . lifecycle . H ilt ViewModel Ċ import Ġmot oc it izen . data . repos . Settings Data Repo Ċ import Ġmot oc it izen . domain . lc en state . Lc en State Ċ import Ġmot oc it izen . domain . lc en state . to Lc en Event Observable Ċ import Ġmot oc it izen . domain . use cases . Acc ident UseCase Ċ import Ġmot oc it izen . domain . use cases . GetUser UseCase Ċ import Ġmot oc it izen . presentation . base . view model . Base ViewModel Ċ import Ġmot oc it izen . presentation . base . view model . delegate Ċ import Ġmot oc it izen . presentation . base . view model . map Distinct Ċ import Ġjavax . inject . Inject Ċ Ċ @ H ilt ViewModel Ċ class ĠHome ViewModel Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval ĠgetUser : ĠGetUser UseCase , ĊĠĠĠ Ġprivate Ġval Ġget Acc ident UseCase : ĠAcc ident UseCase , ĊĠĠĠ Ġprivate Ġval Ġsettings Data Repo : ĠSettings Data Repo Ċ ) Ġ: ĠBase ViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġlive State Ġ= ĠMutable LiveData ( create Initial ViewState ()) ĊĊĠĠĠ Ġprivate Ġvar Ġstate : ĠHome ViewState Ġby Ġlive State . delegate () ĊĊĠĠĠ Ġval Ġload User State Ġ= Ġlive State . map Distinct Ġ{ Ġit . user Ġ} ĊĠĠĠ Ġval Ġload Acc ident List State Ġ= Ġlive State . map Distinct Ġ{ Ġit . acc ident List Ġ} ĊĊĠĠĠ Ġfun Ġload User () Ġ{ ĊĠĠĠĠĠĠĠ Ġsafe Subscribe Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetUser ( skip Cache Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Lc en Event Observable Ġ{ Ġit Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġstate Ġ= Ġstate . copy ( user Ġ= Ġit ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ:: handleError ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Initial ViewState (): ĠHome ViewState Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠHome ViewState ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaccident List Ġ= ĠL c en State . None , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Ġ= ĠL c en State . None , ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Acc ident List ( lat : ĠDouble , Ġlon : ĠDouble ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsafe Subscribe Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Acc ident UseCase . get Acc ident List ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlat Ġ= Ġlat , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlon Ġ= Ġlon , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġradius Ġ= Ġsettings Data Repo . get Distance (). toInt (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdepth Ġ= Ġsettings Data Repo . get Depth (). toInt (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠuserId Ġ= Ġstate . user . as Content (). id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Lc en Event Observable Ġ{ Ġit Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġstate Ġ= Ġstate . copy ( acc ident List Ġ= Ġit ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ:: handleError ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }