datastore.kt
This commit is contained in:
@@ -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<Preferences> 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<Boolean?> = 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<Boolean?> = 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<Boolean?> = 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<String> = 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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user