package Ġme . gent ie lez aj . w ag wo ord . common Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . SharedPreferences Ċ Ċ class ĠLocal Storage ( val Ġcontext : ĠContext ) Ġ{ ĊĊĠĠĠ Ġval Ġshared Pref : ĠSharedPreferences ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ Ġcontext . get SharedPreferences ( Constants . LocalStorage Keys . SHARED _ PREFER ENCES , ĠContext . MODE _ PRIVATE ) ĊĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT > Ġget ( key : ĠString , Ġdefault : ĠT ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget ( context , Ġkey ) ?: Ġdefault ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT > Ġget ( key : ĠString ): ĠT ? Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( shared Pref Ġ== Ġnull ) Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstring Value Ġ= Ġshared Pref . getString ( key , Ġnull ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( stringValue . isNull OrEmpty ()) Ġreturn Ġnull ; ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( T :: class ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInt :: class Ġ-> Ġreturn Ġstring Value . toInt OrNull () Ġas ? ĠT ?; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBoolean :: class Ġ-> Ġreturn Ġstring Value . to Boolean () Ġas ? ĠT ?; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFloat :: class Ġ-> Ġreturn Ġstring Value . toFloat OrNull () Ġas ? ĠT ?; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠServer Status :: class Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtrim Ġ= Ġstring Value . trim ('" ') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ ĠServer Status . values (). find Ġ{ Ġit . name Ġ== Ġtrim Ġ} Ġas ĠT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif ( stringValue . startsWith ("{ ") Ġ&& Ġstring Value . endsWith (" } ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJSON . parse < T >( stringValue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġstring Value Ġas ? ĠT ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġe ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Or Remove ( key : ĠString , Ġvalue : ĠAny ?) Ġ: ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġif ( value Ġ== Ġnull ) Ġremove ( key ) Ġelse Ġset ( key , Ġvalue ); ĊĊĠĠĠ Ġfun Ġset ( key : ĠString , Ġvalue : ĠAny ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġstring Value Ġ= Ġwhen ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠInt Ġ-> Ġvalue . toString (); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠBoolean Ġ-> Ġvalue . toString (); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFloat Ġ-> Ġvalue . toString (); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠString Ġ-> Ġvalue . toString (); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠJSON . stringify ( value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif ( shared Pref Ġ== Ġnull ) Ġreturn Ġfalse ; ĊĊĠĠĠĠĠĠĠ Ġcommit Ġ{ Ġit . putString ( key , Ġstring Value ) Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove ( key : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( shared Pref Ġ== Ġnull ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġcommit Ġ{ Ġit . remove ( key ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclear All () Ġ= Ġcommit Ġ{ Ġit . clear () Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcommit ( commit Fn Ġ: Ġ( SharedPreferences . Editor ) Ġ-> ĠUnit ) Ġ: ĠUnit Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( shared Pref . edit ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcommit Fn ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . commit () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġinline Ġfun Ġ< re ified ĠT > Ġget ( context : ĠContext , Ġkey : ĠString , Ġdefault : ĠT ): ĠT Ġ= ĠLocal Storage ( context ). get < T >( key , Ġdefault ) ĊĊĠĠĠĠĠĠĠ Ġinline Ġfun Ġ< re ified ĠT > Ġget ( context : ĠContext , Ġkey : ĠString ): ĠT ? Ġ= ĠLocal Storage ( context ). get < T >( key ); ĊĊĠĠĠĠĠĠĠ Ġfun Ġset ( context : ĠContext , Ġkey : ĠString , Ġvalue : ĠAny ?): ĠBoolean Ġ= ĠLocal Storage ( context ). set Or Remove ( key , Ġvalue ); ĊĊĠĠĠĠĠĠĠ Ġinline Ġfun Ġremove ( context : ĠContext , Ġkey : ĠString ): ĠBoolean Ġ= ĠLocal Storage ( context ). remove ( key ) ĊĠĠĠ Ġ} Ċ } ĊĊĊĊ