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