package Ġcom . ki wi . data . repositories Ċ Ċ import Ġandroidx . datastore . core . DataStore Ċ import Ġandroidx . datastore . preferences . core . Preferences Ċ import Ġandroidx . datastore . preferences . core . edit Ċ import Ġcom . ki wi . data . Preference Keys Ċ import Ġcom . ki wi . data . entities . Device Theme Ċ import Ġdagger . Re usable Ċ import Ġjavax . inject . Inject Ċ import Ġkotlinx . coroutines . flow . Flow Ċ import Ġkotlinx . coroutines . flow . map Ċ Ċ @ Re usable Ċ class ĠPreference Repository Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġdata Store : ĠData Store < Preferences > Ċ ) Ġ{ ĊĊĠĠĠ Ġval Ġdevice Theme : ĠFlow < Device Theme > Ġ= Ġdata Store . data ĊĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġprefs Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprefs [ Preference Keys . KEY _ DEVICE _ THEME ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ ĠDevice Theme . valueOf ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠDevice Theme . SYSTEM ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġdynamic Colors : ĠFlow < Boolean > Ġ= Ġdata Store . data ĊĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġprefs Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprefs [ Preference Keys . KEY _ DYNAMIC _ COLORS ] Ġ?: Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġset Device Theme ( device Theme : ĠDevice Theme ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdata Store . edit Ġ{ Ġprefs Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprefs [ Preference Keys . KEY _ DEVICE _ THEME ] Ġ= Ġdevice Theme . name ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġenable Dynamic Colors ( enable : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdata Store . edit Ġ{ Ġprefs Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprefs [ Preference Keys . KEY _ DYNAMIC _ COLORS ] Ġ= Ġenable ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ