package Ġorg . step ik . android . presentation . stories . dispatcher Ċ Ċ import Ġio . reactivex . Scheduler Ċ import Ġio . reactivex . rx kotlin . Sing les Ċ import Ġio . reactivex . rx kotlin . plus Assign Ċ import Ġio . reactivex . rx kotlin . subscribe By Ċ import Ġorg . step ic . d roid . di . qual ifiers . Background Scheduler Ċ import Ġorg . step ic . d roid . di . qual ifiers . Main Scheduler Ċ import Ġorg . step ik . android . domain . stories . inter actor . St ories Interactor Ċ import Ġorg . step ik . android . presentation . stories . St ories Feature Ċ import Ġru . nob ird . android . domain . rx . empty OnError Stub Ċ import Ġru . nob ird . android . presentation . redux . dispatcher . Rx Action Dispatcher Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠSt ories Action Dispatcher Ċ @ Inject Ċ constructor ( ĊĠĠĠ Ġprivate Ġval Ġstories Interactor : ĠSt ories Interactor , ĊĊĠĠĠ Ġ@ Background Scheduler ĊĠĠĠ Ġprivate Ġval Ġbackground Scheduler : ĠScheduler , ĊĠĠĠ Ġ@ Main Scheduler ĊĠĠĠ Ġprivate Ġval Ġmain Scheduler : ĠScheduler Ċ ) Ġ: ĠRx Action Dispatcher < St ories Feature . Action , ĠSt ories Feature . Message >() Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġhandle Action ( action : ĠSt ories Feature . Action ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSt ories Feature . Action . Fetch St ories Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomposite Disposable Ġ+= ĠSing les ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. zip ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstories Interactor . fetch St ories (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstories Interactor . getView ed St ories Ids () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ Ġstories , Ġviewed Ids Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSt ories Feature . Message . Fetch St ories Success ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstories . sorted By Ġ{ Ġif Ġ( it . id Ġin Ġviewed Ids ) Ġ 1 Ġelse Ġ 0 Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġviewed Ids ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( background Scheduler ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( main Scheduler ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe By ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonSuccess Ġ= Ġ{ Ġon New Message ( it ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonError Ġ= Ġ{ Ġon New Message ( St ories Feature . Message . Fetch St ories Error ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSt ories Feature . Action . Mark Story As View ed Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomposite Disposable Ġ+= Ġstories Interactor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. mark Story As View ed ( action . story Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe By ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonComplete Ġ= Ġ{}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonError Ġ= Ġempty OnError Stub ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }