package Ġcom . f riday tech . dex . presentation . balance Ċ Ċ import Ġcom . f riday tech . dex . App Ċ import Ġcom . f riday tech . dex . core . model . Balance State Ċ import Ġcom . f riday tech . dex . core . model . Coin Balance Ċ import Ġcom . f riday tech . dex . core . model . E Convert Type Ċ import Ġcom . f riday tech . dex . data . adapter . Adapter State Ċ import Ġcom . f riday tech . dex . data . adapter . I Adapter Ċ import Ġcom . f riday tech . dex . data . manager . I Adapter Manager Ċ import Ġcom . f riday tech . dex . data . manager . IC oin Manager Ċ import Ġcom . f riday tech . dex . data . manager . rates . IR ates Manager Ċ import Ġcom . f riday tech . dex . data . manager . rates . Rates Converter Ċ import Ġcom . f riday tech . dex . presentation . widgets . balance . Total Balance Info Ċ import Ġcom . f riday tech . dex . utils . normalized Div Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġio . reactivex . subjects . Publish Subject Ċ import Ġjava . math . BigDecimal Ċ Ċ class ĠBalance Loader ( ĊĠĠĠ Ġprivate Ġval Ġcoin Manager : ĠI Coin Manager Ġ= ĠApp . coin Manager , ĊĠĠĠ Ġprivate Ġval Ġadapters Manager : ĠI Adapter Manager Ġ= ĠApp . adapter Manager , ĊĠĠĠ Ġprivate Ġval Ġrates Manager : ĠIR ates Manager Ġ= ĠApp . rates Manager , ĊĠĠĠ Ġprivate Ġval Ġrates Converter : ĠR ates Converter Ġ= ĠApp . rates Converter , ĊĠĠĠ Ġprivate Ġval Ġdis pos ables : ĠComposite Disposable Ċ ) Ġ{ ĊĠĠĠ Ġval Ġbase Coin Code Ġ= Ġ" ETH " ĊĊĠĠĠ Ġval Ġbalances Sync Subject Ġ= ĠPublish Subject . create < Unit >() ĊĠĠĠ Ġvar Ġbalances Ġ= ĠlistOf < Coin Balance >() ĊĊĠĠĠ Ġvar Ġtotal Balance Ġ= ĠTotal Balance Info ( ĊĠĠĠĠĠĠĠ Ġcoin Manager . getC oin ( base Coin Code ), ĊĠĠĠĠĠĠĠ ĠBigDecimal . ZERO , ĊĠĠĠĠĠĠĠ ĠBigDecimal . ZERO ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġis All Sync ed : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapters . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . state Ġ! is ĠAdapter State . Sync ed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġadapters . isNotEmpty () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġbalance Disposable Ġ= ĠComposite Disposable () ĊĊĠĠĠ Ġprivate Ġval Ġadapters : ĠList < I Adapter > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġadapters Manager . adapters ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġrates Manager . get Mark ets Observable () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ Ġupdate Balance () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. let Ġ{ Ġdis pos ables . add ( it ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġadapters Manager . adapters Updated Signal ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ Ġon Refresh Adapters () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. let Ġ{ Ġdis pos ables . add ( it ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrefresh () Ġ{ ĊĠĠĠĠĠĠĠ Ġadapters Manager . refresh () ĊĠĠĠĠĠĠĠ Ġrates Manager . refresh () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclear () Ġ{ ĊĠĠĠĠĠĠĠ Ġbalance Disposable . clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Refresh Adapters () Ġ{ ĊĠĠĠĠĠĠĠ Ġclear () ĊĊĠĠĠĠĠĠĠ Ġadapters . forEach Ġ{ Ġadapter Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . state Updated Flow able . subscribe Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Balance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. let Ġ{ Ġbalance Disposable . add ( it ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . balance Updated Flow able . subscribe Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Balance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. let Ġ{ Ġbalance Disposable . add ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġupdate Balance () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Balance () Ġ{ ĊĠĠĠĠĠĠĠ Ġbalances Ġ= Ġadapters . map Indexed Ġ{ Ġindex , Ġadapter Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCoin Balance ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcoin Manager . coins [ index ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . balance , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrates Converter . getC oin s Price ( adapter . coin . code , Ġadapter . balance ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrates Converter . getC oin Price ( adapter . coin . code ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmatch Adapter State ( adapter ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( adapter . coin . code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ETH " Ġ-> ĠE Convert Type . WRAP ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" W ETH " Ġ-> ĠE Convert Type . UN WRAP ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠE Convert Type . NONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġupdate Total Balance () ĊĊĠĠĠĠĠĠĠ Ġbalances Sync Subject . onNext ( Unit ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Total Balance () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġtotal Fi at Ġ= ĠBigDecimal . ZERO ĊĊĠĠĠĠĠĠĠ Ġbalances . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtotal Fi at Ġ+= Ġit . fi at Balance ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġbalance Ġ= Ġtotal Fi at . normalized Div ( rates Converter . getC oin Price ( base Coin Code )) ĊĊĠĠĠĠĠĠĠ Ġtotal Balance . balance Ġ= Ġbalance ĊĠĠĠĠĠĠĠ Ġtotal Balance . fi at Balance Ġ= Ġtotal Fi at ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmatch Adapter State ( adapter : ĠI Adapter ): ĠBalance State Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( adapter . state ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠAdapter State . Sync ing Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBalance State . SYNC ING ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠAdapter State . Sync ed Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBalance State . SYNC ED ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠAdapter State . Not Sync ed Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBalance State . FAILED ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ