package Ġio . horizontal systems . bank wallet . core . managers Ċ Ċ import Ġio . horizontal systems . bank wallet . core .* Ċ import Ġio . horizontal systems . bin ance chain kit . proto . List Ċ import Ġio . horizontal systems . core . IC urrency Manager Ċ import Ġio . reactivex . Single Ċ import Ġio . reactivex . dis pos ables . Disposable Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ Ċ class ĠBackground Price Alert Manager ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠlocalStorage : ĠI LocalStorage , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġbackground Rate Alert Scheduler : ĠI Background Rate Alert Scheduler , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġprice Alerts Storage : ĠI Price Alerts Storage , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġrate Manager : ĠI Rate Manager , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġwallet Storage : ĠI Wallet Storage , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcurrency Manager : ĠI Currency Manager , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġprice Alert Handler : ĠI Price Alert Handler , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġnotification Manager : ĠIN ot ification Manager ) ĊĠĠĠ Ġ: ĠI Background Price Alert Manager , ĠBackground Manager . Listener Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġdis posable : ĠDis posable ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġon App Launch () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( notification Manager . isEnabled Ġ&& ĠlocalStorage . is Alert Notification On ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbackground Rate Alert Scheduler . start Periodic Worker () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbackground Rate Alert Scheduler . stop Periodic Worker () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfetch Rates (): ĠSingle < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcoin Codes Ġ= Ġwallet Storage . enabled Coins (). map Ġ{ Ġit . code Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġcurrency Code Ġ= Ġcurrency Manager . base Currency . code ĊĠĠĠĠĠĠĠ Ġvar Ġhas Expired Rate Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġrates Map Ġ= Ġcoin Codes . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmarket Info Ġ= Ġrate Manager . market Info ( it , Ġcurrency Code ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( market Info ?. is Expired () Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas Expired Rate Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit Ġto Ġmarket Info ?. rate ĊĠĠĠĠĠĠĠ Ġ}. toMap () ĊĊĠĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ! has Expired Rate Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprice Alert Handler . handle Alerts ( rates Map ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSingle . just ( Unit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrate Manager . set ( coin Codes ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrate Manager . market Info Observable ( currency Code ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. first Or Error () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Success Ġ{ Ġmarket Info Map Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprice Alert Handler . handle Alerts ( coin Codes . map Ġ{ Ġit Ġto Ġmarket Info Map [ it ]?. rate Ġ}. toMap ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĠUnit Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdid Enter Background () Ġ{ ĊĠĠĠĠĠĠĠ Ġdis posable ?. dispose () ĊĊĠĠĠĠĠĠĠ Ġval Ġalerts Ġ= Ġprice Alerts Storage . all () ĊĠĠĠĠĠĠĠ Ġval Ġcurrency Ġ= Ġcurrency Manager . base Currency ĊĠĠĠĠĠĠĠ Ġvar Ġhas Expired Rate Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġcoin Codes Ġ= Ġalerts . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmarket Info Ġ= Ġrate Manager . market Info ( it . coin . code , Ġcurrency . code ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( market Info ?. is Expired () Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas Expired Rate Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . last Rate Ġ= Ġmarket Info ?. rate ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . coin . code ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif (! has Expired Rate ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprice Alerts Storage . save ( alerts ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrate Manager . set ( coin Codes ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdis posable Ġ= Ġrate Manager . market Info Observable ( currency . code ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ Ġmarket Info Map Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalerts . forEach { Ġalert Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalert . last Rate Ġ= Ġmarket Info Map [ alert . coin . code ]?. rate ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprice Alerts Storage . save ( alerts ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġwill Enter Foreground () Ġ{ ĊĠĠĠĠĠĠĠ Ġnotification Manager . clear () ĊĠĠĠ Ġ} Ċ } Ċ