package Ġcom . pv _ libs . rx cache pro _ sample . ui . rx _ sample Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . lifecycle . Android ViewModel Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġcom . pv _ libs . cache pro _ rx java . Api Result Ċ import Ġcom . pv _ libs . cache pro _ rx java . utils . is From Cache Ċ import Ġcom . pv _ libs . rx cache pro _ sample . models . Get Users Response Ċ import Ġcom . pv _ libs . rx cache pro _ sample . models . User Ċ import Ġcom . pv _ libs . rx cache pro _ sample . network . Ret rofit Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġretrofit 2 . Response Ċ Ċ class ĠRx Sample ViewModel ( app : ĠApplication ) Ġ: ĠAndroid ViewModel ( app ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġcomposite Disposable Ġ= ĠComposite Disposable () ĊĊĠĠĠ Ġprivate Ġval Ġapi Service Ġ= ĠRet rofit . get Rx ApiService ( app ) ĊĠĠĠ Ġprivate Ġval Ġapi Caller Ġ= Ġapi Service . get Users Api Caller () ĊĊĠĠĠ Ġval Ġin Api Running LiveData Ġ= Ġapi Caller . is Api InProgress LiveData ĊĠĠĠ Ġval Ġusers List LiveData Ġ= ĠMutable LiveData < List < User >>() ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġinit On Fetch Users Api () ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit On Fetch Users Api () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdis posable Ġ= Ġapi Caller . getResponse Observable () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠApi Result . Success Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Response ( it . data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠApi Result . Error Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Toast ( it . exception . localized Message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcomposite Disposable . add ( dis posable ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Response ( response : ĠResponse < Get Users Response >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( response . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Toast ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . is From Cache ()) Ġ" Loaded Ġdata Ġfrom Ġcache " Ġelse Ġ" Loaded Ġdata Ġfrom Ġserver " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġusers List LiveData . post Value ( response . body () !!. users ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Toast ( response . message ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Toast ( message : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠToast . makeText ( getApplication (), Ġmessage , ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfetch Users () Ġ{ ĊĠĠĠĠĠĠĠ Ġapi Caller . fetch From Server () ĊĠĠĠ Ġ} ĊĊ Ċ }