package Ġcom . mar cin str am owski . social meal . screens . account . sign Up Ċ Ċ import Ġcom . github . aj alt . tim ber kt . e Ċ import Ġcom . mar cin str am owski . social meal . R Ċ import Ġcom . mar cin str am owski . social meal . account . Credentials Validator . Companion . ERROR _ MESSAGE _ DELAY _ MS Ċ import Ġcom . mar cin str am owski . social meal . account . User Prefs DataSource Ċ import Ġcom . mar cin str am owski . social meal . api . Server Api Ċ import Ġcom . mar cin str am owski . social meal . model . signIn . SignIn Request Ċ import Ġcom . mar cin str am owski . social meal . model . sign Up . SignUp Form Fields Ċ import Ġcom . mar cin str am owski . social meal . model . sign Up . SignUp Request Ċ import Ġcom . mar cin str am owski . social meal . rx Schedulers . Scheduler Provider Ċ import Ġcom . mar cin str am owski . social meal . utils . DeviceInfo Ċ import Ġcom . mar cin str am owski . social meal . utils . Network ErrorMessage Builder Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġjava . util . concurrent . TimeUnit Ċ import Ġjavax . inject . Inject Ċ Ċ /** Ċ Ġ* ĠSign Ġin Ġscreen Ġlogic Ċ Ġ*/ Ċ class ĠSign Up Presenter Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġview : ĠSign Up Contract . View , ĊĠĠĠ Ġprivate Ġval Ġmanagement Api : ĠServer Api . Management Api , ĊĠĠĠ Ġprivate Ġval Ġdevice Info : ĠDevice Info , ĊĠĠĠ Ġprivate Ġval Ġuser Prefs DataSource : ĠUser Prefs DataSource , ĊĠĠĠ Ġvar Ġs chedulers : ĠScheduler Provider Ċ ) Ġ: ĠSign Up Contract . Presenter Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġcomposite Disposable Ġ= ĠComposite Disposable () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate () Ġ{} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{} ĊĊĠĠĠ Ġoverride Ġfun Ġon SignUp Button Click ( fields : ĠSign Up Form Fields ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcomposite Disposable . add ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanagement Api ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. sign Up ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSign Up Request ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfields . firstName , Ġfields . surname , Ġfields . email , Ġfields . password ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Then ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmanagement Api . signIn ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSign In Request ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfields . email , Ġfields . password , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdevice Info . deviceId , Ġdevice Info . device Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( schedul ers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( schedul ers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Success Ġ{ Ġuser Prefs DataSource . save Tokens ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( schedul ers . ui ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Subscribe Ġ{ Ġview . set SignUp Button Processing ( true ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do After Terminate Ġ{ Ġview . set SignUp Button Processing ( false ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġview . show MainActivity () Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġerror Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . show ErrorMessage ( get Network ErrorMessage ( error )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe ( error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Network ErrorMessage ( error : ĠThrowable ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠNetwork ErrorMessage Builder ( error ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Http ErrorMessage ( 4 0 0 , ĠR . string . email _ is _ taken ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. getMessage String Id () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġobserve Fields Changes ( observable : ĠObservable < SignUp Form Fields >) Ġ{ ĊĠĠĠĠĠĠĠ Ġcomposite Disposable . add ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobservable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Next Ġ{ Ġregistration Fields Ġ-> Ġview . set SignUp Button Enabled ( registration Fields . fields Valid ()) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. de bounce ( ERROR _ MESSAGE _ DELAY _ MS , ĠTimeUnit . MILLISECONDS , Ġs chedulers . ui ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġregistration Fields Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . show Password s Dont Match Message ( registration Fields . should Show Password s Dont Match Message ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . show Invalid Password Message ( registration Fields . should Show Invalid Password Message ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . show Invalid Email Message ( registration Fields . should Show Invalid Email Message ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġerror Ġ-> Ġe ( error ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠSign Up Form Fields . should Show Password s Dont Match Message () Ġ= ĊĠĠĠĠĠĠĠ Ġthis . confirm Password . isNotBlank () Ġ&& Ġthis . passwords Not Match () ĊĊĠĠĠ Ġprivate Ġfun ĠSign Up Form Fields . should Show Invalid Password Message () Ġ= ĊĠĠĠĠĠĠĠ Ġthis . password Not Valid () Ġ&& Ġthis . password . isNotBlank () ĊĊĠĠĠ Ġprivate Ġfun ĠSign Up Form Fields . should Show Invalid Email Message () Ġ= ĊĠĠĠĠĠĠĠ Ġthis . email Not Valid () Ġ&& Ġthis . email . isNotBlank () Ċ }