package Ġorg . tech town . crypt oc ulus . view model Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroid . util . Log Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġio . reactivex . dis pos ables . Disposable Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġorg . tech town . crypt oc ulus . repository . Repository Impl Ċ Ċ class ĠFire store ViewModel ( application : ĠApplication ) Ġ: ĠViewModel () Ġ{ ĊĠĠĠ Ġprivate Ġval Ġcomposite Disposable Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠComposite Disposable () ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġval Ġrepository Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠRepository Impl ( application ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠFactory ( private Ġval Ġapplication : ĠApplication ) Ġ: ĠViewModel Provider . Factory Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġ< T Ġ: ĠViewModel ?> Ġcreate ( model Class : ĠClass < T >): ĠT Ġ= ĠFire store ViewModel ( application ) Ġas ĠT ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Cle ared () Ġ{ ĊĠĠĠĠĠĠĠ Ġcomposite Disposable . dispose () ĊĠĠĠĠĠĠĠ Ġsuper . on Cle ared () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Coin Name K ore ans Fire store () Ġ= Ġrepository . getC oin Name K ore ans Fire store () ĊĠĠĠĠĠĠĠ Ġ. add On Success Listener Ġ{ Ġhash Map Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcoin Infos Ġ= Ġrepository . getAll () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġcoin Infos . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( hash Map [ coin Infos [ i ]. coin Name ] Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcoin Name K orean Ġ= Ġhash Map [ coin Infos [ i ]. coin Name ] Ġas ĠString ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Coin Name K orean ( coin Name K orean , Ġcoin Infos [ i ]. coin Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Coin Name K orean (" ìĭł ê· ľ Ġìĥģ ìŀ¥ ", Ġcoin Infos [ i ]. coin Name )} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ. add On Failure Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" on Failure Ġin Ġget Coin Name K ore ans Fire store (): Ġ${ it . message }") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Coin Name K orean Fire store ( coin Name : ĠString ) Ġ= Ġrepository . getC oin Name K ore ans Fire store () ĊĠĠĠĠĠĠĠ Ġ. add On Success Listener Ġ{ Ġhash Map Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( hash Map [ coin Name ] Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Coin Name K orean ( hash Map [ coin Name ] Ġas ĠString , Ġcoin Name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ. add On Failure Listener Ġ{ Ġit Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" on Failure Ġin Ġget Coin Name K orean Fire store ($ coin Name ): Ġ${ it . message }") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Coin Name K orean ( coin Name K orean : ĠString , Ġcoin Name : ĠString ) Ġ= Ġadd Disposable ( repository . update Coin Name K orean ( coin Name K orean , Ġcoin Name ) ĊĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠ Ġ. observe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠ Ġ. subscribe ()) ĊĊĠĠĠ Ġprivate Ġfun Ġadd Disposable ( dis posable : ĠDis posable ) Ġ= Ġcomposite Disposable . add ( dis posable ) ĊĊĠĠĠ Ġprivate Ġfun Ġprintln ( data : ĠString ) Ġ= ĠLog . d (" Fire store ViewModel ", Ġdata ) Ċ }