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
@@ -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)
}