Initial commit: rosetta-android-prime
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
package com.rosetta.messenger.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.preferencesDataStore
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.flow.map
|
||||
|
||||
private val Context.dataStore: DataStore<Preferences> by preferencesDataStore(name = "rosetta_preferences")
|
||||
|
||||
class PreferencesManager(private val context: Context) {
|
||||
|
||||
companion object {
|
||||
val HAS_SEEN_ONBOARDING = booleanPreferencesKey("has_seen_onboarding")
|
||||
val IS_DARK_THEME = booleanPreferencesKey("is_dark_theme")
|
||||
}
|
||||
|
||||
val hasSeenOnboarding: Flow<Boolean> = context.dataStore.data
|
||||
.map { preferences ->
|
||||
preferences[HAS_SEEN_ONBOARDING] ?: false
|
||||
}
|
||||
|
||||
val isDarkTheme: Flow<Boolean> = context.dataStore.data
|
||||
.map { preferences ->
|
||||
preferences[IS_DARK_THEME] ?: true // Default to dark theme like Telegram
|
||||
}
|
||||
|
||||
suspend fun setHasSeenOnboarding(value: Boolean) {
|
||||
context.dataStore.edit { preferences ->
|
||||
preferences[HAS_SEEN_ONBOARDING] = value
|
||||
}
|
||||
}
|
||||
|
||||
suspend fun setDarkTheme(value: Boolean) {
|
||||
context.dataStore.edit { preferences ->
|
||||
preferences[IS_DARK_THEME] = value
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user