package Ġcom . dev . rost y . placeholder . presentation . posts Ċ Ċ import Ġandroid . arch . lifecycle . Mutable LiveData Ċ import Ġandroid . arch . lifecycle . ViewModel Ċ import Ġcom . dev . rost y . placeholder . common . Rx Schedulers Ċ import Ġcom . dev . rost y . placeholder . data . DataSource Ċ import Ġcom . dev . rost y . placeholder . entity . Post Ċ import Ġcom . dev . rost y . placeholder . injection . App Component Ċ import Ġcom . dev . rost y . placeholder . presentation . ERROR Ċ import Ġcom . dev . rost y . placeholder . presentation . IDLE Ċ import Ġcom . dev . rost y . placeholder . presentation . LOAD Ċ import Ġcom . dev . rost y . placeholder . presentation . RESULT Ċ import Ġio . reactivex . dis pos ables . Disposable Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠĠ ĠPosts ViewModel Ġ: ĠViewModel (), ĠApp Component . Injectable Ġ{ ĊĊĠĠĠ Ġ@ Inject Ġlateinit Ġvar ĠdataSource : ĠDataSource ĊĠĠĠ Ġ@ Inject Ġlateinit Ġvar Ġrx Schedulers : ĠRx Schedulers ĊĊĠĠĠ Ġval Ġposts Ġ= ĠMutable LiveData < List < Post >>() ĊĠĠĠ Ġval Ġstate Ġ= ĠMutable LiveData < Int >() ĊĊĠĠĠ Ġvar Ġdis posable : ĠDis posable ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġinject ( app Component : ĠApp Component ) Ġ{ ĊĠĠĠĠĠĠĠ Ġapp Component . inject ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Cle ared () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Cle ared () ĊĊĠĠĠĠĠĠĠ Ġdis posable ?. apply Ġ{ Ġif Ġ(! is Disposed ) Ġdispose () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload Posts ( refresh : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġdis posable ?. apply Ġ{ Ġif Ġ(! is Disposed ) Ġdispose () Ġ} ĊĊĠĠĠĠĠĠĠ Ġdis posable Ġ= ĠdataSource . get Posts ( refresh ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( rx Schedulers . main ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Subscribe Ġ{ Ġstate . post Value ( LOAD ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠonSuccess ( it ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠonError () Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠonSuccess ( posts : ĠList < Post >) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . posts . value Ġ= Ġposts ĊĠĠĠĠĠĠĠ Ġthis . state . value Ġ= ĠRESULT ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠonError () Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . state . value Ġ= ĠERROR ĊĠĠĠ Ġ} Ċ }