package Ġme . s utt ich ai . develop . k oin example Ċ Ċ import Ġandroidx . lifecycle . Lifecycle Owner Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Ċ Ċ class ĠMain ViewModel Ġconstructor ( private Ġval Ġrepo : ĠCharacter Repository , Ġprivate Ġval Ġpresenter : ĠMain Presenter ) Ġ: ĊĠĠĠ ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġdata : ĠMutable LiveData < Mutable List < Character >> Ġ= ĠMutable LiveData () ĊĠĠĠ Ġprivate Ġval Ġevent : ĠMutable LiveData < Event > Ġ= ĠMutable LiveData () ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġrepo . observer Data (). observe Fore ver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( presenter . isLoading ( it )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . post Value ( Event . LOADING ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ observe Fore ver ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata . post Value ( presenter . sort ( it )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent . post Value ( Event . SHOW ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcall Api () Ġ{ ĊĠĠĠĠĠĠĠ Ġrepo . getData () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġobserver Data ( owner : ĠLifecycle Owner , Ġob : ĠObserver < Mutable List < Character >>) Ġ{ ĊĠĠĠĠĠĠĠ Ġdata . observe ( owner , Ġob ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġobserver Event ( owner : ĠLifecycle Owner , Ġob : ĠObserver < Event >) Ġ{ ĊĠĠĠĠĠĠĠ Ġevent . observe ( owner , Ġob ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Cle ared () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Cle ared () ĊĠĠĠĠĠĠĠ Ġrepo . cleared () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġenum Ġclass ĠEvent Ġ{ ĊĠĠĠĠĠĠĠ ĠLO ADING , ĊĠĠĠĠĠĠĠ ĠSHOW ĊĠĠĠ Ġ} Ċ }