package Ġio . ug short course . vote me . core . shared prefs Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroidx . core . content . edit Ċ import Ġio . ug short course . vote me . core . DEFAULT _ SHARED _ PRE FS Ċ import Ġio . ug short course . vote me . model . Vote Me User Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠV ote Me Prefs Ġ@ Inject Ġconstructor ( private Ġval Ġcontext : ĠContext ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ USER _ KEY Ġ= Ġ" KEY _ USER _ KEY " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ USER _ NAME Ġ= Ġ" KEY _ USER _ NAME " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ USER _ ORG Ġ= Ġ" KEY _ USER _ ORG " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ USER _ REGION Ġ= Ġ" KEY _ USER _ REGION " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ USER _ TIMESTAMP Ġ= Ġ" KEY _ USER _ TIMESTAMP " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġprefs : ĠSharedPreferences Ġ= Ġcontext . get SharedPreferences ( DEFAULT _ SHARED _ PRE FS , ĠContext . MODE _ PRIVATE ) ĊĊĊĠĠĠ Ġvar Ġis LoggedIn : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġkey : ĠString ? Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġvar Ġorg : ĠString ? Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġvar ĠfullName : ĠString ? Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġvar Ġregion : ĠString ? Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġvar Ġtimestamp : ĠLong Ġ= ĠSystem . currentTimeMillis () ĊĊĠĠĠ Ġvar Ġuser : ĠV ote Me User ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( field Ġ== Ġvalue ) Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Init Ġkeys ĊĠĠĠĠĠĠĠ Ġkey Ġ= Ġprefs . getString ( KEY _ USER _ KEY , Ġ"") ĊĠĠĠĠĠĠĠ ĠfullName Ġ= Ġprefs . getString ( KEY _ USER _ NAME , Ġ"") ĊĠĠĠĠĠĠĠ Ġorg Ġ= Ġprefs . getString ( KEY _ USER _ ORG , Ġ"") ĊĠĠĠĠĠĠĠ Ġregion Ġ= Ġprefs . getString ( KEY _ USER _ REGION , Ġ"") ĊĠĠĠĠĠĠĠ Ġtimestamp Ġ= Ġprefs . getLong ( KEY _ USER _ TIMESTAMP , Ġ 0 L ) ĊĊĠĠĠĠĠĠĠ Ġ// Set Ġlogin Ġstate Ġwhen Ġuser 's Ġkey Ġis Ġnot Ġnull Ġor Ġempty ĊĠĠĠĠĠĠĠ Ġis LoggedIn Ġ= Ġ! key . isNull OrEmpty () ĊĊĠĠĠĠĠĠĠ Ġ// Get Ġkey Ġvalues ĊĠĠĠĠĠĠĠ Ġif Ġ( is LoggedIn ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkey Ġ= Ġprefs . getString ( KEY _ USER _ KEY , Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfullName Ġ= Ġprefs . getString ( KEY _ USER _ NAME , Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġorg Ġ= Ġprefs . getString ( KEY _ USER _ ORG , Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregion Ġ= Ġprefs . getString ( KEY _ USER _ REGION , Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtimestamp Ġ= Ġprefs . getLong ( KEY _ USER _ TIMESTAMP , Ġ 0 L ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Login Ġuser ĊĠĠĠ Ġfun Ġlogin ( user : ĠV ote Me User ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġuser Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġis LoggedIn Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġthis . user Ġ= Ġuser ĊĠĠĠĠĠĠĠ Ġthis . key Ġ= Ġuser . key ĊĠĠĠĠĠĠĠ Ġthis . org Ġ= Ġuser . org ĊĠĠĠĠĠĠĠ Ġthis . region Ġ= Ġuser . region ĊĠĠĠĠĠĠĠ Ġthis . fullName Ġ= Ġuser . fullName ĊĠĠĠĠĠĠĠ Ġthis . timestamp Ġ= Ġuser . timestamp ĊĊĠĠĠĠĠĠĠ Ġprefs . edit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( KEY _ USER _ KEY , Ġuser . key ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( KEY _ USER _ NAME , Ġuser . fullName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( KEY _ USER _ ORG , Ġuser . org ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( KEY _ USER _ REGION , Ġuser . region ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Long ( KEY _ USER _ TIMESTAMP , Ġuser . timestamp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Logout Ġuser ĊĠĠĠ Ġfun Ġlogout () Ġ{ ĊĠĠĠĠĠĠĠ Ġis LoggedIn Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġthis . user Ġ= Ġuser ĊĠĠĠĠĠĠĠ Ġthis . key Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġthis . org Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġthis . region Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġthis . fullName Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġthis . timestamp Ġ= Ġ 0 L ĊĊĠĠĠĠĠĠĠ Ġprefs . edit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( KEY _ USER _ KEY , Ġkey ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( KEY _ USER _ NAME , ĠfullName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( KEY _ USER _ ORG , Ġorg ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( KEY _ USER _ REGION , Ġregion ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Long ( KEY _ USER _ TIMESTAMP , Ġtimestamp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }