package Ġcom . web as yst . x . auth Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . tele phony . PhoneNumber Formatting Text Watcher Ċ import Ġandroid . text . Editable Ċ import Ġandroid . text . Text Watcher Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġcom . web as yst . x . auth . databinding . Frag SignIn Phone Binding Ċ Ċ class ĠPhone Input Fragment Ġ: ĠFragment ( R . layout . frag _ sign _ in _ phone ) Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠF rag SignIn Phone Binding ĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠSign In ViewModel Ġby Ġlazy ( Lazy Thread Safety Mode . NONE ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġactivity Ġ= Ġrequire Activity () ĊĠĠĠĠĠĠĠ ĠViewModel Provider ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Activity (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSign In ViewModel . Factory ( activity Ġas ĠSign In ViewModel . Navigator , Ġactivity . application ) ĊĠĠĠĠĠĠĠ Ġ). get ( SignIn ViewModel :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠF rag SignIn Phone Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġbinding . lifecycle Owner Ġ= Ġview Lifecycle Owner ĊĠĠĠĠĠĠĠ Ġbinding . viewModel Ġ= ĠviewModel ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġval Ġphone Text Watcher Ġ= ĠPhone Text Watcher () ĊĠĠĠĠĠĠĠ Ġbinding . phone Input . add TextChanged Listener ( phone Text Watcher ) ĊĠĠĠĠĠĠĠ Ġbinding . toolbar . set Navigation OnClickListener ( viewModel :: navigate Back From Phone Input ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠPhone Text Watcher Ġ: ĠText Watcher Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġformatter Ġ= ĠPhone Number Formatting Text Watcher () ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbefore TextChanged ( s : ĠCharSequence , Ġstart : ĠInt , Ġcount : ĠInt , Ġafter : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġformatter . before TextChanged ( s , Ġstart , Ġcount , Ġafter ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon TextChanged ( s : ĠCharSequence , Ġstart : ĠInt , Ġbefore : ĠInt , Ġcount : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġformatter . on TextChanged ( s , Ġstart , Ġbefore , Ġcount ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( s : ĠEdit able ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstr Ġ= Ġs . trim () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! str . startsWith ("+ ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs . insert ( 0 , Ġ"+ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġformatter . after TextChanged ( s ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ