Improve settings interface, move iOS project

This commit is contained in:
2025-12-21 13:47:17 +03:00
Unverified
parent b18af36b3e
commit 0c7697aef8
23 changed files with 95 additions and 215 deletions
@@ -1,7 +1,5 @@
package com.pr0gramm3r101.utils.settings
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.floatPreferencesKey
@@ -11,96 +9,81 @@ import androidx.datastore.preferences.core.stringPreferencesKey
import androidx.datastore.preferences.core.stringSetPreferencesKey
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.runBlocking
class AndroidSettings(): Settings {
private val dataStore: DataStore<Preferences>
get() = DataStoreSingleton.dataStore
private val dataStore get() = DataStoreSingleton.dataStore
override fun putString(key: String, value: String) {
runBlocking {
dataStore.edit { preferences ->
preferences[stringPreferencesKey(key)] = value
}
override suspend fun putString(key: String, value: String) {
dataStore.edit { preferences ->
preferences[stringPreferencesKey(key)] = value
}
}
override fun getString(key: String, default: String) = runBlocking {
override suspend fun getString(key: String, default: String) =
dataStore.data.map { preferences ->
preferences[stringPreferencesKey(key)] ?: default
}.first()
}
override fun putInt(key: String, value: Int) = runBlocking {
override suspend fun putInt(key: String, value: Int) {
dataStore.edit { preferences ->
preferences[intPreferencesKey(key)] = value
}
Unit
}
override fun getInt(key: String, default: Int) = runBlocking {
override suspend fun getInt(key: String, default: Int) =
dataStore.data.map { preferences ->
preferences[intPreferencesKey(key)] ?: default
}.first()
}
override fun putLong(key: String, value: Long) = runBlocking {
override suspend fun putLong(key: String, value: Long) {
dataStore.edit { preferences ->
preferences[longPreferencesKey(key)] = value
}
Unit
}
override fun getLong(key: String, default: Long) = runBlocking {
override suspend fun getLong(key: String, default: Long) =
dataStore.data.map { preferences ->
preferences[longPreferencesKey(key)] ?: default
}.first()
}
override fun putFloat(key: String, value: Float) = runBlocking {
override suspend fun putFloat(key: String, value: Float) {
dataStore.edit { preferences ->
preferences[floatPreferencesKey(key)] = value
}
Unit
}
override fun getFloat(key: String, default: Float) = runBlocking {
override suspend fun getFloat(key: String, default: Float) =
dataStore.data.map { preferences ->
preferences[floatPreferencesKey(key)] ?: default
}.first()
}
override fun putBoolean(key: String, value: Boolean) = runBlocking {
override suspend fun putBoolean(key: String, value: Boolean) {
dataStore.edit { preferences ->
preferences[booleanPreferencesKey(key)] = value
}
Unit
}
override fun getBoolean(key: String, default: Boolean) = runBlocking {
override suspend fun getBoolean(key: String, default: Boolean) =
dataStore.data.map { preferences ->
preferences[booleanPreferencesKey(key)] ?: default
}.first()
}
override fun putStringSet(key: String, value: Set<String>) = runBlocking {
override suspend fun putStringSet(key: String, value: Set<String>) {
dataStore.edit { preferences ->
preferences[stringSetPreferencesKey(key)] = value
}
Unit
}
override fun getStringSet(key: String, default: Set<String>) = runBlocking {
override suspend fun getStringSet(key: String, default: Set<String>) =
dataStore.data.map { preferences ->
preferences[stringSetPreferencesKey(key)] ?: default
}.first()
}
override fun putStringList(key: String, value: List<String>) = putStringSet(key, value.toSet())
override suspend fun putStringList(key: String, value: List<String>) = putStringSet(key, value.toSet())
override fun getStringList(key: String, default: List<String>) = getStringSet(key, default.toSet()).toList()
override suspend fun getStringList(key: String, default: List<String>) = getStringSet(key, default.toSet()).toList()
override fun remove(key: String) = runBlocking {
override suspend fun remove(key: String) {
dataStore.edit { preferences ->
preferences.remove(stringPreferencesKey(key))
preferences.remove(intPreferencesKey(key))
@@ -109,6 +92,5 @@ class AndroidSettings(): Settings {
preferences.remove(booleanPreferencesKey(key))
preferences.remove(stringSetPreferencesKey(key))
}
Unit
}
}