package Ġcom . example . rx java example Ċ Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġcom . example . domain . Character Ċ import Ġcom . example . domain . State Ċ import Ġcom . example . domain . State . Success Ċ import Ġcom . example . use cases . Get Characters Ċ import Ġio . reactivex . rx java 3 . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . rx java 3 . dis pos ables . Disposable Ċ import Ġio . reactivex . rx java 3 . schedul ers . Schedulers Ċ Ċ class ĠViewModel ( private Ġval Ġget Characters : ĠGet Characters ) Ġ: ĠViewModel () Ġ{ ĊĠĠĠ Ġprivate Ġval Ġresponse Ġ= ĠMutable LiveData < State < List < Character >> >() ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġd : ĠDis posable ĊĊĠĠĠ Ġfun Ġget Characters () Ġ{ ĊĠĠĠĠĠĠĠ Ġresponse . value Ġ= ĠState . Loading ĊĠĠĠĠĠĠĠ Ġd Ġ= Ġget Characters . invoke (). subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Response ( characters Ġ= Ġresponse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġerror Response Ġ-> Ġresponse . value Ġ= ĠState . Failure ( error Response ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Response ( characters : ĠList < Character >) Ġ{ ĊĠĠĠĠĠĠĠ Ġresponse . value Ġ= ĠSuccess ( characters ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Response () Ġ= Ġresponse ĊĊĠĠĠ Ġoverride Ġfun Ġon Cle ared () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! d . is Disposed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġd . dispose () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsuper . on Cle ared () ĊĠĠĠ Ġ} Ċ } Ċ