package Ġglobal . ms nth rp . scanner . base Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġglobal . ms nth rp . scanner . utils . android Schedulers Ċ import Ġio . reactivex . Comp letable Ċ import Ġio . reactivex . Single Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġio . reactivex . dis pos ables . Disposable Ċ Ċ open Ġclass ĠBase ViewModel Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġcomposite Disposable Ġ= ĠComposite Disposable () ĊĊĠĠĠ Ġprivate Ġval Ġloading LiveData Ġ= ĠMutable LiveData < Boolean >() ĊĊĠĠĠ Ġprivate Ġval Ġerror LiveData Ġ= ĠMutable LiveData < One Time Event < String >>() ĊĊĠĠĠ Ġval Ġloading : ĠLive Data < Boolean > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġloading LiveData ĊĊĠĠĠ Ġval Ġerror : ĠLive Data < One Time Event < String >> ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġerror LiveData ĊĊĠĠĠ Ġprotected Ġvar ĠisLoading : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġloading LiveData . value Ġ== Ġtrue ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġloading LiveData . value Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun ĠsetError ( errorMessage : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠisLoading Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġerror LiveData . value Ġ= ĠOne Time Event ( errorMessage ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun ĠDis posable . addTo Dis pos ables () Ġ{ ĊĠĠĠĠĠĠĠ Ġcomposite Disposable . add ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġ< T > ĠSingle < T >. sub scr ( consumer : Ġ( T ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġandroid Schedulers () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Subscribe Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠisLoading Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Success Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠisLoading Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. do OnError Ġ{ Ġthrowable Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsetError ( intercept Error ( throwable . message Ġ?: Ġ" null Ġthrowable ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( consumer ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. addTo Dis pos ables () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun ĠComp letable . sub scr ( consumer : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġto Single Default ( true ). sub scr Ġ{ Ġconsumer () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġintercept Error ( errorMessage : ĠString ): ĠString Ġ= ĠerrorMessage ĊĊĠĠĠ Ġfun Ġdispose () Ġ{ ĊĠĠĠĠĠĠĠ Ġcomposite Disposable . dispose () ĊĠĠĠ Ġ} Ċ Ċ }