package Ġcom . mark nk am au . un ip ool . ui . main Ċ Ċ import Ġcom . mark nk am au . un ip ool . domain . authentication . Authentication Service Ċ import Ġcom . mark nk am au . un ip ool . domain . User Ċ import Ġcom . mark nk am au . un ip ool . domain . data . api . Api Repository Ċ import Ġcom . mark nk am au . un ip ool . domain . data . local . LocalStorage Service Ċ import Ġcom . mark nk am au . un ip ool . ui . Base Presenter Ċ import Ġcom . mark nk am au . un ip ool . utils . apply Single Schedulers Ċ import Ġtim ber . log . Tim ber Ċ Ċ class ĠMain Presenter ( private Ġval Ġview : ĠMain View , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġauthentication Service : ĠAuthentication Service , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġapi Repository : ĠApi Repository , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval ĠlocalStorage Service : ĠLocal Storage Service ) ĊĠĠĠ Ġ: ĠBase Presenter () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġview Called Ġ= Ġfalse ĊĊĠĠĠ Ġfun ĠgetCurrent User () Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck LocalStorage () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck LocalStorage () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= ĠlocalStorage Service . getUser () ĊĊĠĠĠĠĠĠĠ ĠTim ber . d (" User Ġfrom Ġlocal Ġstorage : Ġ$ user ") ĊĊĠĠĠĠĠĠĠ Ġif Ġ( user Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . on User Retrie ved ( user ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Called Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcheck Api () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck Api () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdis posable Ġ= Ġapi Repository . getUser ( authentication Service . current UserId ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. compose ( apply Single Schedulers ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġuser : ĠUser Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" Retrie ved Ġuser Ġfrom ĠAPI : Ġ$ user ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Local ( user ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! view Called ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . on User Retrie ved ( user ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġt : ĠThrowable ? Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e ( t ?. message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e ( t ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( t Ġis ĠNullPointerException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . user DoesNotExist () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . display Message ( t ?. message Ġ?: Ġ" An Ġerror Ġhas Ġoccurred ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġdis pos ables . add ( dis posable ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Local ( user : ĠUser ) Ġ{ ĊĠĠĠĠĠĠĠ ĠlocalStorage Service . save User ( user ) ĊĠĠĠĠĠĠĠ ĠTim ber . d (" Saved Ġuser Ġto Ġlocal Ġstorage ") ĊĠĠĠ Ġ} Ċ }