package Ġdev . i hs an . upg ur . data . config Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . SharedPreferences Ċ import Ġdev . i hs an . upg ur . data . model . Auth Result Ċ import Ġdev . i hs an . upg ur . util . ext . unit ify Ċ import Ġjavax . inject . Inject Ċ import Ġjavax . inject . Singleton Ċ Ċ /** Ċ Ġ* ĠA ĠSharedPreferences Ġmanager Ġobject Ġthat Ġtakes Ġcare Ġof Ġstoring Ġuser Ġcredentials . Ċ Ġ*/ Ċ @ Singleton Ċ class ĠCredentials Ġ@ Inject Ġconstructor ( app Context : ĠContext ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġprefs : ĠSharedPreferences ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġprefs Ġ= Ġapp Context . get SharedPreferences ( NAME , ĠContext . MODE _ PRIVATE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload From ( auth Result : ĠAuth Result ) Ġ{ ĊĠĠĠĠĠĠĠ ĠaccessToken Ġ= Ġauth Result . accessToken ĊĠĠĠĠĠĠĠ Ġrefresh Token Ġ= Ġauth Result . refresh Token ĊĠĠĠĠĠĠĠ Ġtoken Type Ġ= Ġauth Result . token Type ĊĠĠĠĠĠĠĠ Ġexpires In Ġ= Ġauth Result . expires In ĊĠĠĠĠĠĠĠ Ġusername Ġ= Ġauth Result . account Username ĊĠĠĠĠĠĠĠ ĠaccountId Ġ= Ġauth Result . accountId ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġusername : ĠString ? ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ= Ġprefs . edit (). putString ( KEY _ ACCOUNT _ USERNAME , Ġvalue ). commit (). unit ify () ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġprefs . getString ( KEY _ ACCOUNT _ USERNAME , Ġnull ) ĊĊĠĠĠ Ġvar Ġavatar Url : ĠString ? ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ= Ġprefs . edit (). putString ( KEY _ ACCOUNT _ AV AT AR _ URL , Ġvalue ). commit (). unit ify () ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġprefs . getString ( KEY _ ACCOUNT _ AV AT AR _ URL , Ġnull ) ĊĊĠĠĠ Ġvar ĠaccountId : ĠInt ? ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ= Ġprefs . edit (). put Int ( KEY _ ACCOUNT _ ID , Ġvalue Ġ?: Ġ- 1 ). commit (). unit ify () ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġprefs . getInt ( KEY _ ACCOUNT _ ID , Ġ- 1 ) ĊĊĠĠĠ Ġvar ĠaccessToken : ĠString ? ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ= Ġprefs . edit (). putString ( KEY _ ACCESS _ TOKEN , Ġvalue ). commit (). unit ify () ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġprefs . getString ( KEY _ ACCESS _ TOKEN , Ġnull ) ĊĊĠĠĠ Ġvar Ġrefresh Token : ĠString ? ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ= Ġprefs . edit (). putString ( KEY _ REFRESH _ TOKEN , Ġvalue ). commit (). unit ify () ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġprefs . getString ( KEY _ REFRESH _ TOKEN , Ġnull ) ĊĊĠĠĠ Ġvar Ġtoken Type : ĠString ? ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ= Ġprefs . edit (). putString ( KEY _ TOKEN _ TYPE , Ġvalue ). commit (). unit ify () ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġprefs . getString ( KEY _ TOKEN _ TYPE , Ġnull ) ĊĊĠĠĠ Ġvar Ġexpires In : ĠInt ? ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ= Ġprefs . edit (). put Int ( KEY _ EXPI RES _ IN , Ġvalue Ġ?: Ġ- 1 ). commit (). unit ify () ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġprefs . getInt ( KEY _ EXPI RES _ IN , Ġ 0 ) ĊĊĠĠĠ Ġvar Ġdid Second Stage Auth : ĠBoolean ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ= Ġprefs . edit (). put Boolean ( KEY _ DID _ SECOND _ STAGE _ AUTH , Ġvalue ). commit (). unit ify () ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġprefs . getBoolean ( KEY _ DID _ SECOND _ STAGE _ AUTH , Ġfalse ) ĊĊĊĠĠĠ Ġval Ġis Authenticated : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġusername Ġ!= Ġnull Ġ&& ĠaccessToken Ġ!= Ġnull Ġ&& Ġdid Second Stage Auth ĊĊĠĠĠ Ġfun Ġlogout () Ġ{ ĊĠĠĠĠĠĠĠ Ġprefs . edit (). clear (). apply () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠNAME Ġ= Ġ" credentials _ storage " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ ACCOUNT _ USERNAME Ġ= Ġ" account _ username " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ ACCOUNT _ AV AT AR _ URL Ġ= Ġ" account _ avatar _ url " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ ACCOUNT _ ID Ġ= Ġ" account _ id " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ ACCESS _ TOKEN Ġ= Ġ" access _ token " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ REFRESH _ TOKEN Ġ= Ġ" refresh _ token " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ TOKEN _ TYPE Ġ= Ġ" token _ type " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ EXPI RES _ IN Ġ= Ġ" expires _ in " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ DID _ SECOND _ STAGE _ AUTH Ġ= Ġ" did _ second _ stage _ auth " ĊĠĠĠ Ġ} Ċ }