package Ġcom . es af irm . android playground . android arch . view model Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . datastore . core . DataStore Ċ import Ġandroidx . datastore . preferences . core . Preferences Ċ import Ġandroidx . datastore . preferences . core . edit Ċ import Ġandroidx . datastore . preferences . core . empty Preferences Ċ import Ġandroidx . datastore . preferences . core . string Preferences Key Ċ import Ġandroidx . datastore . preferences . preferences DataStore Ċ import Ġcom . es af irm . android playground . Play ground App Ċ import Ġkotlinx . coroutines . flow . catch Ċ import Ġkotlinx . coroutines . flow . first Ċ import Ġkotlinx . coroutines . flow . map Ċ Ċ private Ġval ĠContext . data Holder Store : ĠData Store < Preferences > Ġby Ġpreferences DataStore ( name Ġ= Ġ" data _ holder ") Ċ Ċ class ĠData Holder Store ( private Ġval Ġcontext : ĠContext Ġ= ĠPlay ground App . app Context ()) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġstore Ġget () Ġ= Ġcontext . data Holder Store ĊĊĠĠĠ Ġsuspend Ġfun ĠsetData ( key : ĠString , Ġdata : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpref Key Ġ= Ġstring Preferences Key ( key ) ĊĠĠĠĠĠĠĠ Ġstore . edit Ġ{ Ġstorage Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstorage [ pref Key ] Ġ= Ġdata ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun ĠgetData ( key : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpref Key Ġ= Ġstring Preferences Key ( key ) ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġstore . data . catch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġempty Preferences () ĊĠĠĠĠĠĠĠ Ġ}. map Ġ{ Ġpref Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpref [ pref Key ] Ġ?: Ġ"" ĊĠĠĠĠĠĠĠ Ġ}. first () ĊĊĠĠĠĠĠĠĠ Ġ// ĠDelete Ġbefore Ġreturn ĊĠĠĠĠĠĠĠ Ġstore . edit Ġ{ Ġpref Ġ-> Ġpref . remove ( pref Key ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} Ċ }