package Ġcom . son es o . l umen sh ine . presentation . settings ĊĊ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Providers Ċ import Ġandroidx . navigation . fragment . Nav Host Fragment Ċ import Ġcom . son es o . l umen sh ine . R Ċ import Ġcom . son es o . l umen sh ine . domain . data . ErrorCode s Ċ import Ġcom . son es o . l umen sh ine . networking . dto . exceptions . Server Exception Ċ import Ġcom . son es o . l umen sh ine . presentation . general . Ls Fragment Ċ import Ġcom . son es o . l umen sh ine . util . General Utils Ċ import Ġcom . son es o . l umen sh ine . util . Ls Exception Ċ import Ġcom . son es o . l umen sh ine . util . Resource Ċ import Ġkotlinx . android . synt hetic . main . fragment _ change _ t fa .* Ċ Ċ /** Ċ Ġ* ĠA Ġsimple Ġ[ Fragment ] Ġsubclass . Ċ Ġ*/ Ċ class ĠChange T fa Fragment Ġ: ĠL s Fragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġshould Auto Paste : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠviewModel : ĠChange T fa ViewModel ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġt fa Secret : ĠString ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠViewModel Providers . of ( this , ĠviewModel Factory )[ Change T fa ViewModel :: class . java ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinflater . inflate ( R . layout . fragment _ change _ t fa , Ġcontainer , Ġfalse ) ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġsetup Listeners () ĊĠĠĠĠĠĠĠ Ġsubscribe To LiveData () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġval Ġtext From Clipboard : ĠString Ġ= ĠGeneral Utils . paste From Clipboard ( context !! ) ĊĠĠĠĠĠĠĠ Ġif Ġ( should Auto Paste Ġ&& Ġtext From Clipboard . toInt OrNull () Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt fa Input View . trimmed Text Ġ= Ġtext From Clipboard ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt fa Input View . setSelection ( text From Clipboard . length ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ Ġshould Auto Paste Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Listeners () Ġ{ ĊĠĠĠĠĠĠĠ Ġpass Input . setOn Editor ActionListener Ġ{ Ġattempt T fa Change () Ġ} ĊĠĠĠĠĠĠĠ Ġpass Next Button . setOnClickListener Ġ{ Ġattempt T fa Change () Ġ} ĊĠĠĠĠĠĠĠ Ġcopy Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Snackbar ( R . string . copied _ to _ clipboard ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext ?. let Ġ{ Ġit 1 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGeneral Utils . copy To Clipboard ( it 1 , Ġt fa Secret ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġt fa Cancel Button . setOnClickListener Ġ{ Ġview Flip per . display ed Child Ġ= Ġview Flip per . indexOf Child ( pass Step Layout ) Ġ} ĊĠĠĠĠĠĠĠ Ġt fa Input View . setOn Editor ActionListener Ġ{ Ġattempt Confirm T fa () Ġ} ĊĠĠĠĠĠĠĠ Ġt fa Next Button . setOnClickListener Ġ{ Ġattempt Confirm T fa () Ġ} ĊĠĠĠĠĠĠĠ Ġdone Button . setOnClickListener Ġ{ ĠNav Host Fragment . find Nav Controller ( this ). navigate Up () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġattempt T fa Change () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( pass Input . isValid Password ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . change T fa ( pass Input . trimmed Text ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġattempt Confirm T fa () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( t fa Input View . has Valid Input ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . confirm T fa ( t fa Secret , Ġt fa Input View . trimmed Text ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsubscribe To LiveData () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . live T fa Secret . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrender T fa Secret ( it Ġ?: Ġreturn @ Observer ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ ĠviewModel . live T fa Confirmation . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrender T fa Confirmation ( it Ġ?: Ġreturn @ Observer ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrender T fa Secret ( resource : ĠResource < String , ĠL s Exception >) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( resource . state ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResource . LOADING Ġ-> Ġshow Loading View ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResource . FAILURE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Loading View ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Pass Error ( resource . failure ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResource . SUCCESS Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Loading View ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt fa Secret Ġ= Ġresource . success () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt fa Secret View . text Ġ= ĠgetString ( R . string . lbl _ t fa _ secret , Ġresource . success ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt fa Input View . trimmed Text Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Flip per . display ed Child Ġ= Ġview Flip per . indexOf Child ( t fa Secret Step Layout ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Pass Error ( failure : ĠL s Exception ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( failure Ġis ĠServer Exception Ġ&& Ġfailure . code Ġ== ĠError Codes . LOGIN _ WRONG _ PASSWORD ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpass Input . error Ġ= ĠgetString ( R . string . login _ password _ wrong ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Error Snackbar ( failure ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrender T fa Confirmation ( resource : ĠResource < Unit , ĠL s Exception >) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( resource . state ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResource . LOADING Ġ-> Ġshow Loading View ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResource . FAILURE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Loading View ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle T fa Error ( resource . failure ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResource . SUCCESS Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Loading View ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Flip per . display ed Child Ġ= Ġview Flip per . indexOf Child ( success Layout ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle T fa Error ( failure : ĠL s Exception ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( failure Ġis ĠServer Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt fa Input View . error Ġ= Ġfailure . display Message ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Error Snackbar ( failure ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ