package Ġnl . am ster dam . open mon ument end ag . mon ument s . presenter Ċ Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġio . reactivex . subjects . Publish Subject Ċ import Ġnl . am ster dam . open mon ument end ag . mon ument s . repository . Mon ument Data Repository Ċ import Ġnl . am ster dam . open mon ument end ag . mon ument s . repository . Saved Mon ument Data Repository Ċ Ċ class ĠMon ument s Presenter ( val Ġview : ĠMon ument s Contract . View , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmon ument Data Repository : ĠMon ument Data Repository , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsaved Mon ument Data Repository : ĠSaved Mon ument Data Repository ) Ġ: ĠMon ument s Contract . Presenter Ġ{ ĊĊĠĠĠ Ġval Ġmon ument Save Action Publisher : ĠPublish Subject < Mon ument Save > Ġ= ĠPublish Subject . create () ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġmon ument Save Action Publisher . do On Next ({ Ġmon ument Save Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( mon ument Save . saved ) Ġview . on Mon ument Saved ( mon ument Save . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġview . on Mon ument Un saved ( mon ument Save . id ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġdis posable Ġ= ĠComposite Disposable () ĊĊĠĠĠ Ġoverride Ġfun Ġget Mon ument s () Ġ{ ĊĠĠĠĠĠĠĠ Ġview . onStart Loading () ĊĠĠĠĠĠĠĠ Ġdis posable . add ( mon ument Data Repository . getList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ Ġl Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . on Mon ument s Loaded ( l ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . on End Loading () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsave Mon ument ( id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdis posable . add ( saved Mon ument Data Repository . insert One ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ Ġsaved Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmon ument Save Action Publisher . onNext ( Mon ument Save ( id , Ġsaved )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġattach () Ġ{ ĊĠĠĠĠĠĠĠ Ġget Mon ument s () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdetach () Ġ{ ĊĠĠĠĠĠĠĠ Ġdis posable . clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠMon ument Save ( val Ġid : ĠInt , Ġval Ġsaved : ĠBoolean ) Ċ }