package Ġcom . t img ort wor st . clean architecture . data . local Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . preference . Preference Manager Ċ import Ġcom . squareup . mos hi . Json Adapter Ċ import Ġcom . squareup . mos hi . M oshi Ċ import Ġcom . squareup . mos hi . Types Ċ import Ġdagger . h ilt . android . qual ifiers . ApplicationContext Ċ import Ġjavax . inject . Inject ĊĊ Ċ class ĠShared Pref Manager Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġ@ ApplicationContext Ġcontext : ĠContext , Ċ ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġshared Preferences Ġ= ĠPreference Manager . getDefault SharedPreferences ( context ) ĊĊĠĠĠ Ġfun Ġget StringValue ( key : ĠString , Ġdefault : ĠString ? Ġ= Ġnull ) Ġ= ĊĠĠĠĠĠĠĠ Ġshared Preferences . getString ( key , Ġdefault ) Ġ?: Ġdefault ĊĊĠĠĠ Ġfun Ġset StringValue ( key : ĠString , Ġvalue : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġshared Preferences . edit (). putString ( key , Ġvalue ). apply () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Long Value ( key : ĠString , Ġdefault : ĠLong Ġ= Ġ 0 L ) Ġ= ĊĠĠĠĠĠĠĠ Ġshared Preferences . getLong ( key , Ġdefault ) ĊĊĠĠĠ Ġfun Ġset Long Value ( key : ĠString , Ġvalue : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġshared Preferences . edit (). put Long ( key , Ġvalue ). apply () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Int Value ( key : ĠString , Ġdefault : ĠInt Ġ= Ġ 0 ) Ġ= ĊĠĠĠĠĠĠĠ Ġshared Preferences . getInt ( key , Ġdefault ) ĊĊĠĠĠ Ġfun Ġset Int Value ( key : ĠString , Ġvalue : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġshared Preferences . edit (). put Int ( key , Ġvalue ). apply () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget BoolValue ( key : ĠString , Ġdefault : ĠBoolean Ġ= Ġfalse ) Ġ= ĊĠĠĠĠĠĠĠ Ġshared Preferences . getBoolean ( key , Ġdefault ) ĊĊĠĠĠ Ġfun Ġset BoolValue ( key : ĠString , Ġvalue : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġshared Preferences . edit (). put Boolean ( key , Ġvalue ). apply () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT > Ġset List ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġm oshi : ĠM oshi , ĊĠĠĠĠĠĠĠ Ġkey : ĠString , ĊĠĠĠĠĠĠĠ Ġlist : ĠList < T >? ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġshared Preferences Ġ= ĠPreference Manager . getDefault SharedPreferences ( context ) ĊĠĠĠĠĠĠĠ Ġval Ġtype Ġ= ĠTypes . new Parameterized Type ( List :: class . java , ĠT :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġadapter : ĠJson Adapter < List < T >> Ġ= Ġm oshi . adapter ( type ) ĊĊĠĠĠĠĠĠĠ Ġshared Preferences . edit (). putString ( key , Ġadapter . toJson ( list )). apply () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT > ĠgetList ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġm oshi : ĠM oshi , ĊĠĠĠĠĠĠĠ Ġkey : ĠString ĊĠĠĠ Ġ): ĠList < T >? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjson Ġ= ĠPreference Manager . getDefault SharedPreferences ( context ). getString ( key , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġtype Ġ= ĠTypes . new Parameterized Type ( List :: class . java , ĠT :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġadapter : ĠJson Adapter < List < T >> Ġ= Ġm oshi . adapter ( type ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġadapter . fromJson ( json ) ĊĠĠĠ Ġ} Ċ } Ċ