diff --git a/projects/decompose/koin-decompose/src/commonMain/kotlin/org/koin/decompose/ComponentContextExt.kt b/projects/decompose/koin-decompose/src/commonMain/kotlin/org/koin/decompose/ComponentContextExt.kt index 3687b7245..cb2cf02f3 100644 --- a/projects/decompose/koin-decompose/src/commonMain/kotlin/org/koin/decompose/ComponentContextExt.kt +++ b/projects/decompose/koin-decompose/src/commonMain/kotlin/org/koin/decompose/ComponentContextExt.kt @@ -1,6 +1,7 @@ package org.koin.decompose import com.arkivanov.essenty.lifecycle.doOnDestroy +import org.koin.core.annotation.KoinExperimentalAPI import org.koin.core.component.getScopeId import org.koin.core.component.getScopeName import org.koin.core.scope.Scope @@ -10,14 +11,17 @@ import org.koin.core.scope.ScopeCallback * Create Scope for Component. * Doesn't link to parent component's Scope */ +@KoinExperimentalAPI fun DecomposeScopeComponent.createComponentScope() = getKoin().getScopeOrNull(getScopeId()) ?: createScopeForCurrentLifecycle() /** * Provide scope tied to Component */ +@KoinExperimentalAPI fun DecomposeScopeComponent.componentScope() = lazy { createComponentScope() } +@OptIn(KoinExperimentalAPI::class) private fun DecomposeScopeComponent.createScopeForCurrentLifecycle(): Scope { val scope = getKoin().createScope(getScopeId(), getScopeName(), this) scope.registerCallback( diff --git a/projects/decompose/koin-decompose/src/commonMain/kotlin/org/koin/decompose/DecomposeScopeComponent.kt b/projects/decompose/koin-decompose/src/commonMain/kotlin/org/koin/decompose/DecomposeScopeComponent.kt index da5ffe54d..3a1e2dd99 100644 --- a/projects/decompose/koin-decompose/src/commonMain/kotlin/org/koin/decompose/DecomposeScopeComponent.kt +++ b/projects/decompose/koin-decompose/src/commonMain/kotlin/org/koin/decompose/DecomposeScopeComponent.kt @@ -1,12 +1,14 @@ package org.koin.decompose import com.arkivanov.decompose.ComponentContext +import org.koin.core.annotation.KoinExperimentalAPI import org.koin.core.component.KoinScopeComponent import org.koin.core.scope.Scope /** * Decompose Component that can handle a Koin Scope */ +@KoinExperimentalAPI interface DecomposeScopeComponent : KoinScopeComponent, ComponentContext { /**