package Ġdev . b 3 ned ik t . re string . internal . repository . persistent Ċ Ċ import Ġandroid . content . SharedPreferences Ċ import Ġdev . b 3 ned ik t . re string . repository . KeyValue Store Ċ import Ġdev . b 3 ned ik t . re string . internal . repository . serializer . Serializer Ċ Ċ /** Ċ Ġ* Ġ[ KeyValue Store ] Ġwhich Ġstores Ġkey / value Ġpairs Ġin Ġthe Ġshared Ġpreferences Ċ Ġ*/ Ċ internal Ġclass ĠSharedPreferences KeyValue Store < V >( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġshared Preferences : ĠSharedPreferences , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġserializer : ĠSerializer < V , ĠString >, Ċ ) Ġ: ĠKey Value Store < String , ĠV > Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġfind ( key : ĠString ): ĠV ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġshared Preferences . getString ( key , Ġnull ) Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġreturn Ġserializer . deserialize ( value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠfindAll (): ĠMap < out ĠString , ĠV > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġshared Preferences . all . map Values Ġ{ Ġserializer . deserialize ( it . value Ġas ĠString ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsave ( key : ĠString , Ġvalue : ĠV ) Ġ{ ĊĠĠĠĠĠĠĠ Ġshared Preferences . edit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. putString ( key , Ġserializer . serialize ( value )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsave All ( from : ĠMap < out ĠString , ĠV >) Ġ{ ĊĠĠĠĠĠĠĠ Ġshared Preferences . edit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( it . key , Ġserializer . serialize ( it . value )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapply () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdelete ( key : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġshared Preferences . edit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. remove ( key ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdelete All () Ġ{ ĊĠĠĠĠĠĠĠ Ġshared Preferences . edit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply () ĊĠĠĠ Ġ} Ċ }