Kamil K
07/07/2023, 8:24 AM"org.koin:koin-core:2.0.1"
"org.koin:koin-android:2.0.1"
"org.koin:koin-test:2.0.1"
"org.koin:koin-androidx-viewmodel:2.0.1"
"org.koin:koin-androidx-ext:2.0.1"
Will be replaced by
val koinVersion = "3.0.1"
"io.insert-koin:koin-core-jvm:$koinVersion"
"io.insert-koin:koin-test:$koinVersion"
"io.insert-koin:koin-android:$koinVersion"
And following cases to rework
Properties - properties(map<String, String>)
This has changed from accepting Map<String, Any>
to Map<String, String>
but saving property still takes Any
and there is getProperty<T>(): T
.
So is this just leftovers API's and it's discouraged to save other types than String
or there this method has been renamed and I can't find it?
I can solve it with extension function but I want to know if there is something existing.
@OptIn(KoinInternalApi::class)
fun KoinApplication.anyProperties(values: Map<String, Any>): KoinApplication {
koin.propertyRegistry.saveProperties(values)
return this
}
SharedViewModels
How do I get sharedVm from Activity now?
Used to be val viewModel by lazy { getSharedViewModel<AnViewModel>(from = { requireActivity() }) }
Should it be now private val viewModel by activityViewModels<AnViewModel>()
?
I saw issue https://github.com/InsertKoinIO/koin/issues/785 that from
is renamed to owner
but this is not available for fragment.
BeenRegistry - getDefinition()
Got a singleton class in which I insatiate a viewModel
val koinApplication = GlobalContext.get()
anViewModel = koinApplication.koin.getByClassName(AnManagerViewModel::class)
private inline fun <reified T> Koin.getByClassName(className : KClass<*>) : T? {
val definition = this.rootScope.beanRegistry.getDefinition(className)
if(definition != null){
return this.get<T>(definition.qualifier)
}
return null
}
How can I achieve it in koin v3?
Can I get the definition by getScope(ScopeDefinition.ROOT_SCOPE_ID)._scopeDefinition.definitions.find { it.qualifier?.value == className.qualifiedName }
?
Thanks for help!arnaud.giuliani
07/10/2023, 4:27 PMKamil K
07/10/2023, 5:14 PMarnaud.giuliani
07/28/2023, 1:08 PMarnaud.giuliani
07/28/2023, 1:10 PMarnaud.giuliani
07/28/2023, 1:11 PMactivityViewModel
arnaud.giuliani
07/28/2023, 1:12 PMfun <T> get(
clazz: KClass<*>,
qualifier: Qualifier? = null,
parameters: ParametersDefinition? = null
)
arnaud.giuliani
07/28/2023, 1:12 PMarnaud.giuliani
07/28/2023, 1:13 PMgetScope(ScopeDefinition.ROOT_SCOPE_ID)._scopeDefinition.definitions.find { it.qualifier?.value == className.qualifiedName }seems that you try to resolve a definition, with qualifier used in className
arnaud.giuliani
07/28/2023, 1:13 PMarnaud.giuliani
07/28/2023, 1:14 PM