package Ġcom . god sle w . core . domain . reducer Ċ Ċ import Ġcom . free let ics . rx redux . Reducer Ċ import Ġcom . god sle w . core . android . action . App Action Ċ import Ġcom . god sle w . core . domain . state . Account State Ċ import Ġcom . god sle w . core . domain . state . Timeline State Ċ Ċ object ĠTimeline Reducer Ġ: ĠRed ucer < Account State , ĠApp Action . Account Action . Timeline Action > Ġ{ ĊĠ Ġoverride Ġfun Ġinvoke ( ĊĠĠĠ Ġstate : ĠAccount State , ĊĠĠĠ Ġaction : ĠApp Action . Account Action . Timeline Action ĊĠ Ġ): ĠAccount State Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( action ) Ġ{ ĊĠĠĠĠĠ Ġis ĠApp Action . Account Action . Timeline Action . Add Action Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ( state . account . userId () Ġ== Ġaction . page . account . userId ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġstate . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpages Ġ= Ġstate . pages . plus ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTimeline State ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage Ġ= Ġaction . page . page Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccount Ġ= Ġstate . account , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatuses Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġstate ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġis ĠApp Action . Account Action . Timeline Action . Remove Action Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ( state . account . userId () Ġ== Ġaction . page . account . userId ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġstate . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpages Ġ= Ġstate . pages . filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . page Ġ!= Ġaction . page . page Type ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġstate ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġis ĠApp Action . Account Action . Timeline Action . Status Action Ġ-> Ġstate . copy ( pages Ġ= Ġstate . pages . map Ġ{ ĠStatus Reducer . invoke ( it , Ġaction ) Ġ}) ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ }