package Ġio . horizontal systems . bank wallet . modules . restore . words Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . text .* Ċ import Ġandroid . text . style . ForegroundColor Span Ċ import Ġandroid . view .* Ċ import Ġandroidx . core . os . bundle Of Ċ import Ġandroidx . core . view . isVisible Ċ import Ġandroidx . fragment . app . set Fragment Result Ċ 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 . core . utils . Utils Ċ import Ġio . horizontal systems . bank wallet . modules . restore . Restore Fragment Ċ import Ġio . horizontal systems . bank wallet . modules . restore . words . Restore Words Module . Restore Account Type Ċ import Ġio . horizontal systems . bank wallet . modules . restore . words . Restore Words Service . Restore Words Exception Ċ import Ġio . horizontal systems . core . Core App Ċ import Ġio . horizontal systems . core . find Nav Controller Ċ import Ġio . horizontal systems . core . helpers . Hud Helper Ċ import Ġio . horizontal systems . core . helpers . Keyboard Helper Ċ import Ġkotlinx . android . synt hetic . main . fragment _ add _ token .* Ċ import Ġkotlinx . android . synt hetic . main . fragment _ restore _ words .* Ċ import Ġkotlinx . android . synt hetic . main . fragment _ restore _ words . toolbar Ċ import Ġkotlinx . android . synt hetic . main . view _ input _ address . view .* Ċ Ċ class ĠRestore Words Fragment Ġ: ĠBase Fragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠviewModel : ĠRestore Words ViewModel ĊĊĠĠĠ Ġprivate Ġval Ġtext Watcher Ġ= Ġobject Ġ: ĠText Watcher Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( s : ĠEdit able ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( s . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . on Text Change ( s . toString (), Ġwords Input . selection Start ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbefore TextChanged ( s : ĠCharSequence ?, Ġstart : ĠInt , Ġcount : ĠInt , Ġafter : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Using Native Keyboard () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon TextChanged ( s : ĠCharSequence ?, Ġstart : ĠInt , Ġbefore : ĠInt , Ġcount : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ restore _ words , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġtoolbar . set Navigation OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). pop Back Stack () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtoolbar . setOn MenuItem ClickListener Ġ{ Ġitem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu Restore Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . on Pro ceed ( additional Info . input . text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġwords Count Ġ= Ġarguments ?. get Parcelable < Restore Account Type >( restore Account Type Key ) Ġ?: Ġthrow ĠException (" Invalid Ġrestore Ġaccount Ġtype ") ĊĠĠĠĠĠĠĠ Ġval Ġaccount Type Title Res Ġ= Ġarguments ?. getInt ( title Key ) Ġ?: Ġthrow ĠException (" Invalid Ġtitle ") ĊĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠViewModel Provider ( this , ĠRestore Words Module . Factory ( words Count )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get ( Restore Words ViewModel :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġdescription . text Ġ= ĠgetString ( R . string . Restore _ Enter _ Key _ Description _ Mnemonic , ĠgetString ( account Type Title Res ), ĠviewModel . word Count . toString ()) ĊĠĠĠĠĠĠĠ Ġadditional Info . isVisible Ġ= ĠviewModel . birthday Height Enabled ĊĠĠĠĠĠĠĠ Ġadditional Info . on Paste Text Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadditional Info . setText ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbind Listeners () ĊĠĠĠĠĠĠĠ Ġobserve Events () ĊĊĠĠĠĠĠĠĠ Ġactivity ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyboard Helper . show Keyboard Delayed ( it , Ġwords Input , Ġ 2 0 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġobserve Events () Ġ{ ĊĊĠĠĠĠĠĠĠ ĠviewModel . account Type Live Event . observe ( view Lifecycle Owner , ĠObserver Ġ{ Ġaccount Type Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide Keyboard () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Fragment Result ( Restore Fragment . account Type Request Key , Ġbundle Of ( Restore Fragment . account Type Bundle Key Ġto Ġaccount Type )) ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ ĠviewModel . invalid Ranges . observe ( view Lifecycle Owner , ĠObserver Ġ{ Ġinvalid Ranges Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwords Input . remove TextChanged Listener ( text Watcher ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcursor Ġ= Ġwords Input . selection Start ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsp ann able String Ġ= ĠSp ann able String ( words Input . text . toString ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalid Ranges . forEach Ġ{ Ġrange Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsp ann able Color Span Ġ= ĠFore ground Color Span ( require Context (). getColor ( R . color . luc ian )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( range . last Ġ< Ġwords Input . text . length ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsp ann able String . set Span ( span nable Color Span , Ġrange . first , Ġrange . last Ġ+ Ġ 1 , ĠSp ann able . SPAN _ EXCL USIVE _ EXCL USIVE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwords Input . setText ( span nable String ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwords Input . setSelection ( cursor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwords Input . add TextChanged Listener ( text Watcher ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ ĠviewModel . error LiveData . observe ( view Lifecycle Owner , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠerrorMessage Ġ= Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠRestore Words Exception . Invalid Birth day Height Exception Ġ-> ĠgetString ( R . string . Restore _ Birth day Height _ Invalid Error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠRestore Words Exception . Invalid Word Count Exception Ġ-> ĠgetString ( R . string . Restore _ Invalid Word Count , Ġit . count , Ġit . required Count ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠRestore Words Exception . Checksum Exception Ġ-> ĠgetString ( R . string . Restore _ Invalid Checksum ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠgetString ( R . string . Restore _ Validation Failed ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠH ud Helper . show ErrorMessage ( this . require View (), ĠerrorMessage ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Click ableView Accessibility ") ĊĠĠĠ Ġprivate Ġfun Ġbind Listeners () Ġ{ ĊĠĠĠĠĠĠĠ Ġwords Input . add TextChanged Listener ( text Watcher ) ĊĊĠĠĠĠĠĠĠ Ġ// fixes Ġscrolling Ġin ĠEditText Ġwhen Ġit 's Ġinside ĠNested ScrollView ĊĠĠĠĠĠĠĠ Ġwords Input . setOn Touch Listener Ġ{ Ġv , Ġevent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( words Input . has Focus ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . parent . request Dis allow Intercept Touch Event ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( event . action Ġand ĠMotion Event . ACTION _ MASK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ SCROLL Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . parent . request Dis allow Intercept Touch Event ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOn Touch Listener Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOn Touch Listener Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Using Native Keyboard (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Utils . is Using Custom Keyboard ( require Context ()) Ġ&& Ġ! Core App . third Keyboard Storage . is Third Party Keyboard Allowed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Custom Keyboard Alert () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval Ġrestore Account Type Key Ġ= Ġ" restore Account Type Key " ĊĠĠĠĠĠĠĠ Ġconst Ġval Ġtitle Key Ġ= Ġ" title Key " ĊĊĠĠĠĠĠĠĠ Ġfun Ġinstance ( restore Account Type : ĠRestore Account Type , Ġtitle Res : ĠInt ): ĠRestore Words Fragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠRestore Words Fragment (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarguments Ġ= ĠBundle ( 2 ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Parcelable ( restore Account Type Key , Ġrestore Account Type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Int ( title Key , Ġtitle Res ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ