package Ġcom . z mal in owski . on ew ay demo . v 2 Ċ Ċ import Ġcom . z mal in owski . on ew ay . Reducer Ċ Ċ class ĠDemo Reducer : Reducer < State , ĠAction > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġinvoke ( state : ĠState , Ġaction : ĠAction ): ĠState Ġ= Ġwhen Ġ( action ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠAction . Loading Ġ-> Ġstate . loading () ĊĠĠĠĠĠĠĠ Ġis ĠAction . Loaded Ġ-> Ġstate . loaded ( action . data ) ĊĠĠĠĠĠĠĠ Ġis ĠAction . Adding Ġ-> Ġstate . add ( action . content ) ĊĠĠĠĠĠĠĠ Ġis ĠAction . Added Ġ-> Ġstate . added ( action . content ) ĊĠĠĠĠĠĠĠ Ġis ĠAction . Removed Ġ-> Ġstate . removed ( action . content ) ĊĠĠĠĠĠĠĠ Ġis ĠAction . Removing Ġ-> Ġstate . remove ( action . content ) ĊĠĠĠĠĠĠĠ Ġis ĠAction . Failed Ġ-> Ġstate . revert ( action . int ention ) ĊĠĠĠĠĠĠĠ Ġis ĠAction . Update Ġ-> Ġstate . update ( action ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun ĠState . update ( action : ĠAction . Update ): ĠState Ġ= Ġcopy ( data Ġ= Ġdata . update ( action . content , Ġaction . checked )) Ċ Ċ private Ġfun ĠState . loaded ( data : ĠList < Value >): ĠState Ġ= Ġcopy ( loading Ġ= Ġfalse , Ġdata Ġ= Ġdata ) Ċ Ċ private Ġfun ĠState . loading (): ĠState Ġ= Ġcopy ( loading Ġ= Ġtrue , Ġerror Ġ= Ġfalse ) Ċ Ċ private Ġfun ĠState . revert ( int ention : ĠInt ention ): ĠState Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( int ention ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠInt ention . Get Ġ-> Ġcopy ( loading Ġ= Ġfalse , Ġerror Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ Ġis ĠInt ention . Add Ġ-> Ġremove ( int ention . content ) ĊĠĠĠĠĠĠĠ Ġis ĠInt ention . Remove Ġ-> Ġcopy ( data Ġ= Ġdata . update ( int ention . content , ĠValue . Status . NORMAL )) ĊĠĠĠĠĠĠĠ Ġis ĠInt ention . Update Ġ-> Ġcopy ( data Ġ= Ġdata . update ( int ention . content , Ġ! int ention . checked )) ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun ĠState . removed ( content : ĠString ): ĠState Ġ= Ġcopy ( data Ġ= Ġdata . remove ( content )) Ċ Ċ private Ġfun ĠState . added ( content : ĠString ): ĠState Ġ= Ġcopy ( data Ġ= Ġdata . update ( content , ĠValue . Status . NORMAL )) Ċ Ċ private Ġfun ĠState . remove ( content : ĠString ): ĠState Ġ= Ġcopy ( data Ġ= Ġdata . update ( content , ĠValue . Status . DE LET ING )) Ċ Ċ private Ġfun ĠState . add ( content : ĠString ): ĠState Ġ= Ġcopy ( data Ġ= Ġdata . add ( content )) Ċ Ċ fun ĠList < Value >. update ( content : ĠString , Ġstatus : ĠValue . Status ): ĠList < Value > Ġ{ ĊĠĠĠ Ġval Ġindex Ġ= ĠindexOf First Ġ{ Ġit . content Ġ== Ġcontent Ġ} ĊĠĠĠ Ġreturn Ġto Mutable List (). apply Ġ{ Ġset ( index , Ġget ( index ). copy ( status Ġ= Ġstatus )) Ġ} Ċ } Ċ Ċ fun ĠList < Value >. update ( content : ĠString , Ġchecked : ĠBoolean ): ĠList < Value > Ġ{ ĊĠĠĠ Ġval Ġindex Ġ= ĠindexOf First Ġ{ Ġit . content Ġ== Ġcontent Ġ} ĊĠĠĠ Ġreturn Ġto Mutable List (). apply Ġ{ Ġset ( index , Ġget ( index ). copy ( checked Ġ= Ġchecked )) Ġ} Ċ } Ċ Ċ private Ġfun ĠList < Value >. add ( content : ĠString ): ĠList < Value > Ġ= Ġto Mutable List (). apply Ġ{ Ġadd ( Value ( content )) Ġ} Ċ Ċ private Ġfun ĠList < Value >. remove ( content : ĠString ): ĠList < Value > Ġ= Ġfilter Ġ{ Ġit . content Ġ!= Ġcontent Ġ}