package Ġcom . block eq . stell ar wallet . activities Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . ImageView Ċ import Ġcom . block eq . stell ar wallet . R Ċ import Ġcom . block eq . stell ar wallet . Wallet Application Ċ import Ġcom . block eq . stell ar wallet . helpers . Pass phrase Dialog Helper Ċ import Ġcom . block eq . stell ar wallet . models . Mnemonic Type Ċ import Ġcom . block eq . stell ar wallet . utils . Global Graph Helper Ċ import Ġcom . google . zx ing . Barcode Format Ċ import Ġcom . jo urney apps . barcode scanner . Barcode Encoder Ċ import Ġcom . son es o . stell arm n emon ics . Wallet Ċ import Ġkotlinx . android . synt hetic . main . activity _ mn emonic .* Ċ Ċ class ĠM n emonic Activity Ġ: ĠBase Activity (), ĠView . OnClickListener Ġ{ ĊĠĠĠ Ġprivate Ġval ĠCREATE _ WAL LET _ REQUEST Ġ= Ġ 0 x 0 1 ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠM NE MON IC _ PH R ASE Ġ= Ġ" M NE MON IC _ PH R ASE " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠPASS _ PH R ASE Ġ= Ġ" PASS _ PH R ASE " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠW AL LET _ LENGTH Ġ= Ġ" WAL LET _ LENGTH " ĊĊĠĠĠĠĠĠĠ Ġfun Ġnew Create Mnemonic Intent ( context : ĠContext , Ġtype Ġ: ĠM n emonic Type ): ĠIntent Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠM n emonic Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( WAL LET _ LENGTH , Ġtype ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġintent ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġnew Display Mnemonic Intent ( context : ĠContext , Ġmnemonic : ĠString , Ġpassphrase Ġ: ĠString ?): ĠIntent Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠM n emonic Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( Mnemonic Activity . M NE MON IC _ PH R ASE , Ġmnemonic ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( Mnemonic Activity . PASS _ PH R ASE , Ġpassphrase ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġintent ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġmnemonic String Ġ: ĠString Ġ= ĠString () ĊĠĠĠ Ġprivate Ġvar Ġpassphrase To Create Ġ: ĠString Ġ= ĠString () ĊĠĠĠ Ġprivate Ġvar Ġpassphrase To Display Ġ: ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġwallet Length Ġ: ĠM n emonic Type Ġ= ĠM n emonic Type . WORD _ 1 2 ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ mn emonic ) ĊĊĠĠĠĠĠĠĠ Ġload Intent () ĊĠĠĠĠĠĠĠ Ġsetup UI () ĊĠĠĠĠĠĠĠ Ġset OnClick Listeners () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== ĠCREATE _ WAL LET _ REQUEST ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Code Ġ== ĠActivity . RESULT _ OK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGlobal Graph Helper . launch Wallet ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// region ĠUser ĠInterface ĊĠĠĠ Ġoverride Ġfun ĠonClick ( v : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠitemId Ġ= Ġv . id ĊĠĠĠĠĠĠĠ Ġwhen Ġ( itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . confirm Button Ġ-> ĠstartActivity For Result ( Wallet Manager Activity . create Wallet ( v . context , Ġmnemonic String , Ġpassphrase To Create ), ĠCREATE _ WAL LET _ REQUEST ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . pass phrase Button Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠPass phrase Dialog Helper ( this , Ġobject : ĠPass phrase Dialog Helper . Pass phrase Dialog Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon OK ( phrase : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpassphrase To Create Ġ= Ġphrase ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpassphrase Button . text Ġ= ĠgetString ( R . string . pass phrase _ applied ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup UI () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! mn emonic String . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠShow Ġch ips ĠUI ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfirm Button . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpassphrase Button . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenerate QR Code ( mn emonic String , Ġqr ImageView , Ġ 5 0 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! Wallet Application . wallet . getIs Recovery Phrase ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwarning Phrase TextView . text Ġ= ĠgetString ( R . string . no _ mn emonic _ set ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmnemonic View . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCreate Ġch ips ĠUI ĊĠĠĠĠĠĠĠĠĠĠĠ Ġqr Layout . visibility Ġ= ĠView . GONE ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO : ĠProblem Ġlinked Ġto Ġsetting Ġis Recovery Phrase Ġbefore Ġit Ġis Ġconfirmed Ġin ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRecovery Wallet Activity . kt Ġfor Ġa Ġsecret Ġseed , Ġso Ġthat Ġneeds Ġto Ġbe Ġref actored Ġto ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġafter Ġthe Ġaccount Ġis Ġcreated Ġin ĠPin Activity . kt ĊĠĠĠĠĠĠĠĠĠĠĠ ĠWallet Application . wallet . getIs Recovery Phrase () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsetup ActionBar () ĊĠĠĠĠĠĠĠ Ġsetup Mnemonic View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup ActionBar () Ġ{ ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( tool Bar ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. set Display Home As Up Enabled ( true ) ĊĠĠĠĠĠĠĠ Ġtool Bar . set Navigation OnClickListener Ġ{ Ġon Back Pressed () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Mnemonic View () Ġ{ ĊĠĠĠĠĠĠĠ Ġmnemonic View . load Chips ( get Mnemonic ()) ĊĠĠĠĠĠĠĠ Ġpassphrase To Display ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpassphrase View . load Chips ( array ListOf ( it ), Ġarray ListOf (" pass Phrase ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// endregion ĊĊĠĠĠ Ġ// region ĠSet ĠonClick Ġinterfaces ĊĠĠĠ Ġprivate Ġfun Ġset OnClick Listeners () Ġ{ ĊĠĠĠĠĠĠĠ Ġconfirm Button . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġpassphrase Button . setOnClickListener ( this ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// endregion ĊĊĠĠĠ Ġ// region ĠHelper Ġfunctions ĊĠĠĠ Ġprivate Ġfun Ġget Mnemonic (): ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( mn emonic String . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmnemonic Ġ= Ġif ( wallet Length Ġ== ĠM n emonic Type . WORD _ 1 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWallet . generate 1 2 Word Mnemonic () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWallet . generate 2 4 Word Mnemonic () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmnemonic String Ġ= ĠString ( mn emonic ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġget Mnemonic List ( mn emonic String ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Intent () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! intent . has Extra ( M NE MON IC _ PH R ASE ) Ġ&& Ġ! intent . has Extra ( WAL LET _ LENGTH )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" in consistent Ġintent Ġextras , Ġplease Ġuse Ġcompanion Ġmethods Ġto Ġcreate Ġthe Ġintent ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( intent . has Extra ( M NE MON IC _ PH R ASE )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmnemonic String Ġ= Ġintent . getString Extra ( M NE MON IC _ PH R ASE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( intent . has Extra ( WAL LET _ LENGTH )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwallet Length Ġ= Ġintent . get Serializable Extra ( WAL LET _ LENGTH ) Ġas ĠM n emonic Type ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( intent . has Extra ( PASS _ PH R ASE )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠ Ġpassphrase To Display Ġ= Ġintent . getString Extra ( PASS _ PH R ASE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Mnemonic List ( mn emonic Ġ: ĠString ) Ġ: ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmnemonic . split (" Ġ". to Regex ()). drop Last While Ġ{ Ġit . isEmpty () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgenerate QR Code ( data : ĠString , ĠimageView : ĠImageView , Ġsize : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbarcode Encoder Ġ= ĠBar code Encoder () ĊĠĠĠĠĠĠĠ Ġval Ġbitmap Ġ= Ġbarcode Encoder . encode Bitmap ( data , ĠBar code Format . QR _ CODE , Ġsize , Ġsize ) ĊĠĠĠĠĠĠĠ ĠimageView . setImage Bitmap ( bitmap ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// endregion Ċ }