/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 - Present ĠOk ta , ĠInc . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġcom . ok ta . idx . android . direct auth . sdk . forms Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġcom . ok ta . idx . android . direct auth . sdk . Form Ċ import Ġcom . ok ta . idx . android . direct auth . sdk . Form Action Ċ import Ġcom . ok ta . idx . android . direct auth . sdk . util . emit Validation Ċ import Ġcom . ok ta . idx . sdk . api . client . Authenticator Ċ Ċ class ĠRegister Phone Form Ġinternal Ġconstructor ( ĊĠĠĠ Ġval ĠviewModel : ĠViewModel , ĊĠĠĠ Ġprivate Ġval Ġform Action : ĠForm Action , Ċ ) Ġ: ĠForm Ġ{ ĊĠĠĠ Ġclass ĠViewModel Ġinternal Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġvar ĠphoneNumber : ĠString Ġ= Ġ"", ĊĠĠĠĠĠĠĠ Ġval Ġfactor : ĠAuth enticator . Factor , ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġ_ phoneNumber Errors LiveData Ġ= ĠMutable LiveData ("") ĊĠĠĠĠĠĠĠ Ġval ĠphoneNumber Errors LiveData : ĠLive Data < String > Ġ= Ġ_ phoneNumber Errors LiveData ĊĊĠĠĠĠĠĠĠ Ġfun ĠisValid (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ_ phoneNumber Errors LiveData . emit Validation Ġ{ ĠphoneNumber . isNotEmpty () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġregister () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! viewModel . isValid ()) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġform Action . proceed Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġauthentication Wrapper . submit Phone Authenticator ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproceed Context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . phoneNumber , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . factor , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Terminal Transitions ( response )?. let Ġ{ Ġreturn @ proceed Ġit Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠForm Action . Pro ceed Transition . Form Transition ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVerify Code Form ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġform Action Ġ= Ġform Action ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . proceed Context ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsign Out () Ġ{ ĊĠĠĠĠĠĠĠ Ġform Action . sign Out () ĊĠĠĠ Ġ} Ċ } Ċ