package Ġj oh ns ard in ha . login demo . app . login Ċ Ċ import Ġandroid . util . Patterns Ċ import Ġj oh ns ard in ha . login demo . network . endpoints . User Endpoints Ċ import Ġj oh ns ard in ha . login demo . network . models . User Login PO JO Ċ import Ġj oh ns ard in ha . login demo . utils . Network Utils Ċ import Ġj oh ns ard in ha . login demo . utils . PASSWORD _ MIN _ LENGTH Ċ import Ġj oh ns ard in ha . login demo . utils . log Ċ import Ġretrofit 2 . Call Ċ import Ġretrofit 2 . Callback Ċ import Ġretrofit 2 . Response Ċ Ċ class ĠLog In Presenter ( private Ġval Ġlogin View : ĠLog In Contract . View ) Ġ: ĠLog In Contract . Presenter Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġemail String : ĠString Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġvar Ġpassword String : ĠString Ġ= Ġ"" ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġlogin View . presenter Ġ= Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstart () Ġ{ ĊĠĠĠĠĠĠĠ Ġlogin View . disable Password () ĊĠĠĠĠĠĠĠ Ġlogin View . disable Login Button () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlogin ( email : ĠString , Ġpassword : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlogin View . start Loading () ĊĠĠĠĠĠĠĠ Ġlogin View . disable Login Button () ĊĠĠĠĠĠĠĠ ĠNetwork Utils . get Ret rofit (). create ( User Endpoints :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. login ( email , Ġpassword ). enqueue ( object Ġ: ĠCallback < User Login PO JO > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall < User Login PO JO > ?, Ġresponse : ĠResponse < User Login PO JO > ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogin View . enable Login Button () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogin View . stop Loading () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog ( response . body () !!. token ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogin View . successfully LoggedIn () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogin View . show ErrorMessage (" Can 't Ġlog Ġin Ġwith Ġthose Ġcredentials ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogin View . show ErrorMessage (" error 2 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall < User Login PO JO > ?, Ġt : ĠThrowable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogin View . enable Login Button () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogin View . stop Loading () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogin View . show ErrorMessage (" Check Ġyour Ġnetwork ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġemail Type ( email : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġemail String Ġ= Ġemail ĊĠĠĠĠĠĠĠ Ġcheck If Can Login () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpassword Type ( password : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpassword String Ġ= Ġpassword ĊĠĠĠĠĠĠĠ Ġcheck If Can Login () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck If Can Login () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġis Email Valid Ġ= ĠPattern s . EMAIL _ ADDRESS . matcher ( email String ). matches () ĊĠĠĠĠĠĠĠ Ġval Ġis Password Valid Ġ= Ġpassword String . length Ġ>= ĠPASSWORD _ MIN _ LENGTH ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! is Email Valid ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogin View . disable Password () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogin View . disable Login Button () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( is Email Valid Ġ&& Ġ! is Password Valid ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogin View . enable Password () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogin View . disable Login Button () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( is Email Valid Ġ&& Ġis Password Valid ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogin View . enable Password () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogin View . enable Login Button () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ Ċ }