package Ġio . horizontal systems . bank wallet . modules . restore Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Handler Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . fragment . app . Fragment Result Listener Ċ import Ġandroidx . fragment . app . commit Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġio . horizontal systems . bank wallet . R Ċ import Ġio . horizontal systems . bank wallet . core . Base Fragment Ċ import Ġio . horizontal systems . bank wallet . entities . Account Type Ċ import Ġio . horizontal systems . bank wallet . entities . Coin Ċ import Ġio . horizontal systems . bank wallet . entities . Pre defined Account Type Ċ import Ġio . horizontal systems . bank wallet . modules . main . Main Module Ċ import Ġio . horizontal systems . bank wallet . modules . restore . restore select coins . Restore Select Coins Fragment Ċ import Ġio . horizontal systems . bank wallet . modules . restore . restore select pre defined account type . Restore Select Pre defined Account Type Fragment Ċ import Ġio . horizontal systems . bank wallet . modules . restore . words . Restore Words Fragment Ċ import Ġio . horizontal systems . bank wallet . modules . restore . words . Restore Words Module . Restore Account Type Ċ import Ġio . horizontal systems . core . find Nav Controller Ċ import Ġkotlinx . android . synt hetic . main . fragment _ manage _ keys .* Ċ Ċ class ĠRestore Fragment Ġ: ĠBase Fragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠviewModel : ĠRestore ViewModel ĊĠĠĠ Ġprivate Ġvar Ġin App Ġ= Ġtrue ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ restore , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġval Ġselect Coins Ġ= Ġarguments ?. getBoolean ( SELECT _ CO INS _ KEY ) !! ĊĠĠĠĠĠĠĠ Ġval Ġcoin To Enable Ġ= Ġarguments ?. get Parcelable < Coin >( CO IN _ TO _ ENABLE ) ĊĠĠĠĠĠĠĠ Ġval Ġpredefined Account Type Ġ= Ġarguments ?. get Parcelable < Pre defined Account Type >( PRE DEFINED _ ACCOUNT _ TYPE _ KEY ) ĊĠĠĠĠĠĠĠ Ġin App Ġ= Ġarguments ?. getBoolean ( IN _ APP _ KEY ) Ġ?: Ġtrue ĊĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠViewModel Provider ( this , ĠRestore Module . Factory ( select Coins , Ġpredefined Account Type , Ġcoin To Enable )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get ( Restore ViewModel :: class . java ) ĊĊĠĠĠĠĠĠĠ ĠHandler (). post Delayed ({ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// without Ġdelay Ġfragment Ġis Ġopened Ġwithout Ġslide Ġanimation ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen Screen ( viewModel . initial Screen , ĠaddTo Stack Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ}, Ġ 1 0 ) ĊĊĠĠĠĠĠĠĠ Ġobserve () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġobserve () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . open Screen Live Event . observe ( view Lifecycle Owner , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen Screen ( it , ĠaddTo Stack Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ ĠviewModel . finish Live Event . observe ( view Lifecycle Owner , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclose With Success () ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġclose With Success () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( in App ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). pop Back Stack () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMain Module . start ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . finish Affinity () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġopen Screen ( screen : ĠRestore ViewModel . Screen , ĠaddTo Stack : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= Ġget Fragment By Screen ( screen ) ĊĠĠĠĠĠĠĠ Ġshow Fragment ( fragment , ĠaddTo Stack ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Fragment By Screen ( screen : ĠRestore ViewModel . Screen ): ĠBase Fragment Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( screen ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRestore ViewModel . Screen . Select Pre defined Account Type Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Pre defined Account Type Listener () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRestore Select Pre defined Account Type Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠRestore ViewModel . Screen . Restore Account Type Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Account Type Listener () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( screen . pre defined Account Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPre defined Account Type . Standard Ġ-> Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPre defined Account Type . Bin ance , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPre defined Account Type . Z cash Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrestore Account Type Ġ= Ġwhen Ġ( screen . pre defined Account Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPre defined Account Type . Standard Ġ-> ĠRestore Account Type . STANDARD Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPre defined Account Type . Bin ance Ġ-> ĠRestore Account Type . BIN ANCE Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠRestore Account Type . ZC ASH ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRestore Words Fragment . instance ( restore Account Type , Ġscreen . pre defined Account Type . title ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠRestore ViewModel . Screen . Select Coins Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Select Coins Listener () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRestore Select Coins Fragment . instance ( screen . pre defined Account Type , Ġscreen . account Type ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Fragment ( fragment : ĠBase Fragment , ĠaddTo Stack : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġchild FragmentManager . commit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( R . id . fragment Container View , Ġfragment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( addTo Stack ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠaddTo Back Stack ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Pre defined Account Type Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġchild FragmentManager . set Fragment Result Listener ( select Pre defined Account Type Request Key , Ġview Lifecycle Owner , ĠFragment Result Listener Ġ{ Ġrequest Key , Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpredefined Account Type Ġ= Ġresult . get Parcelable < Pre defined Account Type >( pre defined Account Type Bundle Key ) Ġ?: Ġreturn @ Fragment Result Listener ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . on Select ( pre defined Account Type ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Account Type Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġchild FragmentManager . set Fragment Result Listener ( account Type Request Key , Ġview Lifecycle Owner , ĠFragment Result Listener Ġ{ Ġrequest Key , Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaccount Type Ġ= Ġresult . get Parcelable < Account Type >( account Type Bundle Key ) Ġ?: Ġreturn @ Fragment Result Listener ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . on Enter ( account Type ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Select Coins Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġchild FragmentManager . set Fragment Result Listener ( select Coins Request Key , Ġview Lifecycle Owner , ĠFragment Result Listener Ġ{ Ġrequest Key , Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselected Coins Ġ= Ġresult . get Parcelable ArrayList < Coin >( select Coins Bundle Key ) Ġ?: Ġreturn @ Fragment Result Listener ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . on Select ( selected Coins ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval Ġselect Pre defined Account Type Request Key Ġ= Ġ" select Pre defined Account Type Request Key " ĊĠĠĠĠĠĠĠ Ġconst Ġval Ġpredefined Account Type Bundle Key Ġ= Ġ" pre defined Account Type Bundle Key " ĊĠĠĠĠĠĠĠ Ġconst Ġval Ġaccount Type Request Key Ġ= Ġ" account Type Request Key " ĊĠĠĠĠĠĠĠ Ġconst Ġval Ġaccount Type Bundle Key Ġ= Ġ" account Type Bundle Key " ĊĠĠĠĠĠĠĠ Ġconst Ġval Ġselect Coins Request Key Ġ= Ġ" select Coins Request Key " ĊĠĠĠĠĠĠĠ Ġconst Ġval Ġselect Coins Bundle Key Ġ= Ġ" select Coins Bundle Key " ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPRE DEFINED _ ACCOUNT _ TYPE _ KEY Ġ= Ġ" pre defined _ account _ type _ key " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSELECT _ CO INS _ KEY Ġ= Ġ" select _ coins _ key " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠCO IN _ TO _ ENABLE Ġ= Ġ" coin _ to _ enable " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠIN _ APP _ KEY Ġ= Ġ" in _ app _ key " ĊĠĠĠ Ġ} Ċ } Ċ