/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 Ġan ish dub ey Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttps :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . an ish dub ey . redux . android Ċ Ċ import Ġandroid . arch . lifecycle . Lifecycle Ċ import Ġandroid . arch . lifecycle . Lifecycle Observer Ċ import Ġandroid . arch . lifecycle . On Lifecycle Event Ċ import Ġandroid . arch . lifecycle . ViewModel Ċ import Ġio . reactivex . Observer Ċ import Ġio . reactivex . dis pos ables . Disposable Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* Ġ@ author Ġan ish dub ey Ċ Ġ*/ Ċ abstract Ġclass ĠRedux ViewModel Ġ: ĠViewModel (), ĠLifecycle Observer Ġ{ ĊĊĠĠĠ Ġvar Ġlifecycle : ĠLifecycle ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle !!. add Observer ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġd : ĠDis posable ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval Ġstore Observer Ġ= Ġobject Ġ: ĠObserver < Redux Store . Snap Shot > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonComplete () Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Subscribe ( d : ĠDis posable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Redux ViewModel . d Ġ= Ġd ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Next ( t : ĠRedux Store . Snap Shot ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon StateChange ( t . action , Ġt . app State ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build Config . DEBUG ) Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ On Lifecycle Event ( Lifecycle . Event . ON _ CREATE ) ĊĠĠĠ Ġprivate Ġfun Ġsubscribe To Store () Ġ{ ĊĠĠĠĠĠĠĠ ĠRedux Store . getInstance (). subscribe With Reducers ( getTag (), Ġstore Observer , Ġadd Reducers ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ On Lifecycle Event ( Lifecycle . Event . ON _ DESTROY ) ĊĠĠĠ Ġprivate Ġfun Ġunsubscribe From Store () Ġ{ ĊĠĠĠĠĠĠĠ ĠRedux Store . getInstance (). un Subscribe ( getTag ()) ĊĠĠĠĠĠĠĠ Ġd ?. let Ġ{ Ġif Ġ(! it . is Disposed ) Ġit . dispose () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠOptional Ġoverride . ĊĠĠĠĠ Ġ* ĠIf Ġno ĠRed ucer Ġis Ġprovided , Ġ[ Redux Store ] Ġwill Ġconsume Ġraw Ġpayload . ĊĠĠĠĠ Ġ* Ġ@ return Ġreduc ers : Ġlist Ġof Ġreduc ers . ĠRed uc ers Ġare Ġrun Ġin Ġserial . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprotected Ġopen Ġfun Ġadd Reducers (): ĠList < Reducer > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġempty List () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Cle ared () Ġ{ ĊĠĠĠĠĠĠĠ Ġlifecycle !!. remove Observer ( this ) ĊĠĠĠĠĠĠĠ Ġsuper . on Cle ared () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġdispatch Action ( action : ĠAction ) Ġ{ ĊĠĠĠĠĠĠĠ ĠRedux Store . getInstance (). dispatch Action ( action ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġdispatch In cognito Action ( action : ĠAction ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġyou Ġmay Ġwant Ġto Ġuse ĠSingle Event LiveData Ġwith Ġthis ĊĠĠĠĠĠĠĠ ĠRedux Store . getInstance (). dispatch In cognito Action ( action ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTag Ġof Ġimplementing Ġclass ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġabstract Ġfun Ġget Tag (): ĠString ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCons ume Ġredux Ġoutput . ĊĠĠĠĠ Ġ* Ġ@ param Ġaction Ġcontains Ġthe Ġdis patched Ġevent Ġdetails . ĊĠĠĠĠ Ġ* Ġ@ param Ġapp State Ġcontains Ġglobal Ġstate Ġof Ġthe Ġapp . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġabstract Ġfun Ġon StateChange ( action : ĠAction , Ġapp State : ĠTreeMap < String , ĠAny ?> ) Ċ }