package Ġcom . dag an . li or . crypto _ currency _ market _ price . bitcoin pr ic em ain screen . model Ċ Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . dis pos ables . Disposable Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ Ċ class ĠCrypto Price Interactor Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġdis posable : ĠDis posable ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval Ġapi Crypto Price Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠApi Crypto Price . create () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġapi Crypto Chart Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠApi Crypto Chart . create () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrequest Crypto Price Data From API ( on Finish Listener : ĠOn Finish Listener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdis posable Ġ= Ġapi Crypto Price . get Price () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġresult Ġ-> Ġon Finish Listener . on Price Result Success ( result . market _ price _ usd )}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġon Finish Listener . on Result Failed (" error Ġfetching Ġprice Ġdata ")} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrequest Crypto Chart Data From API ( on Finish Listener : ĠOn Finish Listener , ĠnumberOf Week s : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdis posable Ġ= Ġapi Crypto Chart . get Chart ( Api Crypto Chart . numberOf Week sTo Time span ( numberOf Week s )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ-> Ġval Ġlist : ĠMutable List < Pair < Long , ĠDouble >> Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . values . forEach Ġ{ Ġ Ġpair Ġ-> Ġlist . add ( pair . x Ġto Ġpair . y )} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Finish Listener . on Chart Result Success ( list ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġon Finish Listener . on Result Failed (" error Ġfetching Ġchart Ġdata ")} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠOn Finish Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Price Result Success ( price : ĠDouble ) ĊĠĠĠĠĠĠĠ Ġfun Ġon Chart Result Success ( chart Data : ĠMutable List < Pair < Long , ĠDouble >>) ĊĠĠĠĠĠĠĠ Ġfun Ġon Result Failed ( error : ĠString ) ĊĠĠĠ Ġ} Ċ }