package Ġio . github . br un og ab riel . dog g ie app . login Ċ Ċ import Ġio . github . br un og ab riel . dog g ie app . shared . models . User Authenticated Ċ import Ġio . github . br un og ab riel . dog g ie app . shared . models . User Authentication Data Ċ import Ġio . github . br un og ab riel . dog g ie app . shared . network . Authentication Service Ċ import Ġio . github . br un og ab riel . dog g ie app . shared . network . Ret rofit Manager Ċ import Ġio . github . br un og ab riel . dog g ie app . shared . persistence . User Authentication Persistence Ċ import Ġretrofit 2 . Response Ċ import Ġrx . Scheduler Ċ import Ġrx . android . schedul ers . Android Schedulers Ċ import Ġrx . schedul ers . Schedulers Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġb run og ab riel Ġon Ġ 2 0 1 9 - 0 6 - 1 5 . Ċ Ġ*/ Ċ class ĠLogin Presenter ( private Ġval Ġview : ĠLogin Contract . View , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġuser Authentication Persistence : ĠUser Authentication Persistence , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġuser Authentication Service : ĠAuthentication Service Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRet rofit Manager . create Service ( Authentication Service :: class . java ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġsubscribe On Scheduler : ĠScheduler Ġ= ĠS chedulers . io (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġobserve On Scheduler : ĠScheduler Ġ= ĠAndroid Schedulers . main Thread ()) Ġ: ĠLogin Contract . Presenter Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġon Login Selected ( username : ĠString , Ġpassword : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġhas Invalid Fields Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġif Ġ( username . length Ġ< Ġ 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhas Invalid Fields Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . show Invalid Username () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( password . length Ġ< Ġ 6 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhas Invalid Fields Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . show Invalid Password () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! has Invalid Fields ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Authentication Service . authenticate ( User Authentication Data ( username , Ġpassword )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( subscribe On Scheduler ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( observe On Scheduler ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Subscribe Ġ{ Ġview . show Loading () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do After Terminate Ġ{ Ġview . dismiss Loading () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . is Successful Ġ&& Ġit . body () Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Authentication Persistence . save ( it . body () !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . show Main () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . show Error () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . show Error () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }