fix of #155 and build

This commit is contained in:
InsanusMokrassar 2022-09-14 22:47:57 +06:00
parent 1be1070eb4
commit 3870db1c88
3 changed files with 19 additions and 1 deletions

View File

@ -6,6 +6,9 @@
* Add opportunity to use markers in actors (solution of [#160](https://github.com/InsanusMokrassar/MicroUtils/issues/160))
* `Koin`:
* Module inited :)
* `Repos`:
* `Android`:
* Add typealias `KeyValueSPRepo` and opportunity to create shared preferences `KeyValue` repo with `KeyValueStore(...)` (fix of [#155](https://github.com/InsanusMokrassar/MicroUtils/issues/155))
## 0.12.12

View File

@ -19,5 +19,10 @@ kotlin {
api libs.kt.reflect
}
}
androidMain {
dependencies {
api libs.kt.reflect
}
}
}
}

View File

@ -17,7 +17,7 @@ fun <T : Any> Context.keyValueStore(
): KeyValueRepo<String, T> {
@Suppress("UNCHECKED_CAST")
return cache.getOrPut(name) {
KeyValueStore<T>(this, name, cacheValues)
KeyValueStore<T>(c = this, preferencesName = name, useCache = cacheValues)
} as KeyValueStore<T>
}
@ -149,6 +149,14 @@ class KeyValueStore<T : Any> internal constructor (
_onValueRemovedFlow.emit(it)
}
}
companion object {
operator fun <T : Any> invoke(
context: Context,
name: String = "default",
cacheValues: Boolean = false
) = context.keyValueStore<T>(name, cacheValues)
}
}
inline fun <T : Any> SharedPreferencesKeyValueRepo(
@ -156,3 +164,5 @@ inline fun <T : Any> SharedPreferencesKeyValueRepo(
name: String = "default",
cacheValues: Boolean = false
) = context.keyValueStore<T>(name, cacheValues)
typealias KeyValueSPRepo<T> = KeyValueStore<T>