package Ġorg . du ke con . android . ui . features . login Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroidx . browser . custom tabs . Custom Tabs Intent Ċ import Ġandroidx . core . net . to Uri Ċ import Ġorg . du ke con . android . ui . features . login . browser . Custom Tab Activity Helper Ċ import Ġorg . du ke con . android . ui . features . login . browser . Web view Fallback Ċ import Ġorg . du ke con . data . service . OAuth Service Ċ import Ġorg . du ke con . data . source . OAuth Configuration Ċ import Ġorg . du ke con . domain . aspect s . auth . Auth Manager Ċ import Ġorg . du ke con . domain . features . oauth . Tokens Storage Ċ import Ġorg . du ke con . domain . model . OAuth Token Ċ import Ġorg . du ke con . remote . oauth . mapper . OAuth Token Mapper Ċ import Ġjavax . inject . Inject Ċ import Ġjavax . inject . Singleton Ċ Ċ @ Singleton Ċ class ĠDu ke con Auth Manager Ġ@ Inject Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġo Auth Configuration : ĠOAuth Configuration , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġo Auth Service : ĠOAuth Service , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġtokens Storage : ĠTokens Storage , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġo AuthToken Mapper : ĠOAuth Token Mapper Ċ ) Ġ: ĠAuth Manager Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġhas Session ( token : ĠOAuth Token ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtoken . refresh Token . isNotEmpty () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġexchange Token ( code : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtoken Ġ= Ġo Auth Service . code 2 token ( code ) ĊĠĠĠĠĠĠĠ Ġtokens Storage . set Token ( o AuthToken Mapper . map ( token )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġlogin ( activity : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuri Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ o Auth Configuration . baseUrl } auth ? client _ id =${ o Auth Configuration . clientId }& redirect _ uri =${ o Auth Configuration . redirect Uri }& response _ type = code & scope = openid % 2 0 offline _ access ". to Uri () ĊĠĠĠĠĠĠĠ Ġval Ġcustom Tabs Intent Ġ= ĠCustom Tabs Intent . Builder (). build () ĊĠĠĠĠĠĠĠ ĠCustom Tab Activity Helper . open Custom Tab ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Ġas ĠActivity , Ġcustom Tabs Intent , Ġuri , ĠWeb view Fallback () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ