package Ġsk . stub a . fe i . mob v . crypt ow allet . ui . fragment Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view .* Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġsk . stub a . fe i . mob v . crypt ow allet . R Ċ import Ġsk . stub a . fe i . mob v . crypt ow allet . api . St ellar Api Ċ import Ġsk . stub a . fe i . mob v . crypt ow allet . database . App Database Ċ import Ġsk . stub a . fe i . mob v . crypt ow allet . databinding . Fragment Home Binding Ċ import Ġsk . stub a . fe i . mob v . crypt ow allet . repository . Account Repository Ċ import Ġsk . stub a . fe i . mob v . crypt ow allet . repository . Balance Repository Ċ import Ġsk . stub a . fe i . mob v . crypt ow allet . ui . adapter . Home Adapter Ċ import Ġsk . stub a . fe i . mob v . crypt ow allet . util . visible Ċ import Ġsk . stub a . fe i . mob v . crypt ow allet . view model . balance . Balance ViewModel Ċ import Ġsk . stub a . fe i . mob v . crypt ow allet . view model . balance . Balance ViewModel Factory Ċ Ċ class ĠHome Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġ_ binding : ĠFragment Home Binding ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġbinding Ġget () Ġ= Ġ_ binding !! ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbalance ViewModel : ĠBalance ViewModel ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= ĠFragment Home Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġval Ġapplication Ġ= Ġrequire NotNull ( this . activity ). application ĊĠĠĠĠĠĠĠ Ġval Ġdatabase Ġ= ĠApp Database . get Database ( application ) ĊĠĠĠĠĠĠĠ Ġbalance ViewModel Ġ= ĠViewModel Provider ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBalance ViewModel Factory ( Account Repository ( database . account Dao (), ĠSt ellar Api ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBalance Repository ( database . balance Dao ())) ĊĠĠĠĠĠĠĠ Ġ) [ Balance ViewModel :: class . java ] ĊĊĠĠĠĠĠĠĠ Ġ// Ġbalances Ġsync ĊĠĠĠĠĠĠĠ Ġbalance ViewModel . balances Sync ed . observe ( view Lifecycle Owner , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . refresh Layout . is Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġbinding . refresh Layout . setOn Refresh Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbalance ViewModel . sync Balances () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true ) ĊĊĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= ĠHome Adapter () ĊĠĠĠĠĠĠĠ Ġbinding . recycler Viewer . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġbalance ViewModel . all Balances . observe ( view Lifecycle Owner , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ?. let Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . recycler Viewer . visible ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . empty View . visible ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . recycler Viewer . visible ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . empty View . visible ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . submit List ( it . sorted By Ġ{ Ġt Ġ-> Ġt . balance Id Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu , Ġinflater : ĠMenu Inflater ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinflater . inflate ( R . menu . sync _ menu , Ġmenu ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . sync _ menu Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . refresh Layout . is Refresh ing Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbalance ViewModel . sync Balances () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= Ġnull ĊĠĠĠ Ġ} Ċ }