package Ġcom . gu il her me hol z . where isl unch . view model Ċ Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroid . databinding . Base Observable Ċ import Ġandroid . databinding . Observable Boolean Ċ import Ġandroid . location . Location Ċ import Ġandroid . support . annotation . Visible ForTesting Ċ import Ġcom . gu il her me hol z . where isl unch . domain . Rest aurants Repository Ċ import Ġcom . gu il her me hol z . where isl unch . utils . isNot The Same As Ċ import Ġcom . gu il her me hol z . where isl unch . utils . log Error Ċ import Ġcom . gu il her me hol z . where isl unch . utils . to Simple String Ċ import Ġcom . gu il her me hol z . where isl unch . view . Search View Ċ import Ġrx . android . schedul ers . Android Schedulers Ċ import Ġrx . schedul ers . Schedulers Ċ Ċ class ĠSearch ViewModel ( val Ġpreferences : ĠSharedPreferences , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrepository : ĠRest aurants Repository ) Ġ: ĠBase Observable () Ġ{ ĊĊĠĠĠ Ġval Ġloading : ĠObservable Boolean Ġ= ĠObservable Boolean ( true ) ĊĠĠĠ Ġval Ġerror : ĠObservable Boolean Ġ= ĠObservable Boolean ( false ) ĊĠĠĠ Ġval Ġempty : ĠObservable Boolean Ġ= ĠObservable Boolean ( false ) ĊĊĠĠĠ Ġlateinit Ġvar Ġview : ĠSearch View ĊĊĠĠĠ Ġ@ Visible ForTesting ĊĠĠĠ Ġprivate Ġvar Ġprevious Location : ĠLocation ? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġload Rest aurants ( location : ĠLocation ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( location . isNot The Same As ( previous Location )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepository . get Rest aurants ( location ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . display Rest aurants ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġempty . set ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloading . set ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloading . set ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror . set ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog Error ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprevious Location Ġ= Ġlocation ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpreferences . edit (). putString (" last Location ", Ġprevious Location ?. to Simple String ()). apply () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġprevious Location ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprevious Location Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload Rest aurants ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }