package Ġorg . step ic . d roid . features . stories . presentation Ċ Ċ import Ġio . reactivex . Scheduler Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġio . reactivex . rx kotlin . Sing les . zip Ċ import Ġio . reactivex . rx kotlin . subscribe By Ċ import Ġorg . step ic . d roid . core . present ers . Presenter Base Ċ 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 ic . d roid . features . stories . mapper . to Story Ċ import Ġorg . step ic . d roid . features . stories . repository . Story Templates Repository Ċ import Ġorg . step ic . d roid . util . add Disposable Ċ import Ġorg . step ik . android . model . Story Template Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠSt ories Presenter Ċ @ Inject Ċ constructor ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġstories Repository : ĠStory Templates Repository , ĊĊĠĠĠĠĠĠĠ Ġ@ Background Scheduler ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġbackground Scheduler : ĠScheduler , ĊĠĠĠĠĠĠĠ Ġ@ Main Scheduler ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġmain Scheduler : ĠScheduler Ċ ) Ġ: ĠPres enter Base < St ories View >() Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġstate Ġ: ĠSt ories View . State Ġ= ĠSt ories View . State . Idle ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. setState ( value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġcomposite Disposable Ġ= ĠComposite Disposable () ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġfetch St ories () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfetch St ories () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( state Ġ!= ĠSt ories View . State . Idle ) Ġreturn ĊĠĠĠĠĠĠĠ Ġstate Ġ= ĠSt ories View . State . Loading ĊĊĠĠĠĠĠĠĠ Ġcomposite Disposable Ġadd Disposable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġzip ( stories Repository . get Story Templates (). map Ġ{ Ġit . map ( Story Template :: to Story ) Ġ}, Ġstories Repository . getView ed St ories Ids ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( background Scheduler ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( main Scheduler ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe By ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate Ġ= ĠSt ories View . State . Empty ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) Ġ{ Ġ( stories , Ġviewed Ids ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate Ġ= Ġif Ġ( stories . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSt ories View . State . Success ( stories , Ġviewed Ids ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSt ories View . State . Empty ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġattach View ( view : ĠSt ories View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . attach View ( view ) ĊĠĠĠĠĠĠĠ Ġview . setState ( state ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Story View ed ( story Id : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcomposite Disposable Ġadd Disposable Ġstories Repository ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. mark Story As View ed ( story Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe By ({ Ġ/* Ġignore Ġ*/ Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstate Ġ= Ġthis . state ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( state Ġis ĠSt ories View . State . Success ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . state Ġ= Ġstate . copy ( view ed St ories Ids Ġ= Ġstate . view ed St ories Ids Ġ+ Ġstory Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }