package Ġru . har on code . word learn . word flow . presentation Ċ Ċ import Ġcom . har on code . ge mini . core . elements . Middleware Ċ import Ġcom . har on code . ge mini . core . elements . Reducer Ċ import Ġcom . har on code . ge mini . store . Only Action Store Ċ import Ġio . reactivex . Flow able Ċ import Ġjavax . inject . Inject Ċ import Ġru . har on code . word learn . common . di . Per Fragment Ċ import Ġru . har on code . word learn . common . domain . result . Determin ate Ċ import Ġru . har on code . word learn . common . domain . result . as Determin ate Ċ import Ġru . har on code . word learn . common . domain . validator . Ver ifiable Value Ċ import Ġru . har on code . word learn . common . util . Simple Validator Ċ import Ġru . har on code . word learn . word . domain . repository . Word Repository Ċ import Ġru . har on code . word learn . word . model . Word Ċ import Ġru . har on code . word learn . word . model . Word Example Ċ import Ġru . har on code . word learn . word flow . presentation . Create Word Store . Action Ċ import Ġru . har on code . word learn . word flow . presentation . Create Word ViewState . Item Ċ Ċ @ Per Fragment Ċ class ĠCreate Word Store Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġcategory Id : ĠLong , ĊĠĠĠ Ġword Repository : ĠWord Repository Ċ ) Ġ: ĠOnly Action Store < Action , ĠCreate Word ViewState , ĠNothing >( ĊĠĠĠ ĠinitialState Ġ= ĠCreate Word ViewState ( categoryId ), ĊĠĠĠ Ġmiddleware Ġ= ĠMiddle Ware Impl ( word Repository ), ĊĠĠĠ Ġreducer Ġ= ĠRed ucer Impl () Ċ ) Ġ{ ĊĊĠĠĠ Ġsealed Ġclass ĠAction Ġ{ ĊĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠChange Word ( val Ġword : ĠCharSequence ) Ġ: ĠAction () ĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠChange Translation ( val Ġtranslation : ĠCharSequence ) Ġ: ĠAction () ĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠChange Association ( val Ġassociation : ĠCharSequence ) Ġ: ĠAction () ĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠChange Tran scription ( val Ġtran scription : ĠCharSequence ) Ġ: ĠAction () ĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠAdd Example ( val Ġexample : ĠWord Example ) Ġ: ĠAction () ĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠRemove Example ( val Ġexample : ĠWord Example ) Ġ: ĠAction () ĊĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠSave Word Result ( val Ġdetermin ate : ĠDetermin ate ) Ġ: ĠAction () ĊĠĠĠĠĠĠĠ Ġobject ĠSave Word Ġ: ĠAction () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠMiddle Ware Impl ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġword Repository : ĠWord Repository ĊĠĠĠ Ġ) Ġ: ĠMiddleware < Action , ĠCreate Word ViewState , ĠAction > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġinvoke ( action : ĠAction , Ġstate : ĠCreate Word ViewState ): ĠFlow able < Action > Ġ= Ġwhen Ġ( action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠAction . Save Word Ġ-> Ġcreate Word ( state ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Comp letable ( word Repository :: save ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Determin ate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map ( Action :: Save Word Result ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠFlow able . just ( action ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġcreate Word ( state : ĠCreate Word ViewState ): ĠFlow able < Word > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġword Ġ= ĠWord ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġword Ġ= Ġstate . word . value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcategory Id Ġ= Ġstate . categoryId , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassociation Ġ= Ġstate . association , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtranslation Ġ= Ġstate . translation . value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexamples List Ġ= Ġstate . example ListItem ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Is Instance < Item . Word Example Item >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map ( Item . Word Example Item :: word Example ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠFlow able . just ( word ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠRed ucer Impl Ġ: ĠRed ucer < Create Word ViewState , ĠAction > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġinvoke ( state : ĠCreate Word ViewState , Ġaction : ĠAction ): ĠCreate Word ViewState Ġ= Ġwhen Ġ( action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠAction . Change Word Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġver ifiable Ġ= Ġaction . word . let ( Simple Validator :: isNotNull OrEmpty Or Blank ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate . copy ( word Ġ= ĠVer ifiable Value ( action . word . toString (), Ġver ifiable )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠAction . Change Translation Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġver ifiable Ġ= Ġaction . translation . let ( Simple Validator :: isNotNull OrEmpty Or Blank ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate . copy ( word Ġ= ĠVer ifiable Value ( action . translation . toString (), Ġver ifiable )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠAction . Change Association Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġver ifiable Ġ= Ġaction . association . let ( Simple Validator :: isNotNull OrEmpty Or Blank ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate . copy ( word Ġ= ĠVer ifiable Value ( action . association . toString (), Ġver ifiable )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠAction . Change Tran scription Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġver ifiable Ġ= Ġaction . tran scription . let ( Simple Validator :: isNotNull OrEmpty Or Blank ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate . copy ( word Ġ= ĠVer ifiable Value ( action . tran scription . toString (), Ġver ifiable )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠAction . Add Example Ġ-> Ġstate . copy ( example ListItem Ġ= Ġstate . example ListItem Ġ+ Ġaction . example . to Item ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠAction . Remove Example Ġ-> Ġstate . copy ( example ListItem Ġ= Ġstate . example ListItem Ġ- Ġaction . example . to Item ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠAction . Save Word Result Ġ-> Ġstate . copy ( determinate Ġ= Ġaction . determinate ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġstate ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun ĠWord Example . to Item (): ĠItem . Word Example Item Ġ= ĠItem . Word Example Item ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* Ġclass ĠNavigator Impl ( private Ġval Ġflow Router : ĠFlow Router ) Ġ: ĊĠĠĠĠĠĠĠĠ ĠNavigator < Create Word ViewState , ĠAction > Ġ{ ĊĊĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġinvoke ( state : ĠCreate Word ViewState , Ġaction : ĠAction ) Ġ= Ġwhen Ġ( action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠAction . Save Word Result Ġ-> Ġwhen Ġ( action . determinate ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠDetermin ate . Completed Ġ-> Ġflow Router . exit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠUnit ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠUnit ĊĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠ Ġ}*/ Ċ } Ċ