package Ġcom . w ur uo ye . know . ui . setting . vm Ċ Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Looper Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġcom . w ur uo ye . know . util . Net Util Ċ import Ġcom . w ur uo ye . know . util . model . App Cache Ċ import Ġcom . w ur uo ye . know . util . model . beans . Net Result Ċ import Ġkotlinx . coroutines . Global Scope Ċ import Ġkotlinx . coroutines . launch Ċ import Ġjava . util . regex . Pattern Ċ Ċ /** Ċ Ġ* ĠCreated Ġat Ġ 2 0 1 9 - 0 4 - 2 3 Ġ 2 0 : 1 3 Ġby Ġwur uo ye Ċ Ġ* ĠDescription : Ċ Ġ*/ Ċ class ĠUser Login ViewModel ( ĊĠĠĠ Ġprivate Ġval Ġcache : ĠApp Cache Ċ ) Ġ: ĠViewModel (), ĠI User Login VM Ġ{ ĊĠĠĠ Ġoverride Ġval Ġlogin Result : ĠMutable LiveData < Net Result > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMutable LiveData () ĊĊĠĠĠ Ġoverride Ġval Ġregister Result : ĠMutable LiveData < Net Result > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMutable LiveData () ĊĊĠĠĠ Ġoverride Ġval Ġverify Code Result : ĠMutable LiveData < Net Result > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMutable LiveData () ĊĊĠĠĠ Ġoverride Ġval Ġleft Second : ĠMutable LiveData < Int > Ġ= ĊĠĠĠĠĠĠĠ ĠMutable LiveData () ĊĊĠĠĠ Ġprivate Ġval Ġm Handler Ġ= ĠHandler ( Looper . get Main Looper ()) ĊĊĠĠĠ Ġoverride Ġfun Ġlogin ( id : ĠString , Ġpwd : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠGlobal Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalues Ġ= Ġmap Of ( Pair (" id ", Ġid ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" pwd ", Ġpwd )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠNet Util . get ( Net Util . LOGIN , Ġvalues ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result . successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogin Success ( id , Ġpwd ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogin Result . post Value ( result ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġregister ( id : ĠString , Ġname : ĠString , Ġpwd : ĠString , Ġphone : ĠString , Ġcode : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠGlobal Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalues Ġ= Ġmap Of ( Pair (" id ", Ġid ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" name ", Ġname ), ĠPair (" pwd ", Ġpwd ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" phone ", Ġphone ), ĠPair (" code ", Ġcode ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠNet Util . post ( Net Util . USER , Ġvalues ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result . successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogin Success ( id , Ġpwd ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister Result . post Value ( result ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġverify Code ( phone : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠGlobal Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcheck Ġ= Ġcheck Phone ( phone ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( check ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalues Ġ= Ġmap Of ( Pair (" phone ", Ġphone )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠNet Util . get ( Net Util . VERIFY _ CODE , Ġvalues ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result . successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft Second . post Value ( 6 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify Code Result . post Value ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify Code Result . post Value ( Net Result ( 4 0 0 , Ġ" æīĭæľº åı· è¾ĵåħ¥ éĶĻè¯¯ ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcount () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Handler . post Delayed ({ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġleft Ġ= Ġleft Second . value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( left Ġis ĠInt Ġ&& Ġleft Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft Second . value Ġ= Ġleft Ġ- Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, Ġ 1 0 0 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck Phone ( phone : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( phone . length Ġ!= Ġ 1 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġregex Ġ= Ġ"^ (( 1 3 [ 0 - 9 ]) |( 1 4 [ 5 , 7 , 9 ]) |( 1 5 ([ 0 - 3 ] |[ 5 - 9 ])) |( 1 6 6 )| ( 1 7 [ 0 , 1 , 3 , 5 , 6 , 7 , 8 ]) " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" |( 1 8 [ 0 - 9 ]) |( 1 9 [ 8 | 9 ])) \\ d { 8 }$ " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġp Ġ= ĠPattern . compile ( regex ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Ġ= Ġp . matcher ( phone ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm . matches () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġlogin Success ( id : ĠString , Ġpwd : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcache . user Login Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġcache . userId Ġ= Ġid ĊĠĠĠĠĠĠĠ Ġcache . user Pwd Ġ= Ġpwd ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġclass ĠFactory ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcache : ĠApp Cache ĊĠĠĠ Ġ) Ġ: ĠViewModel Provider . New Instance Factory () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġ< T Ġ: ĠViewModel ?> Ġcreate ( model Class : ĠClass < T >): ĠT Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠUser Login ViewModel ( cache ) Ġas ĠT ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġs Instance : ĠUser Login ViewModel ? Ġ= Ġnull ĊĠĠĠ Ġ} Ċ }