Merge pull request from InsanusMokrassar/0.16.9

0.16.9
This commit is contained in:
InsanusMokrassar 2023-02-13 16:09:55 +06:00 committed by GitHub
commit 8b4b4a5eca
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 32 additions and 14 deletions

@ -1,5 +1,15 @@
# Changelog # Changelog
## 0.16.9
* `Versions`:
* `Koin`: `3.2.2` -> `3.3.2`
* `AppCompat`: `1.5.1` -> `1.6.0`
* `Ktor`:
* `Client`
* `HttpResponse.bodyOrNull` now retrieve callback to check if body should be received or null
* New extension `HttpResponse.bodyOrNullOnNoContent`
## 0.16.8 ## 0.16.8
* `Versions`: * `Versions`:

@ -14,5 +14,5 @@ crypto_js_version=4.1.1
# Project data # Project data
group=dev.inmo group=dev.inmo
version=0.16.8 version=0.16.9
android_code_version=176 android_code_version=177

@ -17,21 +17,21 @@ ktor = "2.2.3"
gh-release = "2.4.1" gh-release = "2.4.1"
koin = "3.2.2" koin = "3.3.2"
android-gradle = "7.3.0" android-gradle = "7.3.0"
dexcount = "3.1.0" dexcount = "3.1.0"
android-coreKtx = "1.9.0" android-coreKtx = "1.9.0"
android-recyclerView = "1.2.1" android-recyclerView = "1.2.1"
android-appCompat = "1.5.1" android-appCompat = "1.6.0"
android-fragment = "1.5.5" android-fragment = "1.5.5"
android-espresso = "3.4.0" android-espresso = "3.4.0"
android-test = "1.1.3" android-test = "1.1.3"
android-props-minSdk = "21" android-props-minSdk = "21"
android-props-compileSdk = "33" android-props-compileSdk = "33"
android-props-buildTools = "33.0.0" android-props-buildTools = "33.0.1"
[libraries] [libraries]

@ -1,6 +1,7 @@
package dev.inmo.micro_utils.koin package dev.inmo.micro_utils.koin
import org.koin.core.definition.Definition import org.koin.core.definition.Definition
import org.koin.core.definition.KoinDefinition
import org.koin.core.instance.InstanceFactory import org.koin.core.instance.InstanceFactory
import org.koin.core.module.Module import org.koin.core.module.Module
import org.koin.core.qualifier.Qualifier import org.koin.core.qualifier.Qualifier
@ -13,7 +14,7 @@ inline fun <reified T : Any> Module.factoryWithBinds(
qualifier: Qualifier? = null, qualifier: Qualifier? = null,
bindFilter: (KClass<*>) -> Boolean = { true }, bindFilter: (KClass<*>) -> Boolean = { true },
noinline definition: Definition<T> noinline definition: Definition<T>
): Pair<Module, InstanceFactory<*>> { ): KoinDefinition<*> {
return factory(qualifier, definition) binds (T::class.allSuperclasses.filter(bindFilter).toTypedArray()) return factory(qualifier, definition) binds (T::class.allSuperclasses.filter(bindFilter).toTypedArray())
} }
@ -21,7 +22,7 @@ inline fun <reified T : Any> Module.factoryWithBinds(
qualifier: String, qualifier: String,
bindFilter: (KClass<*>) -> Boolean = { true }, bindFilter: (KClass<*>) -> Boolean = { true },
noinline definition: Definition<T> noinline definition: Definition<T>
): Pair<Module, InstanceFactory<*>> { ): KoinDefinition<*> {
return factory(qualifier, definition) binds (T::class.allSuperclasses.filter(bindFilter).toTypedArray()) return factory(qualifier, definition) binds (T::class.allSuperclasses.filter(bindFilter).toTypedArray())
} }

@ -1,6 +1,7 @@
package dev.inmo.micro_utils.koin package dev.inmo.micro_utils.koin
import org.koin.core.definition.Definition import org.koin.core.definition.Definition
import org.koin.core.definition.KoinDefinition
import org.koin.core.instance.InstanceFactory import org.koin.core.instance.InstanceFactory
import org.koin.core.module.Module import org.koin.core.module.Module
import kotlin.reflect.KClass import kotlin.reflect.KClass
@ -8,6 +9,6 @@ import kotlin.reflect.KClass
inline fun <reified T : Any> Module.factoryWithRandomQualifierAndBinds( inline fun <reified T : Any> Module.factoryWithRandomQualifierAndBinds(
bindFilter: (KClass<*>) -> Boolean = { true }, bindFilter: (KClass<*>) -> Boolean = { true },
noinline definition: Definition<T> noinline definition: Definition<T>
): Pair<Module, InstanceFactory<*>> { ): KoinDefinition<*> {
return factoryWithBinds(RandomQualifier(), bindFilter, definition) return factoryWithBinds(RandomQualifier(), bindFilter, definition)
} }

@ -1,6 +1,7 @@
package dev.inmo.micro_utils.koin package dev.inmo.micro_utils.koin
import org.koin.core.definition.Definition import org.koin.core.definition.Definition
import org.koin.core.definition.KoinDefinition
import org.koin.core.instance.InstanceFactory import org.koin.core.instance.InstanceFactory
import org.koin.core.module.Module import org.koin.core.module.Module
import org.koin.core.qualifier.Qualifier import org.koin.core.qualifier.Qualifier
@ -14,7 +15,7 @@ inline fun <reified T : Any> Module.singleWithBinds(
createdAtStart: Boolean = false, createdAtStart: Boolean = false,
bindFilter: (KClass<*>) -> Boolean = { true }, bindFilter: (KClass<*>) -> Boolean = { true },
noinline definition: Definition<T> noinline definition: Definition<T>
): Pair<Module, InstanceFactory<*>> { ): KoinDefinition<*> {
return single(qualifier, createdAtStart, definition) binds (T::class.allSuperclasses.filter(bindFilter).toTypedArray()) return single(qualifier, createdAtStart, definition) binds (T::class.allSuperclasses.filter(bindFilter).toTypedArray())
} }
@ -24,7 +25,7 @@ inline fun <reified T : Any> Module.singleWithBinds(
createdAtStart: Boolean = false, createdAtStart: Boolean = false,
bindFilter: (KClass<*>) -> Boolean = { true }, bindFilter: (KClass<*>) -> Boolean = { true },
noinline definition: Definition<T> noinline definition: Definition<T>
): Pair<Module, InstanceFactory<*>> { ): KoinDefinition<*> {
return single(qualifier, createdAtStart, definition) binds (T::class.allSuperclasses.filter(bindFilter).toTypedArray()) return single(qualifier, createdAtStart, definition) binds (T::class.allSuperclasses.filter(bindFilter).toTypedArray())
} }

@ -1,6 +1,7 @@
package dev.inmo.micro_utils.koin package dev.inmo.micro_utils.koin
import org.koin.core.definition.Definition import org.koin.core.definition.Definition
import org.koin.core.definition.KoinDefinition
import org.koin.core.instance.InstanceFactory import org.koin.core.instance.InstanceFactory
import org.koin.core.module.Module import org.koin.core.module.Module
import kotlin.reflect.KClass import kotlin.reflect.KClass
@ -9,6 +10,6 @@ inline fun <reified T : Any> Module.singleWithRandomQualifierAndBinds(
createdAtStart: Boolean = false, createdAtStart: Boolean = false,
bindFilter: (KClass<*>) -> Boolean = { true }, bindFilter: (KClass<*>) -> Boolean = { true },
noinline definition: Definition<T> noinline definition: Definition<T>
): Pair<Module, InstanceFactory<*>> { ): KoinDefinition<*> {
return singleWithBinds(RandomQualifier(), createdAtStart, bindFilter, definition) return singleWithBinds(RandomQualifier(), createdAtStart, bindFilter, definition)
} }

@ -4,6 +4,10 @@ import io.ktor.client.call.body
import io.ktor.client.statement.HttpResponse import io.ktor.client.statement.HttpResponse
import io.ktor.http.HttpStatusCode import io.ktor.http.HttpStatusCode
suspend inline fun <reified T : Any> HttpResponse.bodyOrNull() = takeIf { suspend inline fun <reified T : Any> HttpResponse.bodyOrNull(
status == HttpStatusCode.OK statusFilter: (HttpResponse) -> Boolean = { it.status == HttpStatusCode.OK }
} ?.body<T>() ) = takeIf(statusFilter) ?.body<T>()
suspend inline fun <reified T : Any> HttpResponse.bodyOrNullOnNoContent() = bodyOrNull<T> {
it.status != HttpStatusCode.NoContent
}