package Ġcom . pj 1 0 9 . xk ore y . pj os . ui . login Ċ Ċ import Ġandroid . net . Uri Ċ import Ġandroid . view . View Ċ import Ġandroidx . databinding . Observable Field Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġcom . awesome dialog . bl enn ers il va . awesome dialog library . Awesome Error Dialog Ċ import Ġcom . pj 1 0 9 . xk ore y . model . data . Dialog Type Ċ import Ġcom . pj 1 0 9 . xk ore y . model . data . Response Ċ import Ġcom . pj 1 0 9 . xk ore y . model . enums . Event M thod Ċ import Ġcom . pj 1 0 9 . xk ore y . model . enums . HttpMethod Ċ import Ġcom . pj 1 0 9 . xk ore y . pj os . R Ċ import Ġcom . pj 1 0 9 . xk ore y . share . Build Config Ċ import Ġcom . pj 1 0 9 . xk ore y . share . domain . digit . Number Subtract UseCase Ċ import Ġcom . pj 1 0 9 . xk ore y . share . domain . http . Captcha Check UseCase Ċ import Ġcom . pj 1 0 9 . xk ore y . share . domain . http . Register UseCase Ċ import Ġcom . pj 1 0 9 . xk ore y . share . domain . prefs . Function Key Set UseCase Ċ import Ġcom . pj 1 0 9 . xk ore y . share . domain . room . Config Query UseCase Ċ import Ġcom . pj 1 0 9 . xk ore y . share . domain . room . Config Set UseCase Ċ import Ġcom . pj 1 0 9 . xk ore y . share . domain . signin . Ob serve User Setting UseCase Ċ import Ġcom . pj 1 0 9 . xk ore y . share . domain . socket . Net ty Client UseCase Ċ import Ġcom . pj 1 0 9 . xk ore y . share . result . Result Ċ import Ġcom . pj 1 0 9 . xk ore y . share . result . succeeded Ċ import Ġcom . pj 1 0 9 . xk ore y . share . util . default Req Ċ import Ġcom . pj 1 0 9 . xk ore y . share . util . rnd Str Ċ import Ġes . dm oral . markdown view . Markdown View Ċ import Ġtim ber . log . Tim ber Ċ import Ġjava . util .* Ċ import Ġjava . util . regex . Pattern Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠSign In ViewModel Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġobservable : ĠOb serve User Setting UseCase , ĊĠĠĠ Ġprivate Ġval Ġsign In ViewModel Delegate : ĠSign In ViewModel Delegate , ĊĠĠĠ Ġprivate Ġval Ġconfig Query UseCase : ĠConfig Query UseCase , ĊĠĠĠ Ġprivate Ġval Ġconfig Set UseCase : ĠConfig Set UseCase , ĊĠĠĠ Ġprivate Ġval Ġnumber Subtract UseCase : ĠNumber Subtract UseCase , ĊĠĠĠ Ġprivate Ġval Ġcapt cha Check UseCase : ĠCapt cha Check UseCase , ĊĠĠĠ Ġprivate Ġval Ġregister UseCase : ĠRegister UseCase , ĊĠĠĠ Ġprivate Ġval Ġkey Set UseCase : ĠFunction Key Set UseCase , ĊĠĠĠ Ġprivate Ġval Ġnet ty Client UseCase : ĠNet ty Client UseCase Ċ ) Ġ: ĠViewModel (), ĠSign In ViewModel Delegate Ġby Ġsign In ViewModel Delegate Ġ{ ĊĊĠĠĠ Ġval Ġsms Count Down Ġ= ĠMutable LiveData < Long >() ĊĠĠĠ Ġprivate Ġval Ġ_ isLoading Ġ= ĠMutable LiveData < Boolean >() ĊĠĠĠ Ġval ĠisLoading : ĠLive Data < Boolean > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ isLoading ĊĠĠĠ Ġprivate Ġval Ġ_ toast Message Ġ= ĠMutable LiveData < String >() ĊĠĠĠ Ġval Ġtoast Message : ĠLive Data < String > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ toast Message ĊĊĠĠĠ Ġval Ġawesome Dialog = Mutable LiveData < Int >() ĊĠĠĠ Ġval Ġawesome Dialog Status = Mutable LiveData < Int >() ĊĊĊĠĠĠ Ġ// ĠçĶ¨æĪ· è¾ĵåħ¥ æīĭæľº åı· ĊĠĠĠ Ġval Ġphone Ġ= ĠObservable Field < String >() ĊĠĠĠ Ġ// Ġkey Ġ çĻ» éĻĨ ĊĠĠĠ Ġval Ġkey Ġ= ĠObservable Field < String >() ĊĠĠĠ Ġval Ġloop bar Title Ġ= ĠObservable Field < Int >() ĊĠĠĠ Ġval Ġanonymous Ġ= ĠObservable Field < String >() ĊĠĠĠ Ġval Ġanonymous Error Ġ= ĠObservable Field < String >() ĊĠĠĠ Ġ// Ġ æĮīéĴ® txt ĊĠĠĠ Ġval Ġbutton Txt Ġ= ĠObservable Field < Int >() ĊĠĠĠ Ġval Ġsend Txt Ġ= ĠObservable Field < String >() ĊĠĠĠ Ġval Ġsend Btn Visibility Ġ= ĠObservable Field < Int >() ĊĠĠĠ Ġval Ġagree Check Txt Ġ= ĠObservable Field < Int >() ĊĠĠĠ Ġval Ġinvite Code Ġ= ĠObservable Field < String >() ĊĠĠĠ Ġval Ġcapt cha Ġ= ĠObservable Field < String >() ĊĠĠĠ Ġval Ġpass w od Ġ= ĠObservable Field < String >() ĊĠĠĠ Ġval Ġphone Error Ġ= ĠObservable Field < String >() ĊĠĠĠ Ġval Ġpassword Error Ġ= ĠObservable Field < String >() ĊĠĠĠ Ġ// Ġ çŁŃ ä¿¡ éªĮè¯ģçłģ éĶĻè¯¯ ĊĠĠĠ Ġval Ġsms Code Error Ġ= ĠObservable Field < String >() ĊĠĠĠ Ġ// Ġ éªĮè¯ģçłģ éĶĻè¯¯ ĊĠĠĠ Ġval Ġcapt cha Error Ġ= ĠObservable Field < String >() ĊĠĠĠ Ġval Ġinvite Code Error Ġ= ĠObservable Field < String >() ĊĠĠĠ Ġ// Ġ éĤ Ģ è¯· çłģ æĺ¯åĲ¦ æĺ¾ç¤º ĊĠĠĠ Ġval Ġinvite Enable Ġ= ĠObservable Field < Int >() ĊĠĠĠ Ġ// Ġ éªĮè¯ģçłģ url ĊĠĠĠ Ġval Ġcapt cha Url Ġ= ĠObservable Field < Uri >() ĊĠĠĠ Ġval Ġcount down Visibility Ġ= ĠObservable Field < Int >() ĊĠĠĠ Ġval Ġwe i bo Visibility Ġ= ĠObservable Field < Int >() ĊĊĠĠĠ Ġ// Ġ æľª åıĳéĢģ éªĮè¯ģçłģ åĪĻ æĺ¾ç¤º ĊĠĠĠ Ġval Ġcapt cha Visibility Ġ= ĠObservable Field < Int >() ĊĠĠĠ Ġval Ġsms Code Visible Ġ= ĠObservable Field < Int >() ĊĠĠĠ Ġval Ġcount down Ġ= ĠObservable Field < String >() ĊĠĠĠ Ġval Ġdefault Error Txt Ġ= Ġ" è¯·æ±Ĥ å¤±è´¥ ï¼Į ç¨ į åĲİ åĨį è¯ķ " ĊĊĊĠĠĠ Ġ// ĊĠĠĠ Ġval Ġbtn Evt Ġ= ĠMutable LiveData < Int >() ĊĠĠĠ Ġvar Ġrad Key Ġ= Ġ"" ĊĠĠĠ Ġvar ĠeventType Ġ= ĠEvent M thod . Register ĊĊĠĠĠ Ġval Ġphone Validate Txt = Observable Field < String >() ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ isLoading . post Value ( true ) ĊĠĠĠĠĠĠĠ Ġbtn Evt . post Value ( 0 ) ĊĠĠĠĠĠĠĠ Ġsend Btn Visibility . set ( View . VISIBLE ) ĊĠĠĠĠĠĠĠ Ġbutton Txt . set ( R . string . register ) ĊĠĠĠĠĠĠĠ Ġsend Txt . set (" åıĳéĢģ ") ĊĠĠĠĠĠĠĠ Ġagree Check Txt . set ( R . string . agreement _ ok ) ĊĠĠĠĠĠĠĠ Ġinvite Enable . set ( View . GONE ) ĊĠĠĠĠĠĠĠ Ġsms Code Visible . set ( View . VISIBLE ) ĊĠĠĠĠĠĠĠ Ġcapt cha Visibility . set ( View . VISIBLE ) ĊĠĠĠĠĠĠĠ Ġwe i bo Visibility . set ( View . GONE ) ĊĠĠĠĠĠĠĠ Ġrad Key Ġ= Ġrnd Str () ĊĠĠĠĠĠĠĠ Ġchange Captcha () ĊĠĠĠĠĠĠĠ Ġawesome Dialog . post Value ( Dialog Type . none ) ĊĠĠĠĠĠĠĠ Ġawesome Dialog Status . post Value ( Dialog Type . none ) ĊĠĠĠĠĠĠĠ Ġconfig Query UseCase . invoke ( Pair (" user _ register ", Ġ" phone ")). observe Fore ver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġphone . set (( it Ġas ĠResult . Success ). data ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġconfig Query UseCase . invoke ( Pair (" invite _ config ", Ġ" open ")). observe Fore ver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs Ġ= Ġ( it Ġas ĠResult . Success ). data ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( s . equals (" 1 ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvite Enable . set ( View . VISIBLE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvite Enable . set ( View . GONE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġconfig Query UseCase . invoke ( Pair (" user _ register ", Ġ" rand _ key ")). observe Fore ver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkey . set (( it Ġas ĠResult . Success ). data ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġconfig Query UseCase . invoke ( Pair (" user _ register ", Ġ" anonymous ")). observe Fore ver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanonymous . set (( it Ġas ĠResult . Success ). data ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġconfig Query UseCase . invoke ( Pair (" validate ", Ġ" phone ")). observe Fore ver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . succeeded ->{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġphone Validate Txt . set (( it Ġas ĠResult . Success ). data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ åıĳéĢģ éªĮè¯ģçłģ ĊĠĠĠ Ġfun Ġsend Sms () Ġ{ ĊĠĠĠĠĠĠĠ Ġsms Count Down . value ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġphone . get ()?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġ_ phone Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ æł¡éªĮ æīĭæľº åı· ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! validate Phone (_ phone )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġphone Error . set ("") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Set UseCase . invoke ( Triple (" user _ register ", Ġ" phone ", Ġ_ phone )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( captcha . get (). isNull Or Blank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcapt cha Error . set (" è¯·è¾ĵåħ¥ éªĮè¯ģçłģ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcapt cha . get ()?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġt Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ æł¡éªĮ åĽ¾ å½¢ éªĮè¯ģçłģ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreq Ġ= Ġdefault Req (" captcha / check ? r =" Ġ+ ĠMath . random ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreq . params ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . put (" key ", Ġrad Key ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . put (" code ", Ġt ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcapt cha Check UseCase . invoke ( req ). observe Fore ver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . succeeded Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( it Ġas ĠResult . Success ). data . code Ġ== ĠResponse . success ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åıĳéĢģ çŁŃ ä¿¡ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Send Sms Code (_ phone , Ġt ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcapt cha Error . set (" éªĮè¯ģçłģ ä¸į æŃ£ç¡® ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchange Captcha () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġphone Error . set (" æīĭæľº åı· çłģ æł¼å¼ı ä¸į æŃ£ç¡® ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrequest Send Sms Code ( phone : ĠString , Ġcapt cha : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcapt cha Error . set ("") ĊĠĠĠĠĠĠĠ Ġval Ġreq Ġ= Ġdefault Req (" sms / code ") ĊĠĠĠĠĠĠĠ Ġreq . params ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . put (" phone ", Ġphone ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . put (" captcha ", Ġcapt cha ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreq . method Ġ= ĠHttpMethod . POST ĊĠĠĠĠĠĠĠ Ġcapt cha Check UseCase . invoke ( req ). observe Fore ver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . succeeded Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( it Ġas ĠResult . Success ). data . code Ġ!= ĠResponse . success ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ toast Message . post Value (( it Ġas ĠResult . Success ). data . msg ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġsend Ġnotice ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġawesome Dialog . post Value ( Dialog Type . error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ å¼Ģå§ĭ åĢĴ è®¡ æĹ¶ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Count ( Build Config . captcha TimeOut . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcapt cha Visibility . set ( View . GONE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Set UseCase . invoke ( Triple (" user _ register ", Ġ" send _ sms _ time ", ĠDate (). time . toString ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġchange Captcha () Ġ{ ĊĠĠĠĠĠĠĠ Ġconfig Query UseCase . invoke ( Pair (" captcha ", Ġ" url ")). observe Fore ver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġ( it Ġas ĠResult . Success ). data ĊĠĠĠĠĠĠĠĠĠĠĠ Ġurl ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcapt cha Url . set ( Uri . parse ( it Ġ+ Ġ"? key =${ rad Key }& r =" Ġ+ ĠMath . random ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstart Count ( left : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnumber Subtract UseCase . invoke ( Pair ( left , Ġsms Count Down )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow Agreement Txt ( markdown View : ĠMarkdown View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġconfig Query UseCase . invoke ( Pair (" agreement ", Ġ" content ")). observe Fore ver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs Ġ= Ġ( it Ġas ĠResult . Success ). data ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmarkdown View . load FromText ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ åĲĮ æĦı çĶ¨æĪ· åįıè®® checkbox Ġ çĤ¹åĩ» ĊĠĠĠ Ġfun Ġagree Check Click () Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( weibo Visibility . get ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView . GONE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwe i bo Visibility . set ( View . VISIBLE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġagree Check Txt . set ( R . string . agreement _ fail ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwe i bo Visibility . set ( View . GONE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġagree Check Txt . set ( R . string . agreement _ ok ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġkey Log () Ġ{ ĊĠĠĠĠĠĠĠ Ġkey . get ()?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Set UseCase . invoke ( Triple (" user _ register ", Ġ" rand _ key ", Ġit )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" rand Ġkey Ġlogin Ġ.. ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// åĮ ¿ åĲį çĻ» éĻĨ ĊĠĠĠ Ġfun Ġanonymous Log () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( anonymous . get (). isNull Or Blank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanonymous Error . set (" è¯·è¾ĵåħ¥ key ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġanonymous . get ()?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Set UseCase . invoke ( Triple (" user _ register ", Ġ" anonymous ", Ġit )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreq Ġ= Ġdefault Req (" user / anonymous - register ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreq . method Ġ= ĠHttpMethod . POST ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreq . params !!. put (" nick Name ", Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister UseCase . invoke ( req ). observe Fore ver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . succeeded Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtmp Ġ= Ġ( it Ġas ĠResult . Success ). data ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tmp . code Ġ== Ġ 2 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtmp . dot a ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Set UseCase . invoke ( Triple (" anonymous ", Ġ" id ", Ġit . id . toString ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Set UseCase . invoke ( Triple (" anonymous ", Ġ" key ", Ġit . key )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Set UseCase . invoke ( Triple (" user ", Ġ" sign ", Ġ" 0 ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey Set UseCase . invoke ( it . key ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åĪĩ åĪ° ä¸» é¡µéĿ¢ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ toast Message . post Value (" æ³¨åĨĮ æĪĲåĬŁ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsign In ViewModel Delegate . emit Register Ok () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Net ty () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġshow Ġerror ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ toast Message . post Value ( tmp . msg ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ toast Message . post Value ( default Error Txt ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġè¯·æ±Ĥ æ³¨åĨĮ ĊĠĠĠ Ġfun Ġconnect () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( phone . get (). isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġphone Error . set (" è¯·è¾ĵåħ¥ æīĭæľº åı· ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! validate Phone ( phone . get () !! )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġphone Error . set (" æīĭæľº åı· çłģ æł¼å¼ı ä¸į æŃ£ç¡® ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( pass w od . get (). isNull Or Blank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsms Code Error . set (" è¯·è¾ĵåħ¥ çŁŃ ä¿¡ éªĮè¯ģçłģ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġneed Invite Code Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( eventType . equals ( Event M thod . Register )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠéľĢè¦ģ éĤ Ģ è¯· çłģ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( invite Enable . get () Ġ== ĠView . VISIBLE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġneed Invite Code Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( invite Code . get (). isNull Or Blank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvite Code Error . set (" è¯·è¾ĵåħ¥ éĤ Ģ è¯· çłģ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġreq Ġ= Ġdefault Req (" user / register ") ĊĠĠĠĠĠĠĠ Ġreq . method Ġ= ĠHttpMethod . POST ĊĠĠĠĠĠĠĠ Ġreq . params !!. put (" phone ", Ġphone . get () !! ) ĊĠĠĠĠĠĠĠ Ġreq . params !!. put (" sms Code ", Ġpass w od . get () !! ) ĊĠĠĠĠĠĠĠ Ġif Ġ( need Invite Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreq . params !!. put (" invite Code ", Ġinvite Code . get () !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġregister UseCase . invoke ( req ). observe Fore ver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . succeeded Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtmp Ġ= Ġ( it Ġas ĠResult . Success ). data ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tmp . code Ġ== Ġ 2 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtmp . dot a ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Set UseCase . invoke ( Triple (" user ", Ġ" id ", Ġit . id . toString ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Set UseCase . invoke ( Triple (" user ", Ġ" key ", Ġit . key )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey Set UseCase . invoke ( it . key ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åĪĩ åĪ° ä¸» é¡µéĿ¢ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ toast Message . post Value (" æ³¨åĨĮ æĪĲåĬŁ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Set UseCase . invoke ( Triple (" user ", Ġ" sign ", Ġ" 1 ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsign In ViewModel Delegate . emit Register Ok () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Net ty () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġshow Ġerror ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ toast Message . post Value ( tmp . msg ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġawesome Dialog . post Value ( Dialog Type . error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ toast Message . post Value ( default Error Txt ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġchange Count Down ( it : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( it Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsend Txt . set ( it . toString ()) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsend Txt . set (" åıĳéĢģ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsend Btn Visibility . set ( captcha Visibility . get ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinit Reg Param () Ġ{ ĊĠĠĠĠĠĠĠ Ġconfig Query UseCase . invoke ( Pair (" user _ register ", Ġ" send _ sms _ time ")). observe Fore ver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġs Ġ= Ġ( it Ġas ĠResult . Success ). data ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( "" . equals ( s )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs Ġ= Ġ" 0 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsms Code Visible . set ( View . VISIBLE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlast Ġ= Ġs ?. let Ġ{ ĠDate (). time Ġ- Ġit . to Long () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" left Ġtime Ġ${ it }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( last Ġ> ĠBuild Config . captcha TimeOut Ġ* Ġ 1 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcapt cha Visibility . set ( View . VISIBLE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Btn Visibility . set ( View . VISIBLE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Evt . post Value ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcapt cha Visibility . set ( View . GONE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Evt . post Value ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Count ( Build Config . captcha TimeOut Ġ- Ġit Ġ/ Ġ 1 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ åĬłè½½ éªĮè¯ģçłģ ä½¿çĶ¨ è¯´æĺİ ĊĠĠĠ Ġfun Ġshow Reg Code Not ( markdown View : ĠMarkdown View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġconfig Query UseCase . invoke ( Pair (" agreement ", Ġ" sms _ code ")). observe Fore ver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmarkdown View . load FromText (( it Ġas ĠResult . Success ). data ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstart Net ty () Ġ{ ĊĠĠĠĠĠĠĠ Ġnet ty Client UseCase . execute ( Build Config . Socket ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġvalidate Phone ( phone : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġif (! phone Validate Txt . get (). isNull Or Blank ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġphone V lid = phone Validate Txt . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġphone V lid ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreg Ġ= ĠPattern . compile ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( reg . matcher ( phone ). matches ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult = true ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlogin (){ ĊĠĠĠĠĠĠĠ ĠTim ber . i (" login Ġmethod Ġinvoke ") ĊĠĠĠ Ġ} Ċ Ċ } Ċ