package Ġm ds . mobile . auto h unt . authentication . view Models Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . util . Log Ċ import Ġandroidx . databinding . Observable Field Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġm ds . mobile . auto h unt . Build Config Ċ import Ġm ds . mobile . auto h unt . authentication . data . models . AH Register API Form Ċ import Ġm ds . mobile . auto h unt . authentication . data . repository . AH Auth API Repository Ċ import Ġm ds . mobile . auto h unt . authentication . data . repository . AH Register Validation Repository Ċ import Ġm ds . mobile . auto h unt . global User . AH CurrentUser Ċ import Ġm ds . mobile . auto h unt . global User . AH User Ċ import Ġm ds . mobile . auto h unt . utils . isValid Password Ċ Ċ class ĠA H Register Fragment ViewModel ĊĠĠĠ Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġvar Ġgo To Login : Ġ(() Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠ Ġvar Ġon Register Success : Ġ(() Ġ-> ĠUnit )? Ġ= Ġnull ĊĊĠĠĠ Ġvar Ġemail Ġ= ĠObservable Field ("") ĊĠĠĠ Ġvar Ġname Ġ= ĠObservable Field ("") ĊĠĠĠ Ġvar Ġpassword Ġ= ĠObservable Field ("") ĊĠĠĠ Ġvar Ġconfirm Password Ġ= ĠObservable Field ("") ĊĠĠĠ Ġvar Ġerror Ġ= ĠObservable Field ("") ĊĠĠĠ Ġvar Ġregister Enabled Ġ= ĠObservable Field ( false ) ĊĠĠĠ Ġprivate Ġval Ġvalidation Repository Ġ= ĠA H Register Validation Repository () ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( Build Config . DEBUG ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemail . set (" n bo gd and @ yahoo . com ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname . set (" B og dan ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpassword . set (" password ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfirm Password . set (" password ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġgo To Login () Ġ{ ĊĠĠĠĠĠĠĠ Ġgo To Login ?. invoke () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Register Capability () Ġ{ ĊĠĠĠĠĠĠĠ Ġerror . set ("") ĊĊĠĠĠĠĠĠĠ Ġregister Enabled . set ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemail . get ()?. isNotEmpty () Ġ?: Ġfalse Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpassword . get ()?. isNotBlank () Ġ?: Ġfalse Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname . get ()?. isNotEmpty () Ġ?: Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfire Register User () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġregister Form Ġ= ĠA H Register API Form ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemail Ġ= Ġemail . get () Ġ?: Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġname . get () Ġ?: Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Ġ= Ġpassword . get () Ġ?: Ġ"" ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( password . get () Ġ!= Ġconfirm Password . get ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror . set (" Password s Ġdon 't Ġmatch ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! validation Repository . isValid Form ( register Form )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror . set (" Invalid Ġform . ĠPlease Ġre check ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister Enabled . set ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} Ċ Ċ // ĠĠĠĠĠĠĠ Ġthis ._ register Form . value Ġ= ĠEvent ( register Form ) ĊĠĠĠĠĠĠĠ Ġdo Register ( register Form ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Log Not Tim ber ") ĊĠĠĠ Ġprivate Ġfun Ġdo Register ( ĊĠĠĠĠĠĠĠ Ġregister Form : ĠA H Register API Form ĊĠĠĠ Ġ) Ġ= ĠA H Auth API Repository ĊĠĠĠĠĠĠĠ Ġ. register User ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemail Ġ= Ġregister Form . email , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġregister Form . name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Ġ= Ġregister Form . password ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠ Ġ. subscribe ( Ġ{ Ġuser : ĠA H User ? Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠA H CurrentUser . user Ġ= Ġuser ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Register Success ?. invoke () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ("", Ġ" Register Ġuser Ġsuccess Ġ${ user . toString () }") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror . set ( it . message ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" tag ", Ġ" Register Ġuser Ġfailed : Ġ${ it . message }") ĊĠĠĠĠĠĠĠ Ġ}) Ċ }