package Ġme . sweet ll . t uc ao . business . d rr r . view model Ċ Ċ import Ġandroid . view . View Ċ import Ġcom . trello . rx lifecycle 2 . kotlin . bind To Lifecycle Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġme . sweet ll . t uc ao . Const Ċ import Ġme . sweet ll . t uc ao . base . Base ViewModel Ċ import Ġme . sweet ll . t uc ao . business . d rr r . D rr r List Activity Ċ import Ġme . sweet ll . t uc ao . business . d rr r . D rr r New Post Activity Ċ import Ġme . sweet ll . t uc ao . business . d rr r . model . Post Ċ import Ġme . sweet ll . t uc ao . di . service . Api Config Ċ Ċ class ĠD rr r List ViewModel ( val Ġactivity : ĠD rr r List Activity ): ĠBase ViewModel () Ġ{ ĊĊĠĠĠ Ġvar Ġpage Ġ= Ġ 0 ĊĠĠĠ Ġval Ġsize Ġ= Ġ 1 0 ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġload Data () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġpage Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġactivity . set Refresh ing ( true ) ĊĠĠĠĠĠĠĠ Ġjson ApiService . d rr r Posts ( page , Ġsize , Ġ" date ", Ġ" desc ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. bind To Lifecycle ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. retry When ( Api Config . Retry With Delay ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . code Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠObservable . just ( response . data !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠObservable . error ( Error ( response . msg )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do After Terminate Ġ{ Ġactivity . set Refresh ing ( false ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . load Data ( data . to Mutable List ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload More Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġjson ApiService . d rr r Posts ( page , Ġsize , Ġ" date ", Ġ" desc ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. bind To Lifecycle ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. retry When ( Api Config . Retry With Delay ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . code Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠObservable . just ( response ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠObservable . error ( Error ( response . msg )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġresponse . data !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data . size Ġ< Ġsize ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . load More Data ( data . to Mutable List (), ĠConst . LOAD _ MORE _ END ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . load More Data ( data . to Mutable List (), ĠConst . LOAD _ MORE _ COMPLETE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . load More Data ( null , ĠConst . LOAD _ MORE _ FAIL ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠonClick Add ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ ĠD rr r New Post Activity . intent To ( activity , ĠD rr r List Activity . REQUEST _ NEW _ POST ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġvote ( post : ĠPost ) Ġ{ ĊĠĠĠĠĠĠĠ Ġjson ApiService . d rr r Vote ( post . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. bind To Lifecycle ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. retry When ( Api Config . Retry With Delay ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({}, Ġ{}) ĊĠĠĠ Ġ} Ċ } Ċ