package Ġcom . radix d lt . android . apps . pos . ui . settings . fragment Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . core . view . do On Layout Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . lifecycle Scope Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġandroidx . navigation . fragment . nav Args Ċ import Ġcom . radix d lt . android . apps . pos . R Ċ import Ġcom . radix d lt . android . apps . pos . util . SETTINGS _ UNLOCK Ċ import Ġcom . radix d lt . android . apps . pos . util . SETTINGS _ UPDATE Ċ import Ġcom . radix d lt . android . apps . pos . util . SETTINGS _ UPDATE _ IN VOICE _ NAME Ċ import Ġcom . radix d lt . android . apps . pos . util . SETTINGS _ UPDATE _ PAYMENT _ ADDRESS Ċ import Ġcom . radix d lt . android . apps . pos . util . Settings Pin Action Ċ import Ġcom . radix d lt . android . apps . pos . util . Vault Preferences Ċ import Ġcom . radix d lt . android . apps . pos . util . replace With A ster isk Ċ import Ġkotlinx . android . synt hetic . main . fragment _ settings _ pin .* Ċ import Ġkotlinx . coroutines . delay Ċ import Ġkotlinx . coroutines . launch Ċ Ċ class ĠSettings Pin Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġargs : ĠSettings Pin Fragment Args Ġby Ġnav Args () ĊĠĠĠ Ġprivate Ġval Ġstate : ĠInt Ġby Ġlazy Ġ{ Ġargs . state Ġ} ĊĠĠĠ Ġprivate Ġval Ġpayment Address : ĠString Ġby Ġlazy Ġ{ Ġargs . payment Address Ġ?: Ġ"" Ġ} ĊĠĠĠ Ġprivate Ġval Ġinvoice Name : ĠString Ġby Ġlazy Ġ{ Ġargs . invoice Name Ġ?: Ġ"" Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġpin Set : ĠString Ġ= ĠVault Preferences . get Vault PIN () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ= Ġinflater . inflate ( R . layout . fragment _ settings _ pin , Ġcontainer , Ġfalse ) ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġset On Layout ChangeListener ( view ) ĊĠĠĠĠĠĠĠ Ġset On Key pad Text ChangeListener () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset On Layout ChangeListener ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview . do On Layout Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparams Ġ= Ġsettings Pin Pin TextView . layout Params Ġas ĠViewGroup . LayoutParams ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams . width Ġ= Ġsettings Pin Pin Disabled TextView . width ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsettings Pin Pin TextView . layout Params Ġ= Ġparams ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset On Key pad Text ChangeListener () Ġ{ ĊĠĠĠĠĠĠĠ Ġsettings Pin Key pad . setOn Text ChangeListener Ġ{ Ġpin : ĠString , Ġ_: ĠInt Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide ErrorMessage If Visible () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhidden Pin Ġ= Ġpin . replace Range ( 0 , Ġpin . length , Ġreplace With A ster isk ( pin )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsettings Pin Pin TextView . text Ġ= Ġhidden Pin ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( pin . length Ġ== Ġ 4 Ġ&& Ġstate Ġ== ĠSET T INGS _ UNLOCK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalidate Pin Matches Master Pin ( pin , ĠSET T INGS _ UNLOCK ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( pin . length Ġ== Ġ 4 Ġ&& Ġstate Ġ== ĠSET T INGS _ UPDATE Ġ&& Ġpayment Address . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalidate Pin Matches Master Pin ( pin , ĠSET T INGS _ UPDATE _ PAYMENT _ ADDRESS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( pin . length Ġ== Ġ 4 Ġ&& Ġstate Ġ== ĠSET T INGS _ UPDATE Ġ&& Ġinvoice Name . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalidate Pin Matches Master Pin ( pin , ĠSET T INGS _ UPDATE _ IN VOICE _ NAME ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhide ErrorMessage If Visible () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( settings Pin Pin Error TextView . visibility Ġ== ĠView . VISIBLE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsettings Pin Pin Error TextView . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠisValid Pin ( pin : ĠString ) Ġ= Ġpin Ġ== Ġpin Set ĊĊĠĠĠ Ġprivate Ġfun Ġunlock Settings () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaction Ġ= ĠSettings Pin Fragment Directions . action Navigation Settings Pin To Navigation Settings () ĊĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( action ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġvalidate Pin Matches Master Pin ( pin : ĠString , Ġ@ Settings Pin Action Ġaction : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( isValid Pin ( pin )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Settings ( action ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay Incorrect Pin Message () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Settings (@ Settings Pin Action Ġpin State : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( pin State ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSET T INGS _ UNLOCK Ġ-> Ġunlock Settings () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSET T INGS _ UPDATE _ PAYMENT _ ADDRESS Ġ-> Ġupdate Payment Address () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSET T INGS _ UPDATE _ IN VOICE _ NAME Ġ-> Ġupdate Invoice Name () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Payment Address () Ġ{ ĊĠĠĠĠĠĠĠ ĠVault Preferences . set Vault Payment Address ( payment Address ) ĊĠĠĠĠĠĠĠ Ġnavigate To Settings Updated () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Invoice Name () Ġ{ ĊĠĠĠĠĠĠĠ ĠVault Preferences . set Vault Invoice Name ( invoice Name ) ĊĠĠĠĠĠĠĠ Ġnavigate To Settings Updated () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġnavigate To Settings Updated () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaction Ġ= ĠSettings Pin Fragment Directions . action Navigation Settings Pin To Navigation Settings Updated () ĊĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( action ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdisplay Incorrect Pin Message () Ġ{ ĊĠĠĠĠĠĠĠ Ġsettings Pin Pin Error TextView . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġsettings Pin Pin Error TextView . text Ġ= ĠgetString ( R . string . settings _ pin _ fragment _ incorrect _ pin ) ĊĠĠĠĠĠĠĠ Ġclear Pin With Delay () ĊĠĠĠĠĠĠĠ Ġsettings Pin Key pad . clear Digits () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġclear Pin With Delay () Ġ{ ĊĠĠĠĠĠĠĠ Ġlifecycle Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsettings Pin Pin TextView . text Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ