package Ġorg . step ic . d roid . core . present ers Ċ Ċ import Ġio . reactivex . Scheduler Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġorg . step ic . d roid . core . present ers . contracts . Pre paring Code Step View Ċ 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 . di . step . code . Code Scope Ċ import Ġorg . step ic . d roid . model . Step Ċ import Ġorg . step ic . d roid . util . is Code Step Ready Ċ import Ġorg . step ic . d roid . web . Api Ċ import Ġjavax . inject . Inject Ċ Ċ @ Code Scope Ċ class ĠPre paring Code Step Presenter Ċ @ Inject Ċ constructor ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġapi : ĠApi , ĊĠĠĠĠĠĠĠ Ġ@ Background Scheduler ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġscheduler : ĠScheduler , ĊĠĠĠĠĠĠĠ Ġ@ Main Scheduler ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġmain Scheduler : ĠScheduler ) Ġ: ĠPres enter Base < Pre paring Code Step View >() Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġcomposite Disposable Ġ= ĠComposite Disposable () ĊĊĠĠĠ Ġfun Ġprepare Step ( step : ĠStep ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( step . is Code Step Ready ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. on Step Prepared ( step ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġview ?. on Step Pre paring () ĊĠĠĠĠĠĠĠ Ġval Ġdis posable Ġ= Ġapi . get Steps Reactive ( long ArrayOf ( step . id )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinternet Step Ġ= Ġit . steps ?. first () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( internet Step ?. is Code Step Ready ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue Ġ-> Ġinternet Step ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠStep Not Prepared () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( scheduler ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( main Scheduler ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ Ġnew Step Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. on Step Prepared ( new Step ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. on Step Not Prepared () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġcomposite Disposable . add ( dis posable ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdetach View ( view : ĠPre paring Code Step View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . detach View ( view ) ĊĠĠĠĠĠĠĠ Ġcomposite Disposable . clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠStep Not Prepared Ġ: ĠThrowable (" Step Ġis Ġnot Ġprepared ") Ċ } Ċ