package Ġcom . sh z labs . mam op ay . ui . signin Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġcom . had il q . live event . Live Event Ċ import Ġcom . sh z labs . mam op ay . data . DataManager Ċ import Ġcom . sh z labs . mam op ay . data . local . prefs . User Preferences Ċ import Ġcom . sh z labs . mam op ay . data . model . Sample DataModel Ċ import Ġcom . sh z labs . mam op ay . ui . base . Base ViewModel Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠSign In ViewModel Ġ@ Inject Ġconstructor Ġ( val Ġprefs : ĠUser Preferences ) Ġ: ĠBase ViewModel (){ ĊĊĠĠĠ Ġprivate Ġvar Ġentered Pin Ġ= Ġ"" ĊĊĠĠĠ Ġprivate Ġval Ġ_ f irs name Ġ= ĠMutable LiveData < String >() ĊĠĠĠ Ġprivate Ġval Ġ_ on Code Update Ġ= ĠMutable LiveData < String >() ĊĠĠĠ Ġprivate Ġval Ġ_ on Login Success Ġ= ĠMutable LiveData < Boolean >() ĊĊĠĠĠ Ġval ĠfirstName : ĠLive Data < String > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ f irs name ĊĊĠĠĠ Ġval Ġon Code Update : ĠLive Data < String > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ on Code Update ĊĊĠĠĠ Ġval Ġon Login Success : ĠLive Data < Boolean > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ on Login Success ĊĊĠĠĠ Ġfun ĠonCreate () Ġ{ ĊĠĠĠĠĠĠĠ Ġfetch Name () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfetch Name () Ġ{ ĊĠĠĠĠĠĠĠ Ġprefs . get FirstName ()?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ f irs name . value Ġ= Ġit ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Number Press ( num : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( enter ed Pin . length Ġ>= Ġ 4 ) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġentered Pin Ġ+= Ġ"$ num " ĊĠĠĠĠĠĠĠ Ġ_ on Code Update . value Ġ= Ġentered Pin ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠonDelete Press () Ġ{ ĊĠĠĠĠĠĠĠ Ġentered Pin Ġ= Ġentered Pin . drop Last ( 1 ) ĊĠĠĠĠĠĠĠ Ġ_ on Code Update . value Ġ= Ġentered Pin ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġon Number Press Complete () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Pin Ġ= Ġprefs . get Pin Hash () ĊĠĠĠĠĠĠĠ Ġval Ġis Match Ġ= Ġentered Pin Ġ== Ġactual Pin ĊĊĠĠĠĠĠĠĠ Ġ_ on Login Success . value Ġ= Ġis Match ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis Pin Authenticated (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġprefs . get Pin Hash ()?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġit . isNotEmpty () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġbio metric Auth Success ( success : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( success ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprefs . set Bio metric Auth ( true ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ