package Ġio . horizontal systems . bank wallet . modules . manage account Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . text . Editable Ċ import Ġandroid . text . Text Watcher Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . compose . foundation . layout . padding Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġio . horizontal systems . bank wallet . R Ċ import Ġio . horizontal systems . bank wallet . core .* Ċ import Ġio . horizontal systems . bank wallet . entities . Account Ċ import Ġio . horizontal systems . bank wallet . modules . backup key . Backup Key Module Ċ import Ġio . horizontal systems . bank wallet . modules . manage account . Manage Account Module . ACCOUNT _ ID _ KEY Ċ import Ġio . horizontal systems . bank wallet . modules . manage account . Manage Account ViewModel . Key Action State Ċ import Ġio . horizontal systems . bank wallet . modules . manage account . dialogs . Un link Confirmation Dialog Ċ import Ġio . horizontal systems . bank wallet . modules . network settings . Network Settings Module Ċ import Ġio . horizontal systems . bank wallet . modules . show key . Show Key Module Ċ import Ġio . horizontal systems . bank wallet . ui . compose . Compose App Theme Ċ import Ġio . horizontal systems . bank wallet . ui . compose . components . Button Secondary Default Ċ import Ġio . horizontal systems . bank wallet . ui . helpers . Text Helper Ċ import Ġio . horizontal systems . core . find Nav Controller Ċ import Ġio . horizontal systems . core . helpers . Hud Helper Ċ import Ġio . horizontal systems . views . List Position Ċ import Ġkotlinx . android . extensions . Layout Container Ċ import Ġkotlinx . android . synt hetic . main . fragment _ manage _ account .* Ċ import Ġkotlinx . android . synt hetic . main . view _ holder _ account _ setting _ view .* Ċ Ċ class ĠManage Account Fragment Ġ: ĠBase Fragment (), ĠUn link Confirmation Dialog . Listener Ġ{ ĊĠĠĠ Ġprivate Ġval ĠviewModel Ġby Ġview Models < Manage Account ViewModel > Ġ{ ĊĠĠĠĠĠĠĠ ĠManage Account Module . Factory ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarguments ?. getString ( ACCOUNT _ ID _ KEY ) !! ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġvar Ġsave MenuItem : ĠMenuItem ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ manage _ account , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġsave MenuItem Ġ= Ġtoolbar . menu . find Item ( R . id . menu Save ) ĊĊĠĠĠĠĠĠĠ Ġtoolbar . set Navigation OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). pop Back Stack () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtoolbar . setOn MenuItem ClickListener Ġ{ Ġitem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu Save Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . on Save () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtoolbar . title Ġ= ĠviewModel . account . name ĊĠĠĠĠĠĠĠ Ġname . setText ( viewModel . account . name ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtext Watcher Ġ= Ġobject Ġ: ĠText Watcher Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( s : ĠEdit able ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( s . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . onChange ( s . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbefore TextChanged ( s : ĠCharSequence ?, Ġstart : ĠInt , Ġcount : ĠInt , Ġafter : ĠInt ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon TextChanged ( s : ĠCharSequence ?, Ġstart : ĠInt , Ġbefore : ĠInt , Ġcount : ĠInt ) Ġ{} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġname . add TextChanged Listener ( text Watcher ) ĊĊĠĠĠĠĠĠĠ Ġunlink Button . setOn Single ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconfirmation List Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . Manage Account _ Delete _ Confirmation Remove ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . Manage Account _ Delete _ Confirmation Disable ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . Manage Account _ Delete _ Confirmation Lo se ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUn link Confirmation Dialog . show ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild FragmentManager , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . account . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfirmation List ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġnetwork Settings . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen Network Settings ( viewModel . account ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġchild FragmentManager . add Fragment On Attach Listener Ġ{ Ġ_, Ġfragment Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( fragment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠUn link Confirmation Dialog Ġ-> Ġfragment . set Listener ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel . key Action State LiveData . observe ( view Lifecycle Owner , Ġ{ Ġkey Action State Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( key Action State ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKey Action State . Show Recovery Phrase Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Button . show Attention ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Button . show Title ( getString ( R . string . Manage Account _ Recovery Phrase Show )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠShow Key Module . start ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . manage Account Fragment _ to _ show Key Fragment , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnav Options (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . account ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKey Action State . Backup Recovery Phrase Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Button . show Attention ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Button . show Title ( getString ( R . string . Manage Account _ Recovery Phrase Backup )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen Backup Module ( viewModel . account ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ ĠviewModel . additional View Items LiveData . observe ( view Lifecycle Owner , Ġ{ Ġadditional Items Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( additional Items . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadditional Info Items . adapter Ġ= ĠAdditional Info Adapter ( additional Items ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork Settings . set List Position ( List Position . Last ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ ĠviewModel . save Enabled LiveData . observe ( view Lifecycle Owner , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsave MenuItem ?. isEnabled Ġ= Ġit ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ ĠviewModel . finish Live Event . observe ( view Lifecycle Owner , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). pop Back Stack () ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġopen Backup Module ( account : ĠAccount ) Ġ{ ĊĠĠĠĠĠĠĠ ĠBackup Key Module . start ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . manage Account Fragment _ to _ backup Key Fragment , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnav Options (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaccount ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġopen Network Settings ( account : ĠAccount ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . manage Account Fragment _ to _ network Settings Fragment , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNetwork Settings Module . args ( account ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnav Options () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Un link Confirm () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . on Un link () ĊĠĠĠĠĠĠĠ ĠH ud Helper . show Success Message ( require View (), ĠgetString ( R . string . Hud _ Text _ Done )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĊĠĠĠĠĠĠĠ Ġsave MenuItem Ġ= Ġnull ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ class ĠAdditional Info Adapter ( ĊĠĠĠ Ġprivate Ġval Ġitems : ĠList < Manage Account ViewModel . Additional View Item > Ġ= ĠlistOf () Ċ ) Ġ: ĠRecyclerView . Adapter < RecyclerView . ViewHolder >() Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠRecyclerView . ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠAdditional Info ViewHolder . create ( parent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠRecyclerView . ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Position Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( position Ġ== Ġitems . size Ġ- Ġ 1 ) ĠList Position . Last Ġelse ĠList Position . Middle ĊĠĠĠĠĠĠĠ Ġ( holder Ġas ? ĠAdditional Info ViewHolder )?. bind ( items [ position ], Ġlist Position ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġitems . size ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠAdditional Info ViewHolder ( override Ġval Ġcontainer View : ĠView ) Ġ: ĊĠĠĠ ĠRecyclerView . ViewHolder ( container View ), ĠLayout Container Ġ{ ĊĠĠĠ Ġfun Ġbind ( addition View Item : ĠManage Account ViewModel . Additional View Item , Ġposition : ĠList Position ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġplatform Coin Ġ= Ġaddition View Item . platform Coin ĊĠĠĠĠĠĠĠ Ġicon . set Remote Image ( platform Coin . coin . icon Url , Ġplatform Coin . coin Type . icon Placeholder ) ĊĠĠĠĠĠĠĠ Ġtitle . text Ġ= Ġaddition View Item . title ĊĠĠĠĠĠĠĠ Ġcontainer View . setBackground Resource ( position . get Background ()) ĊĊĠĠĠĠĠĠĠ Ġdecor ated Text Compose . setContent Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCompose App Theme Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠButton Secondary Default ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . padding ( horizontal Ġ= Ġ 1 6 . dp ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġaddition View Item . value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText Helper . copy Text ( addition View Item . value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠH ud Helper . show Success Message ( container View , ĠR . string . Hud _ Text _ Copied ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġcreate ( parent : ĠViewGroup ): ĠAdditional Info ViewHolder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠAdditional Info ViewHolder ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. inflate ( R . layout . view _ holder _ account _ setting _ view , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ