mirror of
https://github.com/fromchat-messenger/app.git
synced 2026-09-22 19:15:05 +03:00
Improve settings interface, move iOS project
This commit is contained in:
+18
-36
@@ -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
|
||||
}
|
||||
}
|
||||
@@ -8,26 +8,26 @@ interface Settings {
|
||||
inline operator fun invoke() = settings
|
||||
}
|
||||
|
||||
fun putString(key: String, value: String)
|
||||
fun getString(key: String, default: String = ""): String
|
||||
suspend fun putString(key: String, value: String)
|
||||
suspend fun getString(key: String, default: String = ""): String
|
||||
|
||||
fun putInt(key: String, value: Int)
|
||||
fun getInt(key: String, default: Int = 0): Int
|
||||
suspend fun putInt(key: String, value: Int)
|
||||
suspend fun getInt(key: String, default: Int = 0): Int
|
||||
|
||||
fun putLong(key: String, value: Long)
|
||||
fun getLong(key: String, default: Long = 0L): Long
|
||||
suspend fun putLong(key: String, value: Long)
|
||||
suspend fun getLong(key: String, default: Long = 0L): Long
|
||||
|
||||
fun putFloat(key: String, value: Float)
|
||||
fun getFloat(key: String, default: Float = 0f): Float
|
||||
suspend fun putFloat(key: String, value: Float)
|
||||
suspend fun getFloat(key: String, default: Float = 0f): Float
|
||||
|
||||
fun putBoolean(key: String, value: Boolean)
|
||||
fun getBoolean(key: String, default: Boolean = false): Boolean
|
||||
suspend fun putBoolean(key: String, value: Boolean)
|
||||
suspend fun getBoolean(key: String, default: Boolean = false): Boolean
|
||||
|
||||
fun putStringSet(key: String, value: Set<String>)
|
||||
fun getStringSet(key: String, default: Set<String> = emptySet()): Set<String>
|
||||
suspend fun putStringSet(key: String, value: Set<String>)
|
||||
suspend fun getStringSet(key: String, default: Set<String> = emptySet()): Set<String>
|
||||
|
||||
fun putStringList(key: String, value: List<String>)
|
||||
fun getStringList(key: String, default: List<String> = emptyList()): List<String>
|
||||
suspend fun putStringList(key: String, value: List<String>)
|
||||
suspend fun getStringList(key: String, default: List<String> = emptyList()): List<String>
|
||||
|
||||
fun remove(key: String)
|
||||
suspend fun remove(key: String)
|
||||
}
|
||||
@@ -6,65 +6,40 @@ import platform.Foundation.NSUserDefaults
|
||||
class IosSettings : Settings {
|
||||
private val defaults: NSUserDefaults = NSUserDefaults.standardUserDefaults
|
||||
|
||||
override fun putString(key: String, value: String) {
|
||||
defaults.setObject(value, key)
|
||||
override suspend fun putString(key: String, value: String) = defaults.setObject(value, key)
|
||||
|
||||
override suspend fun getString(key: String, default: String) = defaults.stringForKey(key) ?: default
|
||||
|
||||
override suspend fun putInt(key: String, value: Int) = defaults.setInteger(value.toLong(), key)
|
||||
|
||||
override suspend fun getInt(key: String, default: Int) = defaults.integerForKey(key).toInt()
|
||||
|
||||
override suspend fun putLong(key: String, value: Long) = defaults.setObject(value, key)
|
||||
|
||||
override suspend fun getLong(key: String, default: Long) = defaults.objectForKey(key) as? Long ?: default
|
||||
|
||||
override suspend fun putFloat(key: String, value: Float) = defaults.setFloat(value, key)
|
||||
|
||||
override suspend fun getFloat(key: String, default: Float) = defaults.floatForKey(key)
|
||||
|
||||
override suspend fun putBoolean(key: String, value: Boolean) = defaults.setBool(value, key)
|
||||
|
||||
override suspend fun getBoolean(key: String, default: Boolean) = defaults.boolForKey(key)
|
||||
|
||||
override suspend fun putStringSet(key: String, value: Set<String>) = defaults.setObject(value.toList(), key)
|
||||
|
||||
override suspend fun getStringSet(key: String, default: Set<String>): Set<String> {
|
||||
return (defaults.objectForKey(key) as? List<*> ?: return default)
|
||||
.filterIsInstance<String>()
|
||||
.toSet()
|
||||
}
|
||||
|
||||
override fun getString(key: String, default: String): String {
|
||||
return defaults.stringForKey(key) ?: default
|
||||
override suspend fun putStringList(key: String, value: List<String>) = defaults.setObject(value, key)
|
||||
|
||||
override suspend fun getStringList(key: String, default: List<String>): List<String> {
|
||||
return (defaults.objectForKey(key) as? List<*> ?: return default)
|
||||
.filterIsInstance<String>()
|
||||
}
|
||||
|
||||
override fun putInt(key: String, value: Int) {
|
||||
defaults.setInteger(value.toLong(), key)
|
||||
}
|
||||
|
||||
override fun getInt(key: String, default: Int): Int {
|
||||
return defaults.integerForKey(key).toInt()
|
||||
}
|
||||
|
||||
override fun putLong(key: String, value: Long) {
|
||||
defaults.setObject(value, key)
|
||||
}
|
||||
|
||||
override fun getLong(key: String, default: Long): Long {
|
||||
return defaults.objectForKey(key) as? Long ?: default
|
||||
}
|
||||
|
||||
override fun putFloat(key: String, value: Float) {
|
||||
defaults.setFloat(value, key)
|
||||
}
|
||||
|
||||
override fun getFloat(key: String, default: Float): Float {
|
||||
return defaults.floatForKey(key)
|
||||
}
|
||||
|
||||
override fun putBoolean(key: String, value: Boolean) {
|
||||
defaults.setBool(value, key)
|
||||
}
|
||||
|
||||
override fun getBoolean(key: String, default: Boolean): Boolean {
|
||||
return defaults.boolForKey(key)
|
||||
}
|
||||
|
||||
override fun putStringSet(key: String, value: Set<String>) {
|
||||
defaults.setObject(value.toList(), key)
|
||||
}
|
||||
|
||||
override fun getStringSet(key: String, default: Set<String>): Set<String> {
|
||||
val list = defaults.objectForKey(key) as? List<*> ?: return default
|
||||
return list.filterIsInstance<String>().toSet()
|
||||
}
|
||||
|
||||
override fun putStringList(key: String, value: List<String>) {
|
||||
defaults.setObject(value, key)
|
||||
}
|
||||
|
||||
override fun getStringList(key: String, default: List<String>): List<String> {
|
||||
val list = defaults.objectForKey(key) as? List<*> ?: return default
|
||||
return list.filterIsInstance<String>()
|
||||
}
|
||||
|
||||
override fun remove(key: String) {
|
||||
defaults.removeObjectForKey(key)
|
||||
}
|
||||
override suspend fun remove(key: String) = defaults.removeObjectForKey(key)
|
||||
}
|
||||
Reference in New Issue
Block a user