package Ġcom . x sol la . android . login . ui Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġcom . x sol la . android . login . ui . utils . Browser Utils Ċ Ċ class ĠActivity Auth Browser Proxy Ġ: ĠActivity Auth () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġcheck Availability ( context : ĠContext , Ġurl : ĠString ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBrowser Utils . is Browser Available ( context , Ġurl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| ĠBrowser Utils . is Custom Tabs Available ( context , Ġurl ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġneed Start Browser Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġurl : ĠString ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcallback Url : ĠString ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġintent . getString Extra ( ARG _ AUTH _ URL ) ĊĠĠĠĠĠĠĠ Ġval Ġcallback Url Ġ= Ġintent . getString Extra ( ARG _ CALLBACK _ URL ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( url Ġ== Ġnull Ġ|| Ġcallback Url Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( savedInstanceState Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġneed Start Browser Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . url Ġ= Ġurl ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . callback Url Ġ= Ġcallback Url ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġif Ġ( need Start Browser ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Browser Utils . is Custom Tabs Available ( this , Ġurl )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBrowser Utils . launch Custom Tab ( this , Ġurl ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBrowser Utils . launch Browser ( this , Ġurl ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġneed Start Browser Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish With Result ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠActivity . RESULT _ C ANCE LED , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . CANCEL LED , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Code Ġor Ġtoken Ġnot Ġfound ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon New Intent ( intent : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on New Intent ( intent ) ĊĠĠĠĠĠĠĠ Ġset Intent ( intent ) ĊĠĠĠĠĠĠĠ Ġval Ġuri Ġ= Ġintent ?. data ĊĠĠĠĠĠĠĠ Ġif Ġ( uri Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġtoken Ġ= Ġuri . getQuery Parameter (" token ") ĊĠĠĠĠĠĠĠ Ġval Ġcode Ġ= Ġuri . getQuery Parameter (" code ") ĊĠĠĠĠĠĠĠ Ġfinish With Result ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠActivity . RESULT _ OK , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . SUCCESS , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoken , Ġcode , Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfinish With Result ( result Code : ĠInt , Ġresult Data : ĠResult ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent () ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( RESULT , Ġresult Data ) ĊĠĠĠĠĠĠĠ Ġset Result ( result Code , Ġintent ) ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} Ċ }