/* Ċ * ĠCopyright Ġ( C ) Ġ 2 0 1 9 . ĠW W ĠInternational , ĠInc . Ċ * Ċ * Ġ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 Ċ * Ċ * ĠĠĠ Ġhttp :// 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 . ww . ro x ie Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mediator LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġio . reactivex . subjects . Publish Subject Ċ Ċ /** Ċ Ġ* ĠStore Ġwhich Ġmanages Ġbusiness Ġdata Ġand Ġstate . Ċ Ġ*/ Ċ abstract Ġclass ĠBase ViewModel < A Ġ: ĠBase Action , ĠS Ġ: ĠBase State > Ġ: ĠViewModel () Ġ{ ĊĠĠĠ Ġprotected Ġval Ġactions : ĠPublish Subject < A > Ġ= ĠPublish Subject . create < A >() ĊĊĠĠĠ Ġprotected Ġval Ġdis pos ables : ĠComposite Disposable Ġ= ĠComposite Disposable () ĊĊĠĠĠ Ġprotected Ġabstract Ġval ĠinitialState : ĠS ĊĊĠĠĠ Ġprotected Ġval Ġstate Ġ= ĠMutable LiveData < S >() ĊĊĠĠĠ Ġprivate Ġval Ġtag Ġby Ġlazy Ġ{ Ġjava Class . simple Name Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġcurrent Ġstate . ĠIt Ġis Ġequal Ġto Ġthe Ġlast Ġvalue Ġreturned Ġby Ġthe Ġstore 's Ġreducer . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġobservable State : ĠLive Data < S > Ġ= ĠMed iator LiveData < S >(). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Source ( state ) Ġ{ Ġdata Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR ox ie . log ("$ tag : ĠReceived Ġstate : Ġ$ data ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetValue ( data ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDis patches Ġan Ġaction . ĠThis Ġis Ġthe Ġonly Ġway Ġto Ġtrigger Ġa Ġstate Ġchange . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġdispatch ( action : ĠA ) Ġ{ ĊĠĠĠĠĠĠĠ ĠR ox ie . log ("$ tag : ĠReceived Ġaction : Ġ$ action ") ĊĠĠĠĠĠĠĠ Ġactions . onNext ( action ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Cle ared () Ġ{ ĊĠĠĠĠĠĠĠ Ġdis pos ables . clear () ĊĠĠĠ Ġ} Ċ }