package Ġcom . mar lon ma f ra . cor onav ir ustr ack ing app . features . details Ċ Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġcom . mar lon ma f ra . cor onav ir ustr ack ing app . data . Cor ona Tracking DataSource Ċ import Ġcom . mar lon ma f ra . cor onav ir ustr ack ing app . model . Location Ċ import Ġcom . mar lon ma f ra . cor onav ir ustr ack ing app . network . Timeline Response Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ Ċ class ĠCountry Details ViewModel ( ĊĠĠĠ Ġprivate Ġval ĠdataSource : ĠCor ona Tracking DataSource Ċ ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġcomposite Disposable Ġ= ĠComposite Disposable () ĊĠĠĠ Ġval Ġerror : ĠMutable LiveData < Unit > Ġby Ġlazy Ġ{ ĠMutable LiveData < Unit >() Ġ} ĊĠĠĠ Ġval Ġlocation : ĠMutable LiveData < Location > Ġby Ġlazy Ġ{ ĠMutable LiveData < Location >() Ġ} ĊĠĠĠ Ġval ĠprogressBar : ĠMutable LiveData < Boolean > Ġby Ġlazy Ġ{ ĠMutable LiveData < Boolean >() Ġ} ĊĊĠĠĠ Ġfun Ġload Timeline ( id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcomposite Disposable . add ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠdataSource . getTime line ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Subscribe Ġ{ ĠprogressBar . value Ġ= Ġtrue Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do Finally Ġ{ ĠprogressBar . value Ġ= Ġfalse Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ Ġhandle Response ( it ) Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror . value Ġ= ĠUnit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Response ( response : ĠTimeline Response ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlocation . value Ġ= Ġresponse . location ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Cle ared () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Cle ared () ĊĠĠĠĠĠĠĠ Ġcomposite Disposable . clear () ĊĠĠĠ Ġ} Ċ }