package Ġio . loc ally . discover . authentication . managers Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Context . MODE _ PRIVATE Ċ import Ġandroid . provider . Tele phony . M ms . Part . FILENAME Ċ import Ġio . loc ally . discover . authentication . network . Authentication Services Ċ import Ġio . loc ally . discover . aws . AWS Helper Ċ import Ġorg . jetbrains . ank o . do Async Ċ Ċ class ĠAuthentication Manager ( private Ġval Ġcontext : ĠContext ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġtoken Manager Ġ= ĠToken Manager ( context . get SharedPreferences ( FILENAME , ĠMODE _ PRIVATE )) ĊĠĠĠ Ġvar Ġhelper : ĠAWS Helper ? Ġ= Ġnull ĊĠĠĠ Ġval Ġis Logged : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġtoken Manager . is Token Valid ĊĊĠĠĠ Ġfun Ġlogin ( username : ĠString , Ġpassword : ĠString , Ġcallback : Ġ(( Boolean ) Ġ-> ĠUnit )? ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( token Manager . is Token Valid ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallback ?. invoke ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdo Async Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAuthentication Services . login ( username , Ġpassword ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoken Manager . accessToken ( response . data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhelper Ġ= ĠAWS Helper ( context ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback ?. invoke ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ Ġerr Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoken Manager . date Ġ= Ġnull Ġ/* Ġinvalidate Ġtoken Ġ*/ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerr . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback ?. invoke ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġpublisher : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġtoken Manager . publisher ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠFIL ENAME Ġ= Ġ" io . loc ally . discover . preferences " ĊĠĠĠ Ġ} Ċ }