package Ġcom . k project . simple chat . utils Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . datastore . core . DataStore Ċ import Ġandroidx . datastore . preferences . core .* Ċ import Ġandroidx . datastore . preferences . preferences DataStore Ċ import Ġcom . k project . simple chat . application . My Application Ċ import Ġkotlinx . coroutines . flow . Flow Ċ import Ġkotlinx . coroutines . flow . first Ċ import Ġkotlinx . coroutines . flow . map Ċ import Ġkotlinx . coroutines . run Blocking Ċ Ċ val ĠContext . data Store : ĠData Store < Preferences > Ġby Ġpreferences DataStore ( name Ġ= Ġ" settings ") Ċ Ċ object ĠData Store Utils Ġ{ ĊĊĠĠĠ Ġsuspend Ġfun Ġsave Preference ( key : ĠString , Ġvalue : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġkey Preferences Ġ= Ġstring Preferences Key ( key ) ĊĠĠĠĠĠĠĠ ĠMy Application . context . data Store . edit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit [ key Preferences ] Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġsave Preference ( key : ĠString , Ġvalue : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġkey Preferences Ġ= Ġboolean Preferences Key ( key ) ĊĠĠĠĠĠĠĠ ĠMy Application . context . data Store . edit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit [ key Preferences ] Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġsave Preference ( key : ĠString , Ġvalue : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġkey Preferences Ġ= Ġint Preferences Key ( key ) ĊĠĠĠĠĠĠĠ ĠMy Application . context . data Store . edit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit [ key Preferences ] Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġread Preference ( key : ĠString , ĠdefaultValue : ĠString ): ĠFlow < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġkey Preferences Ġ= Ġstring Preferences Key ( key ) ĊĠĠĠĠĠĠĠ Ġreturn ĠMy Application . context . data Store . data . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit [ key Preferences ] Ġ?: ĠdefaultValue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġread Preference ( key : ĠString , ĠdefaultValue : ĠBoolean ): ĠFlow < Boolean > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġkey Preferences Ġ= Ġboolean Preferences Key ( key ) ĊĠĠĠĠĠĠĠ Ġreturn ĠMy Application . context . data Store . data . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit [ key Preferences ] Ġ?: ĠdefaultValue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġread Preference ( key : ĠString , ĠdefaultValue : ĠInt ): ĠFlow < Int > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġkey Preferences Ġ= Ġint Preferences Key ( key ) ĊĠĠĠĠĠĠĠ Ġreturn ĠMy Application . context . data Store . data . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit [ key Preferences ] Ġ?: ĠdefaultValue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġread Preference Without Flow ( key : ĠString , ĠdefaultValue : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġkey Preferences Ġ= Ġstring Preferences Key ( key ) ĊĠĠĠĠĠĠĠ Ġreturn Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMy Application . context . data Store . data . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ key Preferences ] Ġ?: ĠdefaultValue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. first () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġread Preference Without Flow ( key : ĠString , ĠdefaultValue : ĠBoolean ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġkey Preferences Ġ= Ġboolean Preferences Key ( key ) ĊĠĠĠĠĠĠĠ Ġreturn Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMy Application . context . data Store . data . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ key Preferences ] Ġ?: ĠdefaultValue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. first () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġread Preference Without Flow ( key : ĠString , ĠdefaultValue : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġkey Preferences Ġ= Ġint Preferences Key ( key ) ĊĠĠĠĠĠĠĠ Ġreturn Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMy Application . context . data Store . data . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ key Preferences ] Ġ?: ĠdefaultValue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. first () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ