package Ġcom . ct ech . eat y . ui . search . epic Ċ Ċ import Ġcom . ct ech . eat y . base . redux . Action Ċ import Ġcom . ct ech . eat y . base . redux . Epic Ċ import Ġcom . ct ech . eat y . repository . Search Repository Ċ import Ġcom . ct ech . eat y . ui . home . view model . Product Item ViewModel Ċ import Ġcom . ct ech . eat y . ui . search . action . Search Action Ċ import Ġcom . ct ech . eat y . ui . search . result . Load More Result Ċ import Ġcom . ct ech . eat y . ui . search . state . Search State Ċ import Ġcom . ct ech . eat y . util . rx . Thread Scheduler Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . subjects . Behavior Subject Ċ import Ġio . reactivex . subjects . Publish Subject Ċ Ċ class ĠLoad More Epic ( private Ġval Ġsearch Repository : ĠSearch Repository , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġthread Scheduler : ĠThread Scheduler ) Ġ: ĠE pic < Search State > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġapply ( action : ĠPublish Subject < Action >, Ġstate : ĠBehavior Subject < Search State >): ĠObservable < Load More Result > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġaction . of Type ( Search Action . Load More :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! state . value . loading More ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpage Ġ= Ġstate . value . page Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Repository . search Post ( page , Ġit . keyword ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLoad More Result . success ( page , Ġit . map Ġ{ ĠProduct Item ViewModel ( it ) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. onError Return Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLoad More Result . fail ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( thread Scheduler . worker Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. start With ( Load More Result . in Progress ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }