From a9e548db838d427a3fc9914b39001ff0961da039 Mon Sep 17 00:00:00 2001 From: sathwikcs <85106054+sathwikcs@users.noreply.github.com> Date: Wed, 16 Oct 2024 17:52:37 +0530 Subject: [PATCH] datastore.kt --- .../screens/settings/data/datastore.kt | 83 +++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 app/src/main/java/in/sminnovations/attendanceapp/screens/settings/data/datastore.kt diff --git a/app/src/main/java/in/sminnovations/attendanceapp/screens/settings/data/datastore.kt b/app/src/main/java/in/sminnovations/attendanceapp/screens/settings/data/datastore.kt new file mode 100644 index 0000000..d63eca8 --- /dev/null +++ b/app/src/main/java/in/sminnovations/attendanceapp/screens/settings/data/datastore.kt @@ -0,0 +1,83 @@ +package `in`.sminnovations.attendanceapp.screens.settings.data + +import android.content.Context +import androidx.datastore.core.DataStore +import androidx.datastore.preferences.core.Preferences +import androidx.datastore.preferences.core.booleanPreferencesKey +import androidx.datastore.preferences.core.edit +import androidx.datastore.preferences.core.stringPreferencesKey +import androidx.datastore.preferences.preferencesDataStore +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.map + + +class SettingsData(private val context: Context) { + + companion object { + private val Context.dataStore: DataStore by preferencesDataStore("Settings") + val DYNAMIC_THEME_KEY = booleanPreferencesKey("dynamic_theme") + val BLACK_THEME_KEY = booleanPreferencesKey("black_theme") + val THEME_MODE_KEY = stringPreferencesKey("app_theme") + val DEV_MODE_TOGGLE_KEY = booleanPreferencesKey("dev_mode_toggle") + } + + + + val getDevModeToggle: Flow = context.dataStore.data + .map { preferences -> + preferences[DEV_MODE_TOGGLE_KEY] ?: false + } + + suspend fun setDevMode(mode: Boolean) { + context.dataStore.edit { preferences -> + preferences[DEV_MODE_TOGGLE_KEY] = mode + } + } + + + + + val getDynamicColorThemeValue: Flow = context.dataStore.data + .map { preferences -> + preferences[DYNAMIC_THEME_KEY] ?: true + } + + suspend fun setDynamicColorThemeValue(value: Boolean) { + context.dataStore.edit { preferences -> + preferences[DYNAMIC_THEME_KEY] = value + } + } + + + + + + + val getBlackThemeValue: Flow = context.dataStore.data + .map { preferences -> + preferences[BLACK_THEME_KEY] ?: false + } + + suspend fun setBlackThemeValue(value: Boolean) { + context.dataStore.edit { preferences -> + preferences[BLACK_THEME_KEY] = value + } + } + + + + + + val getThemeMode: Flow = context.dataStore.data + .map { preferences -> + preferences[THEME_MODE_KEY] ?: "System default" + } + + suspend fun saveThemeMode(theme: String) { + context.dataStore.edit { preferences -> + preferences[THEME_MODE_KEY] = theme + } + } + + +}