package Ġcom . team nex ters . android . meal di ary . ui . boarding Ċ Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġcom . jak ew h art on . rx relay 2 . Publish Relay Ċ import Ġcom . team nex ters . android . meal di ary . base . Base ViewModel Ċ import Ġcom . team nex ters . android . meal di ary . repository . Local Repository Ċ import Ġcom . team nex ters . android . meal di ary . util . extension . subscribe Of Ċ import Ġcom . team nex ters . android . meal di ary . util . extension . throttle Click Ċ import Ġcom . team nex ters . android . meal di ary . util . rx . Scheduler Provider Ċ import Ġio . reactivex . Observable Ċ Ċ internal Ġinterface ĠBo arding ViewModel Ġ{ ĊĠĠĠ Ġinterface ĠInputs Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġto Click Next () ĊĠĠĠĠĠĠĠ Ġfun Ġto Click Skip () ĊĠĠĠĠĠĠĠ Ġfun Ġto Check Position ( pos : ĠInt ) ĊĠĠĠĠĠĠĠ Ġfun Ġto Navigate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠOutputs Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġof Click Next (): ĠObservable < Unit > ĊĠĠĠĠĠĠĠ Ġfun Ġof Click Skip (): ĠObservable < Unit > ĊĠĠĠĠĠĠĠ Ġfun Ġof Check Position (): ĠObservable < Int > ĊĠĠĠĠĠĠĠ Ġfun Ġof Navigate (): ĠObservable < Unit > ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠViewModel ( private Ġval Ġscheduler Provider : ĠScheduler Provider , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġlocal Repository : ĠLocal Repository ) Ġ: ĠBase ViewModel (), ĠInputs , ĠOutputs Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġinputs : ĠInputs Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġval Ġoutputs : ĠOutputs Ġ= Ġthis ĊĊĠĠĠĠĠĠĠ Ġval Ġboard Items Ġ= ĠMutable LiveData < List < Board Item >>() ĊĠĠĠĠĠĠĠ Ġval Ġboard Position Ġ= ĠMutable LiveData < Int >() ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġclick Next Relay Ġ= ĠPublish Relay . create < Unit >() ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġclick Skip Relay Ġ= ĠPublish Relay . create < Unit >() ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcheck Position Relay Ġ= ĠPublish Relay . create < Int >() ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġnavigation To Min Relay Ġ= ĠPublish Relay . create < Unit >() ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdis pos ables . addAll ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocal Repository . board Items () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Of ( onNext Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġboard Items . post Value ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġboard Position . post Value ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Position Relay . accept ( it . size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}), ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutputs . of Click Skip () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. throttle Click () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Of ( onNext Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinputs . to Navigate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġto Click Next () Ġ= Ġclick Next Relay . accept ( Unit ) ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġto Click Skip () Ġ= Ġclick Skip Relay . accept ( Unit ) ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġto Check Position ( pos : ĠInt ) Ġ= Ġcheck Position Relay . accept ( pos ) ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġto Navigate () Ġ= Ġnavigation To Min Relay . accept ( Unit ) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġof Click Next (): ĠObservable < Unit > Ġ= Ġclick Next Relay ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġof Click Skip (): ĠObservable < Unit > Ġ= Ġclick Skip Relay ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġof Check Position (): ĠObservable < Int > Ġ= Ġcheck Position Relay ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġof Navigate (): ĠObservable < Unit > Ġ= Ġnavigation To Min Relay ĊĊĠĠĠ Ġ} Ċ }