package Ġcom . playground . redux . redux . reducer Ċ Ċ import Ġcom . pe tn agy . k ored ux . Action Ċ import Ġcom . pe tn agy . k ored ux . Reducer Ċ import Ġcom . playground . redux . data . User Search Ċ import Ġcom . playground . redux . redux . actions .* Ċ import Ġcom . playground . redux . redux . app state .* Ċ Ċ class ĠApp Reducer : ĠRed ucer < AppState > Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġinvoke ( action : ĠAction , Ġstate : ĠApp State ): ĠApp State Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠApp State ( user Ġ= Ġuser Reducer ( action , Ġstate . user ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage State Ġ= Ġnavigation Reducer ( action , Ġstate . page State ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepos Ġ= Ġrepo Reducer ( action , Ġstate . repos ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommits Ġ= Ġcommits Reducer ( action , Ġstate . commits )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġuser Reducer ( action : ĠAction , Ġuser State : ĠUser State ): ĠUser State Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġstate Ġ= Ġuser State ĊĠĠĠĠĠĠĠ Ġwhen ( action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠLoad Previous Search Action Ġ-> Ġstate Ġ= Ġstate . copy ( loading Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠPrevious Search List Action Ġ-> Ġstate Ġ= Ġstate . copy ( loading Ġ= Ġfalse , Ġhistory Ġ= Ġaction . prev User Se ar ches ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠUser Selection Action Ġ-> Ġstate Ġ= Ġstate . copy ( selected UserName Ġ= Ġaction . selected User ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠUser Type Action Ġ-> Ġstate Ġ= Ġstate . copy ( typed Name Ġ= Ġaction . typed Text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠAdd History Action Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhistory List Ġ= Ġstate . history . filter Ġ{ Ġit . userName Ġ!= Ġaction . selected User Ġ}. to Mutable List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhistory List . add ( 0 , ĠUser Search ( action . selected User , ĠSystem . currentTimeMillis ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate Ġ= Ġstate . copy ( history Ġ= Ġhistory List . toList ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġstate ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġnavigation Reducer ( action : ĠAction , Ġpage State : ĠPage State ): ĠPage State Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġstate Ġ= Ġpage State ĊĠĠĠĠĠĠĠ Ġwhen ( action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠNext Page Action Ġ-> Ġstate Ġ= Ġstate . copy ( actual Page Ġ= Ġaction . page ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġstate ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrepo Reducer ( action : ĠAction , Ġrepo State : ĠRepo State ): ĠRepo State Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġstate Ġ= Ġrepo State ĊĠĠĠĠĠĠĠ Ġwhen ( action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠLoad Repos Action Ġ-> Ġstate Ġ= Ġstate . copy ( loading Ġ= Ġtrue , Ġrepo List Ġ= Ġempty List ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠGitHub Repos Success Action Ġ-> Ġstate Ġ= Ġstate . copy ( loading Ġ= Ġfalse , Ġrepo List Ġ= Ġaction . repo List ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠGitHub Repos Failed Action Ġ-> Ġstate Ġ= Ġstate . copy ( loading Ġ= Ġfalse , Ġrepo List Ġ= Ġempty List ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠClear Repo Items Action Ġ-> Ġstate Ġ= Ġstate . copy ( repo List Ġ= Ġempty List ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSet F avour ite Action Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġrepo State . repo List . map Ġ{ Ġit Ġ-> Ġif Ġ( it . name Ġ== Ġaction . repo Name ) Ġit . copy ( favorite Ġ= Ġtrue ) Ġelse Ġit } ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate Ġ= Ġstate . copy ( repo List Ġ= Ġlist ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠClear F avour ite Action Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġrepo State . repo List . map Ġ{ Ġit Ġ-> Ġif Ġ( it . name Ġ== Ġaction . repo Name ) Ġit . copy ( favorite Ġ= Ġfalse ) Ġelse Ġit } ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate Ġ= Ġstate . copy ( repo List Ġ= Ġlist ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠF avour ite Loaded From Db Action Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġupdated List Ġ= Ġrepo State . repo List . map Ġ{ Ġit Ġ-> Ġit . copy ( favorite Ġ= Ġaction . result Map . contains ( it . name )) Ġ}. toList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate Ġ= Ġstate . copy ( repo List Ġ= Ġupdated List ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠRepo Selected Action Ġ-> Ġstate Ġ= Ġstate . copy ( selected Repo Name Ġ= Ġaction . repo Name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġstate ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcommits Reducer ( action : ĠAction , Ġcommits : ĠCommit State ): ĠCommit State Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġstate Ġ= Ġcommits ĊĠĠĠĠĠĠĠ Ġwhen ( action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠLoad Commits Action Ġ-> Ġstate Ġ= Ġstate . copy ( loading Ġ= Ġtrue , Ġcommit List Ġ= Ġempty List ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠCommit s Loaded Failed Action Ġ-> Ġstate Ġ= Ġstate . copy ( loading Ġ= Ġfalse , Ġcommit List Ġ= Ġempty List ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠCommit s Loaded Success Action Ġ-> Ġstate Ġ= Ġstate . copy ( loading Ġ= Ġfalse , Ġcommit List Ġ= Ġaction . commits ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠClear Commit List Action Ġ-> Ġstate Ġ= Ġstate . copy ( commit List Ġ= Ġempty List ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġstate ĊĠĠĠ Ġ} Ċ }