This is a repository for the settings module. It observes state changes and notifies the App for visual changes and also changes entries in the local DataStore.
private val dataStore: DataStore<Preferences>
companion object {
val DARK_MODE_KEY = booleanPreferencesKey("dark_mode")
}
fun observeSettings(): Flow<AppSettings> = dataStore.data.map { prefs -> // Observes state changes from App Flow
AppSettings( // Data Class
isDarkMode = prefs[DARK_MODE_KEY] ?: false, // reference using Key
)
}
suspend fun setDarkMode(enabled: Boolean) {
dataStore.edit { it[DARK_MODE_KEY] = enabled } // Update entry
}
data class AppSettings(
val isDarkMode: Boolean = false,
)