package Ġcom . af ric abl ue . aws app . ui . auth Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . Gravity Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . ProgressBar Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġcom . af ric abl ue . aws app . R Ċ import Ġcom . af ric abl ue . aws app . auth providers . Auth Status Ċ import Ġcom . af ric abl ue . aws app . util . APP _ TAG Ċ import Ġcom . af ric abl ue . aws app . util . get ViewModel Factory For Auth Repo Ċ import Ġcom . google . android . material . text field . TextInput Layout Ċ import Ġkotlinx . android . synt hetic . main . auth _ signup .* ĊĊ Ċ class ĠSign up Fragment Ġ: ĠFragment () Ġ, ĠFlow Dialog . Verify Code Dialog Listener { ĊĊĠĠĠ Ġval Ġm Log Tag Ġ= ĠAPP _ TAG Ġ+ Ġthis :: class . java . simple Name ĊĠĠĠ Ġval ĠviewModel : ĠSign up ViewModel Ġby Ġview Models { ĊĠĠĠĠĠĠĠ Ġget ViewModel Factory For Auth Repo () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġroot Ġ= Ġinflater . inflate ( R . layout . auth _ signup , Ġcontainer , Ġfalse ) ĊĊĠĠĠĠĠĠĠ ĠviewModel . auth Status . observe ( view Lifecycle Owner , ĠObserver { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( Ġit Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAuth Status . SIGNED _ UP _ WAIT _ FOR _ CODE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠFlow Dialog ( it , Ġthis @ Signup Fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . show ( child FragmentManager , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAuth Status . SIGNED _ UP , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAuth Status . SIGNED _ IN Ġ-> { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnav Controller Ġ= Ġfind Nav Controller () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnav Controller . pop Back Stack () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ ĠviewModel . is Busy . observe ( view Lifecycle Owner , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( it Ġ!= Ġnull Ġ&& Ġit Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// TODO Ġrefactor Ġas Ġa Ġtoggle . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot . findViewById < Button >( R . id . button Signup ). isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot . findViewById < TextInput Layout >( R . id . edit UserName ). isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot . findViewById < TextInput Layout >( R . id . edit Email ). isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot . findViewById < TextInput Layout >( R . id . edit Password ). isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot . findViewById < ProgressBar >( R . id . progress Bar ). visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( it Ġ!= Ġnull Ġ&& Ġit Ġ== Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot . findViewById < Button >( R . id . button Signup ). isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot . findViewById < TextInput Layout >( R . id . edit UserName ). isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot . findViewById < TextInput Layout >( R . id . edit Email ). isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot . findViewById < TextInput Layout >( R . id . edit Password ). isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot . findViewById < ProgressBar >( R . id . progress Bar ). visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ ĠviewModel . feedback . observe ( view Lifecycle Owner , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoast Ġ= ĠToast . makeText ( getActivity ()?. getApplicationContext (), Ġit , ĠToast . LENGTH _ LONG ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoast . set Gravity ( Gravity . TOP , Ġ 8 , Ġ 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoast . show () ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġroot . findViewById < Button >( R . id . button Signup ). apply { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset OnClickListener { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . signup ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit UserName . edit Text ?. text . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit Email . edit Text ?. text . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit Password . edit Text ?. text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġroot ĊĠĠĠ Ġ} ĊĠĠĠ Ġoverride Ġfun Ġon Dialog Positive Click ( for Auth Status : ĠAuth Status , Ġcode : ĠString , Ġpassword : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen ( for Auth Status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAuth Status . SIGNED _ UP _ WAIT _ FOR _ CODE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . confirm Signup ( code ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Dialog Negative Click () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnav Controller Ġ= Ġfind Nav Controller () ĊĠĠĠĠĠĠĠ Ġnav Controller . pop Back Stack () ĊĠĠĠ Ġ} Ċ }