package Ġme . ec he ung . mo emo ek yun . client . auth Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . preference . Preference Manager Ċ import Ġjava . lang . ref . Weak Reference Ċ import Ġkotlin . math . round ToInt Ċ Ċ /** Ċ Ġ* ĠHelper Ġfor Ġhandling Ġauthorization - related Ġtasks . ĠHel ps Ġwith Ġthe Ġstorage Ġof Ġthe Ġauth Ġtoken Ġand Ċ Ġ* Ġactions Ġrequiring Ġit . Ċ Ġ*/ Ċ class ĠAuth Token Util ( context : ĠContext ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġcontext Ref : ĠWeak Reference < Context > Ġ= ĠWeak Reference ( context ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠChecks Ġif Ġthe Ġuser Ġhas Ġpreviously Ġlogged Ġin Ġ( i . e . Ġa Ġtoken Ġis Ġstored ). ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠWhether Ġthe Ġuser Ġis Ġauthenticated . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġis Authenticated : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġauth Token Ġ!= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠF etches Ġthe Ġstored Ġauth Ġtoken Ġwith Ġthe Ġ" Bearer " Ġprefix . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġuser 's Ġauth Ġtoken Ġwith Ġthe Ġ" Bearer " Ġprefix . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġauth Token With Prefix : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġget Prefix ed Token ( auth Token ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠStores Ġthe Ġauth Ġtoken , Ġalso Ġtracking Ġthe Ġtime Ġthat Ġit Ġwas Ġstored . ĊĠĠĠĠ Ġ* ĠAndroid Ġcontext Ġto Ġfetch ĠSharedPreferences . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġtoken ĠThe Ġauth Ġtoken Ġto Ġstore , Ġprovided Ġvia Ġthe ĠLIST EN . moe ĠAPI . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġauth Token : ĠString ? ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġcontext Ref . get () Ġ?: Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠPreference Manager . getDefault SharedPreferences ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. getString ( USER _ TOKEN , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset ( token ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġcontext Ref . get () Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠPreference Manager . getDefault SharedPreferences ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. edit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. putString ( USER _ TOKEN , Ġtoken ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. put Long ( LAST _ AUTH , ĠSystem . currentTimeMillis () Ġ/ Ġ 1 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġtemporarily Ġtracking Ġwhether Ġwe 've Ġlogged Ġin Ġusing Ġthe Ġnew ĠAPI Ġor Ġnot Ġto Ġforce ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġusers Ġauthenticated Ġwith Ġthe Ġv 4 ĠAPI Ġto Ġlog Ġout ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPreference Manager . getDefault SharedPreferences ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. edit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. put Boolean ( IS _ V 5 _ AUTH ED , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠStores Ġthe Ġtemporary Ġauth Ġtoken Ġfor ĠM FA . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġtoken ĠThe Ġauth Ġtoken Ġfor ĠM FA Ġto Ġstore , Ġprovided Ġvia Ġthe ĠLIST EN . moe ĠAPI . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġm fa Token : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠF etches Ġthe Ġstored Ġtemporary ĠM FA Ġauth Ġtoken Ġwith Ġthe Ġ" Bearer " Ġprefix . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġtemporary ĠM FA Ġauth Ġtoken Ġwith Ġthe Ġ" Bearer " Ġprefix . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġm fa AuthToken With Prefix : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġget Prefix ed Token ( m fa Token ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġtime Ġin Ġseconds Ġsince Ġthe Ġstored Ġauth Ġtoken Ġwas Ġstored . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġtoken Age : ĠLong ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġcontext Ref . get () Ġ?: Ġreturn Ġ 0 L ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠPreference Manager . getDefault SharedPreferences ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. getLong ( LAST _ AUTH , Ġ 0 L ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠChecks Ġhow Ġold Ġthe Ġstored Ġauth Ġtoken Ġis . ĠIf Ġit 's Ġolder Ġthan Ġ 2 8 Ġdays , Ġit Ġbecomes Ġinvalid ated . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠWhether Ġthe Ġtoken Ġis Ġstill Ġvalid . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcheck AuthToken Validity (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! is Authenticated ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠCheck Ġtoken Ġis Ġvalid Ġ( max Ġ 2 8 Ġdays ) ĊĠĠĠĠĠĠĠ Ġval Ġlast Auth Ġ= Ġtoken Age ĊĠĠĠĠĠĠĠ Ġif Ġ((( System . currentTimeMillis () Ġ/ Ġ 1 0 0 0 Ġ- Ġlast Auth ) Ġ/ Ġ 8 6 4 0 0 . 0 ). round ToInt () Ġ>= Ġ 2 8 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclear AuthToken () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġforce Ġlog Ġout Ġv 4 Ġusers Ġif Ġswitched Ġto Ġv 5 ĠAPI ĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġcontext Ref . get () ĊĠĠĠĠĠĠĠ Ġif Ġ( context Ġ== Ġnull Ġ|| Ġ! Preference Manager . getDefault SharedPreferences ( context ). getBoolean ( IS _ V 5 _ AUTH ED , Ġfalse )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclear AuthToken () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRemoves Ġthe Ġstored Ġauth Ġtoken . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġclear AuthToken () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġcontext Ref . get () Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ ĠPreference Manager . getDefault SharedPreferences ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. edit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. putString ( USER _ TOKEN , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. put Long ( LAST _ AUTH , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRemoves Ġthe Ġstored Ġtemporary ĠM FA Ġauth Ġtoken . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġclear M fa AuthToken () Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . m fa Token Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Prefix ed Token ( token : ĠString ?): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" Bearer Ġ$ token " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠUSER _ TOKEN Ġ= Ġ" user _ token " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠLAST _ AUTH Ġ= Ġ" last _ auth " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠIS _ V 5 _ AUTH ED Ġ= Ġ" v 5 _ aut hed " ĊĠĠĠ Ġ} Ċ } Ċ