package Ġcom . coin ninja . coin keeper . view . activity Ċ Ċ import Ġandroid . content .* Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . TextView Ċ import Ġcom . coin ninja . android . helpers . disable Ċ import Ġcom . coin ninja . android . helpers . enable Ċ import Ġcom . coin ninja . android . helpers . g one Ċ import Ġcom . coin ninja . coin keeper . R Ċ import Ġcom . coin ninja . coin keeper . R .* Ċ import Ġcom . coin ninja . coin keeper . cn . wallet . service . CN Service Connection Ċ import Ġcom . coin ninja . coin keeper . ui . base . Base Activity Ċ import Ġcom . coin ninja . coin keeper . util . Drop bit Intent s Ċ import Ġcom . coin ninja . coin keeper . util . analytics . Analytics Ċ import Ġcom . coin ninja . coin keeper . util . android . Service Work Util Ċ import Ġcom . coin ninja . coin keeper . util . crypto . Bitcoin Util Ċ import Ġcom . coin ninja . coin keeper . view . dialog . Generic AlertDialog Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠRe cover Wallet Activity Ġ: ĠBase Activity () Ġ{ ĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġinternal Ġlateinit Ġvar Ġbitcoin Util : ĠBitcoin Util ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġinternal Ġlateinit Ġvar Ġcn Service Connection : ĠCN Service Connection ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġinternal Ġlateinit Ġvar Ġservice Work Util : ĠService Work Util ĊĊĠĠĠ Ġinternal Ġval Ġnext Button : ĠButton Ġget () Ġ= ĠfindViewById ( id . ok ) ĊĠĠĠ Ġinternal Ġval Ġicon : ĠImageView Ġget () Ġ= ĠfindViewById ( id . icon ) ĊĠĠĠ Ġinternal Ġval Ġtitle : ĠTextView Ġget () Ġ= ĠfindViewById ( id . title ) ĊĠĠĠ Ġinternal Ġval Ġmessage : ĠTextView Ġget () Ġ= ĠfindViewById ( id . message ) ĊĠĠĠ Ġinternal Ġval Ġclose Button : ĠView Ġget () Ġ= ĠfindViewById ( id . close ) ĊĠĠĠ Ġinternal Ġval Ġintent Filter Ġ= ĠIntent Filter (). also Ġ{ ĊĠĠĠĠĠĠĠ Ġit . addAction ( Drop bit Intent s . ACTION _ ON _ SERVICE _ CONNECTION _ BOUNDED ) ĊĠĠĠĠĠĠĠ Ġit . addAction ( Drop bit Intent s . ACTION _ SAVE _ RE COVERY _ WORDS ) ĊĠĠĠĠĠĠĠ Ġit . addAction ( Drop bit Intent s . ACTION _ UN ABLE _ TO _ SAVE _ RE COVERY _ WORDS ) ĊĠĠĠĠĠĠĠ Ġit . addAction ( Drop bit Intent s . ACTION _ WAL LET _ AL READY _ UP GR ADED ) ĊĠĠĠĠĠĠĠ Ġit . addAction ( Drop bit Intent s . ACTION _ WAL LET _ REGISTR ATION _ COMPLETE ) ĊĠĠĠĠĠĠĠ Ġit . addAction ( Drop bit Intent s . ACTION _ WAL LET _ REQ UIRES _ UP GR ADE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġvar Ġrecovery Words : ĠArray < String > Ġ= Ġempty Array () ĊĠĠĠ Ġinternal Ġvar Ġreceiver : ĠBroadcast Receiver Ġ= Ġobject Ġ: ĠBroadcast Receiver () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Receive ( context : ĠContext , Ġintent : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDrop bit Intent s . ACTION _ ON _ SERVICE _ CONNECTION _ BOUNDED Ġ== Ġit . action Ġ-> Ġstart Save Recovery Words Service () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDrop bit Intent s . ACTION _ SAVE _ RE COVERY _ WORDS Ġ== Ġit . action Ġ-> Ġshow Success () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDrop bit Intent s . ACTION _ UN ABLE _ TO _ SAVE _ RE COVERY _ WORDS Ġ== Ġit . action Ġ-> Ġshow Fail () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDrop bit Intent s . ACTION _ WAL LET _ REQ UIRES _ UP GR ADE Ġ== Ġit . action Ġ-> Ġshow Upgrade Required () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDrop bit Intent s . ACTION _ WAL LET _ AL READY _ UP GR ADED Ġ== Ġit . action Ġ-> Ġshow Wallet Already Up graded () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDrop bit Intent s . ACTION _ WAL LET _ REGISTR ATION _ COMPLETE Ġ== Ġit . action Ġ-> Ġshow Wallet Registration Complete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( layout . activity _ recover _ wallet ) ĊĠĠĠĠĠĠĠ Ġif Ġ( intent . has Extra ( Drop bit Intent s . EXTRA _ RE COVERY _ WORDS )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecovery Words Ġ= Ġintent . getString Array Extra ( Drop bit Intent s . EXTRA _ RE COVERY _ WORDS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġempty Array () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġservice Work Util . bind To CN Wallet Service ( cn Service Connection ) ĊĠĠĠĠĠĠĠ Ġnext Button . disable () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġif Ġ(! isValid ( recovery Words )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Fail () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister For Local Broadcast () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Save Recovery Words Service () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ Ġun Register For Local Broadcast () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġun bind Service ( cn Service Connection ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcn Service Connection . is Bounded Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġregister For Local Broadcast () Ġ{ ĊĠĠĠĠĠĠĠ Ġlocal Broad Cast Util . register Receiver ( receiver , Ġintent Filter ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart Save Recovery Words Service () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( cn Service Connection . is Bounded ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcn Services Ġ= Ġcn Service Connection . cn Wallet Services Interface ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcn Services ?. save Seed Words ( recovery Words ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġun Register For Local Broadcast () Ġ{ ĊĠĠĠĠĠĠĠ Ġlocal Broad Cast Util . unregister Receiver ( receiver ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġshow Success () Ġ{ ĊĠĠĠĠĠĠĠ Ġclose Button . g one () ĊĠĠĠĠĠĠĠ Ġicon . setImage Resource ( drawable . ic _ restore _ success ) ĊĠĠĠĠĠĠĠ Ġicon . tag Ġ= Ġdrawable . ic _ restore _ success ĊĠĠĠĠĠĠĠ Ġtitle . text Ġ= ĠgetText ( string . recover _ wallet _ success _ title ) ĊĠĠĠĠĠĠĠ Ġnext Button . background Ġ= Ġresources . get Drawable ( drawable . primary _ button ) ĊĠĠĠĠĠĠĠ Ġmessage . setTextColor ( resources . getColor ( color . font _ default )) ĊĠĠĠĠĠĠĠ Ġmessage . setText ( string . recover _ wallet _ success _ message ) ĊĠĠĠĠĠĠĠ Ġnext Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Navigation Util . show Verification Activity ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġnext Button . setText ( string . recover _ wallet _ success _ button _ text ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġshow Fail () Ġ{ ĊĠĠĠĠĠĠĠ Ġtitle . text Ġ= ĠgetText ( string . recover _ wallet _ error _ title ) ĊĠĠĠĠĠĠĠ Ġicon . setImage Resource ( drawable . ic _ restore _ fail ) ĊĠĠĠĠĠĠĠ Ġicon . tag Ġ= Ġdrawable . ic _ restore _ fail ĊĠĠĠĠĠĠĠ Ġnext Button . setText ( string . recover _ wallet _ error _ button _ text ) ĊĠĠĠĠĠĠĠ Ġnext Button . background Ġ= Ġresources . get Drawable ( drawable . error _ button ) ĊĠĠĠĠĠĠĠ Ġnext Button . setOnClickListener Ġ{ Ġv : ĠView ? Ġ-> Ġnavigate To Restore () Ġ} ĊĠĠĠĠĠĠĠ Ġnext Button . enable () ĊĠĠĠĠĠĠĠ Ġval Ġclose : ĠView Ġ= ĠfindViewById ( id . close ) ĊĠĠĠĠĠĠĠ Ġclose . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġclose . setOnClickListener Ġ{ ĠonClose () Ġ} ĊĠĠĠĠĠĠĠ Ġmessage . setText ( string . recover _ wallet _ error _ message ) ĊĠĠĠĠĠĠĠ Ġmessage . setTextColor ( resources . getColor ( color . color _ error )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠonClose () Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity Navigation Util . navigate To Start Activity ( this ) ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġshow Wallet Registration Complete () Ġ{ ĊĠĠĠĠĠĠĠ Ġnext Button . enable () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Wallet Already Up graded () Ġ{ ĊĠĠĠĠĠĠĠ Ġservice Work Util . delete Wallet () ĊĠĠĠĠĠĠĠ Ġval Ġonclick Ġ= ĠDialog Interface . OnClickListener Ġ{ Ġdialog , Ġwhich Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Navigation Util . navigate To Start Activity ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠGeneric AlertDialog . newInstance ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . re covered _ wallet _ already _ up graded ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . ok ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġonclick ĊĠĠĠĠĠĠĠ Ġ). show ( support FragmentManager , Ġdialog Tag ) ĊĠĠĠĠĠĠĠ Ġanalytics . track Event ( Analytics . ENTER ED _ DE ACTIV ATED _ WORDS ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Upgrade Required () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġonclick Ġ= ĠDialog Interface . OnClickListener Ġ{ Ġdialog , Ġwhich Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Navigation Util . navigate To Upgrade To Seg wit ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanalytics . setUser Property ( Analytics . PROPERTY _ LIGHT NING _ UP GR ADE _ FROM _ REST ORE , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠGeneric AlertDialog . newInstance ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . re covered _ wallet _ requires _ upgrade ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . ok ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġonclick ĊĠĠĠĠĠĠĠ Ġ). show ( support FragmentManager , Ġdialog Tag ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġnavigate To Restore () Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity Navigation Util . navigate To Restore Wallet ( this ) ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠisValid ( recovery Words : ĠArray < String >): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġbitcoin Util . isValid B IP 3 9 Words ( recovery Words ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval Ġdialog Tag : ĠString Ġ= Ġ" DIALOG _ TAG " ĊĠĠĠ Ġ} Ċ }