/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 8 , ĠCh is wick ĠForest Ċ Ġ* Ċ Ġ* Ġ Ġ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 . pi j . z work out . list Ċ Ċ import Ġcom . pi j . hor ro cks .* Ċ import Ġcom . pi j . utils . Logger Ċ import Ġio . reactivex . Observable Ċ Ċ /** Ċ Ġ* Ċ Ġ* ĠCreated Ġon Ġ 0 1 / 0 3 / 2 0 1 8 . Ċ Ġ* Ċ Ġ* Ġ@ author ĠP ier re jean Ċ Ġ*/ Ċ Ċ internal Ġclass ĠHor ro cks Work outs ViewModel Ġprivate Ġconstructor ( private Ġval Ġlogger : ĠLogger , Ġengine : ĠEngine < Model , ĠModel >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġloader : ĠRed ucer Creator < Any , ĠModel >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġshow Detail : ĠRed ucer Creator < Work out Info , ĠModel >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġcreate Work out : ĠRed ucer Creator < Any , ĠModel >) Ġ: ĠWork outs ViewModel Ġ{ ĊĠĠĠ Ġprivate Ġval Ġmodel Stream : ĠObservable < Model > ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġengine Configuration Ġ= ĠConfiguration . builder < Model , ĠModel >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. store ( Memory Storage ( initialState ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. transient Reset ter Ġ{ Ġreset Transient ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. state To Model Ġ{ Ġit Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. cre ators ( listOf ( loader , Ġshow Detail , Ġcreate Work out )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġmodel Stream Ġ= Ġengine . run With ( engine Configuration ). share () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġreset Transient ( input : ĠModel ): ĠModel Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinput . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Work out Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Error Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Work out Ġ= Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠinitialState (): ĠModel Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠModel ( false , Ġnull , Ġnull , Ġfalse , Ġempty List ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġload () Ġ{ ĊĠĠĠĠĠĠĠ Ġloader . trigger ( Any ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġselect ( work out : ĠWork out Info ) Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Detail . trigger ( work out ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Work out () Ġ{ ĊĠĠĠĠĠĠĠ Ġcreate Work out . trigger ( Any ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġmodel (): ĠObservable < Model > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmodel Stream ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do OnError Ġ{ Ġe Ġ-> Ġlogger . print ( java Class , Ġe , Ġ" Terminal ĠDamage !! !") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Complete Ġ{ Ġlogger . print ( java Class , Ġ" model () Ġcompleted !! !") Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠHelper Ġconstructor . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġcreate ( logger : ĠLogger , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġengine : ĠEngine < Model , ĠModel >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloading Feature : ĠAsync Interaction < Any , ĠModel >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Detail Feature : ĠInteraction < Work out Info , ĠModel >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Work out Feature : ĠInteraction < Any , ĠModel > ĊĠĠĠĠĠĠĠ Ġ): ĠHor ro cks Work outs ViewModel Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠHor ro cks Work outs ViewModel ( logger , Ġengine , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMultiple Reducer Creator ( loading Feature , Ġlogger ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSingle Reducer Creator ( show Detail Feature , Ġlogger ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSingle Reducer Creator ( create Work out Feature , Ġlogger ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ