package Ġorg . fo ss as ia . open event . general . auth Ċ Ċ import Ġandroid . arch . lifecycle . Mutable LiveData Ċ import Ġandroid . arch . lifecycle . ViewModel Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġorg . fo ss as ia . open event . general . common . Single Live Event Ċ import Ġorg . fo ss as ia . open event . general . data . Network Ċ import Ġorg . fo ss as ia . open event . general . utils . null To Empty Ċ import Ġtim ber . log . Tim ber ĊĊ Ċ class ĠSign Up Fragment ViewModel ( private Ġval Ġauth Service : ĠAuth Service , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġnetwork : ĠNetwork ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġcomposite Disposable Ġ= ĠComposite Disposable () ĊĊĠĠĠ Ġval Ġprogress Ġ= ĠMutable LiveData < Boolean >() ĊĠĠĠ Ġval Ġerror Ġ= ĠSingle Live Event < String >() ĊĠĠĠ Ġval Ġsigned Up Ġ= ĠMutable LiveData < User >() ĊĠĠĠ Ġval Ġshow No Internet Dialog Ġ= ĠMutable LiveData < Boolean >() ĊĠĠĠ Ġval Ġlogged In Ġ= ĠSingle Live Event < Boolean >() ĊĠĠĠ Ġvar Ġemail : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġpassword : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġsign Up ( sign Up : ĠSign Up , Ġconfirm Password : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! isConnected ()) Ġreturn ĊĠĠĠĠĠĠĠ Ġemail Ġ= Ġsign Up . email ĊĠĠĠĠĠĠĠ Ġpassword Ġ= Ġsign Up . password ĊĊĠĠĠĠĠĠĠ Ġif Ġ( has Errors ( email , Ġpassword , Ġconfirm Password )) Ġreturn ĊĠĠĠĠĠĠĠ Ġcomposite Disposable . add ( auth Service . sign Up ( sign Up ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Subscribe Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress . value Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. do Finally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress . value Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsigned Up . value Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" Success !") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . toString (). contains (" HTTP Ġ 4 0 9 ĠCON FLI CT ") Ġ-> Ġerror . value Ġ= Ġ" Unable Ġto ĠSign Up : ĠEmail Ġalready Ġexists !" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . toString (). contains (" HTTP Ġ 4 2 2 ĠUN PROCESS ABLE ĠENT ITY ") Ġ-> Ġerror . value Ġ= Ġ" Unable Ġto ĠSign Up : ĠNot Ġa Ġvalid Ġemail Ġaddress !" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġerror . value Ġ= Ġ" Unable Ġto ĠSign Up !" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d ( it , Ġ" Failed ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ})) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlogin ( sign Up : ĠSign Up ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! isConnected ()) Ġreturn ĊĠĠĠĠĠĠĠ Ġemail Ġ= Ġsign Up . email ĊĠĠĠĠĠĠĠ Ġpassword Ġ= Ġsign Up . password ĊĠĠĠĠĠĠĠ Ġcomposite Disposable . add ( auth Service . login ( email . null To Empty (), Ġpassword . null To Empty ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Subscribe Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress . value Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. do Finally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress . value Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogged In . value Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" Success !") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfetch Profile () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror . value Ġ= Ġ" Unable Ġto ĠLogin Ġautomatically " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d ( it , Ġ" Failed ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ})) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfetch Profile () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! isConnected ()) Ġreturn ĊĠĠĠĠĠĠĠ Ġcomposite Disposable . add ( auth Service . get Profile () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ Ġuser Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" F etched ĠUser ĠDetails ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e ( it , Ġ" Error Ġloading Ġuser Ġdetails ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Cle ared () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Cle ared () ĊĠĠĠĠĠĠĠ Ġcomposite Disposable . clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhas Errors ( email : ĠString ?, Ġpassword : ĠString ?, Ġconfirm Password : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( email . isNull OrEmpty () Ġ|| Ġpassword . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror . value Ġ= Ġ" Email Ġor ĠPassword Ġcannot Ġbe Ġempty !" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( password Ġ!= Ġconfirm Password ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror . value Ġ= Ġ" Password s Ġdo Ġnot Ġmatch !" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( password . length Ġ< Ġ 6 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror . value Ġ= Ġ" Password Ġshould Ġbe Ġat least Ġ 6 Ġcharacters !" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis Connected (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġis Connected Ġ= Ġnetwork . is Network Connected () ĊĠĠĠĠĠĠĠ Ġif Ġ(! isConnected ) Ġshow No Internet Dialog . value Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġreturn Ġis Connected ĊĠĠĠ Ġ} Ċ }