package Ġcom . mor ni . m orn ime ssage center . ui . viewModel Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Transform ations Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . paging . Live Paged List Builder Ċ import Ġandroidx . paging . Paged List Ċ import Ġcom . mor ni . m orn ime ssage center . data . Repository Ċ import Ġcom . mor ni . m orn ime ssage center . data . model . Mor ni Api Status Ċ import Ġcom . mor ni . m orn ime ssage center . data . model . Mor ni Message Ċ import Ġcom . mor ni . m orn ime ssage center . integration . Intent s Ċ import Ġcom . mor ni . m orn ime ssage center . ui . datasource . Messages DataSource Ċ import Ġcom . mor ni . m orn ime ssage center . ui . datasource . factory . Messages DataSource Factory Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġjava . util . concurrent . Executor Ċ import Ġjava . util . concurrent . Executors ĊĊ Ċ class ĠMor ni Message List ViewModel ( repository : ĠRepository ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġstatus Response : ĠLive Data < Mor ni Api Status > ĊĠĠĠ Ġprivate Ġvar Ġmor ni Messages : ĠLive Data < Paged List < Mor ni Message >> ĊĠĠĠ Ġprivate Ġval Ġcomposite Disposable Ġ= ĠComposite Disposable () ĊĠĠĠ Ġprivate Ġval Ġmessages DataSource Factory : ĠMessages DataSource Factory ĊĠĠĠ Ġprivate Ġval Ġexecutor : ĠExecutor ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġexecutor Ġ= ĠExec utors . new Fixed ThreadPool ( 5 ) ĊĠĠĠĠĠĠĠ Ġmessages DataSource Factory Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessages DataSource Factory ( composite Disposable , Ġrepository . api Service ) ĊĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= ĠP aged List . Config . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set PageSize ( repository . prefs Dao . pageSize Ġ?: ĠInt ents . DEFAULT _ PAGE _ SIZE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setInitial Load Size Hint ( repository . prefs Dao . pageSize Ġ?: ĠInt ents . DEFAULT _ PAGE _ SIZE Ġ* Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Enable Place holders ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġmor ni Messages Ġ= ĠLive Paged List Builder ( messages DataSource Factory , Ġconfig ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Fetch Executor ( executor ). build () ĊĠĠĠĠĠĠĠ Ġstatus Response Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTransform ations . switch Map < Messages DataSource , ĠMor ni Api Status >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessages DataSource Factory . messages DataSource LiveData , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMessages DataSource :: response LiveData ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstatus Response (): ĠLive Data < Mor ni Api Status > Ġ= Ġstatus Response ĊĊĠĠĠ Ġfun Ġmessages Response (): ĠLive Data < Paged List < Mor ni Message >> Ġ= Ġmor ni Messages ĊĊĠĠĠ Ġfun Ġretry () Ġ{ ĊĠĠĠĠĠĠĠ Ġmessages DataSource Factory . messages DataSource LiveData . value ?. retry () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Cle ared () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Cle ared () ĊĠĠĠĠĠĠĠ Ġcomposite Disposable . dispose () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrefresh () Ġ{ ĊĠĠĠĠĠĠĠ Ġmessages DataSource Factory . messages DataSource LiveData . value ?. invalidate () ĊĠĠĠ Ġ} Ċ }