From c2ec73c70a677ececeb9bc0b8307db9f9cedae41 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Sun, 14 May 2023 16:28:03 +0600 Subject: [PATCH 1/2] start 0.18.4 --- CHANGELOG.md | 2 ++ gradle.properties | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f636f309a12..fcc848da961 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,7 @@ # Changelog +## 0.18.4 + ## 0.18.3 * `Versions`: diff --git a/gradle.properties b/gradle.properties index e76340ebfcc..c5300e441c6 100644 --- a/gradle.properties +++ b/gradle.properties @@ -14,5 +14,5 @@ crypto_js_version=4.1.1 # Project data group=dev.inmo -version=0.18.3 -android_code_version=194 +version=0.18.4 +android_code_version=195 From 999c8327bd20756e70e316399740a65c467e360d Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Sun, 14 May 2023 16:36:24 +0600 Subject: [PATCH 2/2] lazyInject --- CHANGELOG.md | 3 +++ koin/src/jvmMain/kotlin/LazyInject.kt | 27 +++++++++++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 koin/src/jvmMain/kotlin/LazyInject.kt diff --git a/CHANGELOG.md b/CHANGELOG.md index fcc848da961..fc0af043fba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,9 @@ ## 0.18.4 +* `Koin`: + * New extension `lazyInject` + ## 0.18.3 * `Versions`: diff --git a/koin/src/jvmMain/kotlin/LazyInject.kt b/koin/src/jvmMain/kotlin/LazyInject.kt new file mode 100644 index 00000000000..7564b646ad2 --- /dev/null +++ b/koin/src/jvmMain/kotlin/LazyInject.kt @@ -0,0 +1,27 @@ +package dev.inmo.micro_utils.koin + +import org.koin.core.parameter.ParametersDefinition +import org.koin.core.qualifier.Qualifier +import org.koin.java.KoinJavaComponent +import kotlin.reflect.KClass + +fun lazyInject( + kClassFactory: () -> KClass<*>, + qualifier: Qualifier? = null, + parameters: ParametersDefinition? = null +): Lazy { + return lazy(LazyThreadSafetyMode.SYNCHRONIZED) { + KoinJavaComponent.get(kClassFactory().java, qualifier, parameters) + } +} + +fun lazyInject( + kClass: KClass<*>, + qualifier: Qualifier? = null, + parameters: ParametersDefinition? = null +): Lazy = lazyInject({ kClass }, qualifier, parameters) + +inline fun lazyInject( + qualifier: Qualifier? = null, + noinline parameters: ParametersDefinition? = null +): Lazy = lazyInject(T::class, qualifier, parameters)