package Ġcom . kon den ko . po cket w aka . screens . login Ċ Ċ import Ġandroid . net . Uri Ċ import Ġcom . kon den ko . po cket w aka . Const Ċ import Ġcom . kon den ko . po cket w aka . domain . auth . Get AccessToken Ċ import Ġcom . kon den ko . po cket w aka . domain . auth . Get Auth Url Ċ import Ġcom . kon den ko . po cket w aka . screens . base . Base Presenter ĊĊ Ċ class ĠLogin Presenter ( private Ġval Ġget Auth Url : ĠGet Auth Url , Ġprivate Ġval Ġget AccessToken : ĠGet AccessToken ) Ġ: ĠBase Presenter < Login View >() Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġis Logging In Ġ= Ġfalse ĊĊĠĠĠ Ġfun Ġon Login Button Clicked ( force WebView : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis Logging In Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġget Auth Url . invoke ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonSuccess Ġ= Ġ{ Ġurl Ġ-> Ġview ?. open Auth Url ( url , ĠConst . AUTH _ RE DIRECT _ URI , Ġforce WebView ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonError Ġ= Ġ{ Ġview ?. show Error ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetToken ( code : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview ?. show Loading () ĊĠĠĠĠĠĠĠ Ġget AccessToken . invoke ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams Ġ= Ġcode , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonSuccess Ġ= Ġ{ Ġtoken Ġ-> Ġview ?. on GetToken Success ( token ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonError Ġ= Ġ{ Ġview ?. show Error ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcheck If Auth Is Successful ( uri : ĠUri ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Logging In ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( uri Ġ!= Ġnull Ġ&& Ġuri . toString (). startsWith ( Const . AUTH _ RE DIRECT _ URI )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcode Ġ= Ġuri . getQuery Parameter (" code ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( code Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetToken ( code ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġuri . getQuery Parameter (" error ") ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. show Error ( RuntimeException ( it )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Logging In Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. on Login Cancelled () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Logging In Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdetach () Ġ{ ĊĠĠĠĠĠĠĠ Ġdispose ( get AccessToken , Ġget Auth Url ) ĊĠĠĠ Ġ} Ċ Ċ }