Skip to content

Commit

Permalink
Merge pull request #1924 from InsertKoinIO/viewmodel_api
Browse files Browse the repository at this point in the history
Multiplatform ViewModel API
  • Loading branch information
arnaudgiuliani authored Jul 25, 2024
2 parents b805d4e + 0f1d2cb commit 34f3f55
Show file tree
Hide file tree
Showing 47 changed files with 780 additions and 305 deletions.
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
package org.koin.sample.sandbox.di

import org.koin.androidx.fragment.dsl.fragmentOf
import org.koin.androidx.viewmodel.dsl.viewModel
import org.koin.androidx.viewmodel.dsl.viewModelOf
// 4.0 deprecations
//import org.koin.androidx.viewmodel.dsl.viewModel
//import org.koin.androidx.viewmodel.dsl.viewModelOf
import org.koin.androidx.workmanager.dsl.workerOf
import org.koin.core.module.dsl.*
import org.koin.core.module.includes
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import org.koin.core.annotation.KoinInternalApi
import org.koin.core.parameter.ParametersDefinition
import org.koin.core.qualifier.Qualifier
import org.koin.core.scope.Scope
import org.koin.viewmodel.resolveViewModel

@OptIn(KoinInternalApi::class)
// TODO - scope is not used for ViewModel creation. This will fallback to root scope
Expand All @@ -34,4 +35,4 @@ fun <T : ViewModel> resolveViewModelCompat(
qualifier: Qualifier? = null,
scope: Scope,
parameters: ParametersDefinition? = null,
): T = org.koin.androidx.viewmodel.resolveViewModel(vmClass.kotlin, viewModelStore, key, extras, qualifier, scope, parameters)
): T = resolveViewModel(vmClass.kotlin, viewModelStore, key, extras, qualifier, scope, parameters)
1 change: 1 addition & 0 deletions projects/android/koin-android/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ tasks.withType<KotlinCompile>().all {

dependencies {
api(project(":core:koin-core"))
api(project(":core:koin-core-viewmodel"))
api(libs.android.appcompat)
api(libs.android.activity)
api(libs.android.fragment)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ import org.koin.core.qualifier.Qualifier
* @param qualifier - definition qualifier
* @param definition - allow definition override
*/
@Deprecated("Moved ViewModel DSL package. Remove old imports and use org.koin.core.module.dsl.*")
inline fun <reified T : ViewModel> Module.viewModel(
qualifier: Qualifier? = null,
noinline definition: Definition<T>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,9 @@ import org.koin.dsl.ScopeDSL
*
* @param qualifier - definition qualifier
* @param definition - allow definition override
*
*/
@Deprecated("Moved ViewModel DSL package. Remove old imports and use org.koin.core.module.dsl.*")
inline fun <reified T : ViewModel> ScopeDSL.viewModel(
qualifier: Qualifier? = null,
noinline definition: Definition<T>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ import org.koin.dsl.ScopeDSL
*
* @see new - function operator
*/

@Deprecated("Moved ViewModel DSL package. Remove old imports and use org.koin.core.module.dsl.*")
inline fun <reified R : ViewModel> ScopeDSL.viewModelOf(
crossinline constructor: () -> R,
noinline options: DefinitionOptions<R>? = null,
Expand All @@ -52,6 +52,7 @@ inline fun <reified R : ViewModel> ScopeDSL.viewModelOf(
/**
* @see viewModelOf
*/
@Deprecated("Moved ViewModel DSL package. Remove old imports and use org.koin.core.module.dsl.*")
inline fun <reified R : ViewModel, reified T1> ScopeDSL.viewModelOf(
crossinline constructor: (T1) -> R,
noinline options: DefinitionOptions<R>? = null,
Expand All @@ -60,6 +61,7 @@ inline fun <reified R : ViewModel, reified T1> ScopeDSL.viewModelOf(
/**
* @see viewModelOf
*/
@Deprecated("Moved ViewModel DSL package. Remove old imports and use org.koin.core.module.dsl.*")
inline fun <reified R : ViewModel, reified T1, reified T2> ScopeDSL.viewModelOf(
crossinline constructor: (T1, T2) -> R,
noinline options: DefinitionOptions<R>? = null,
Expand All @@ -68,6 +70,7 @@ inline fun <reified R : ViewModel, reified T1, reified T2> ScopeDSL.viewModelOf(
/**
* @see viewModelOf
*/
@Deprecated("Moved ViewModel DSL package. Remove old imports and use org.koin.core.module.dsl.*")
inline fun <reified R : ViewModel, reified T1, reified T2, reified T3> ScopeDSL.viewModelOf(
crossinline constructor: (T1, T2, T3) -> R,
noinline options: DefinitionOptions<R>? = null,
Expand All @@ -76,6 +79,7 @@ inline fun <reified R : ViewModel, reified T1, reified T2, reified T3> ScopeDSL.
/**
* @see viewModelOf
*/
@Deprecated("Moved ViewModel DSL package. Remove old imports and use org.koin.core.module.dsl.*")
inline fun <reified R : ViewModel, reified T1, reified T2, reified T3, reified T4> ScopeDSL.viewModelOf(
crossinline constructor: (T1, T2, T3, T4) -> R,
noinline options: DefinitionOptions<R>? = null,
Expand All @@ -84,6 +88,7 @@ inline fun <reified R : ViewModel, reified T1, reified T2, reified T3, reified T
/**
* @see viewModelOf
*/
@Deprecated("Moved ViewModel DSL package. Remove old imports and use org.koin.core.module.dsl.*")
inline fun <reified R : ViewModel, reified T1, reified T2, reified T3, reified T4, reified T5> ScopeDSL.viewModelOf(
crossinline constructor: (T1, T2, T3, T4, T5) -> R,
noinline options: DefinitionOptions<R>? = null,
Expand All @@ -92,6 +97,7 @@ inline fun <reified R : ViewModel, reified T1, reified T2, reified T3, reified T
/**
* @see viewModelOf
*/
@Deprecated("Moved ViewModel DSL package. Remove old imports and use org.koin.core.module.dsl.*")
inline fun <reified R : ViewModel, reified T1, reified T2, reified T3, reified T4, reified T5, reified T6> ScopeDSL.viewModelOf(
crossinline constructor: (T1, T2, T3, T4, T5, T6) -> R,
noinline options: DefinitionOptions<R>? = null,
Expand All @@ -100,6 +106,7 @@ inline fun <reified R : ViewModel, reified T1, reified T2, reified T3, reified T
/**
* @see viewModelOf
*/
@Deprecated("Moved ViewModel DSL package. Remove old imports and use org.koin.core.module.dsl.*")
inline fun <reified R : ViewModel, reified T1, reified T2, reified T3, reified T4, reified T5, reified T6, reified T7> ScopeDSL.viewModelOf(
crossinline constructor: (T1, T2, T3, T4, T5, T6, T7) -> R,
noinline options: DefinitionOptions<R>? = null,
Expand All @@ -108,6 +115,7 @@ inline fun <reified R : ViewModel, reified T1, reified T2, reified T3, reified T
/**
* @see viewModelOf
*/
@Deprecated("Moved ViewModel DSL package. Remove old imports and use org.koin.core.module.dsl.*")
inline fun <reified R : ViewModel, reified T1, reified T2, reified T3, reified T4, reified T5, reified T6, reified T7, reified T8> ScopeDSL.viewModelOf(
crossinline constructor: (T1, T2, T3, T4, T5, T6, T7, T8) -> R,
noinline options: DefinitionOptions<R>? = null,
Expand All @@ -116,6 +124,7 @@ inline fun <reified R : ViewModel, reified T1, reified T2, reified T3, reified T
/**
* @see viewModelOf
*/
@Deprecated("Moved ViewModel DSL package. Remove old imports and use org.koin.core.module.dsl.*")
inline fun <reified R : ViewModel, reified T1, reified T2, reified T3, reified T4, reified T5, reified T6, reified T7, reified T8, reified T9> ScopeDSL.viewModelOf(
crossinline constructor: (T1, T2, T3, T4, T5, T6, T7, T8, T9) -> R,
noinline options: DefinitionOptions<R>? = null,
Expand All @@ -124,6 +133,7 @@ inline fun <reified R : ViewModel, reified T1, reified T2, reified T3, reified T
/**
* @see viewModelOf
*/
@Deprecated("Moved ViewModel DSL package. Remove old imports and use org.koin.core.module.dsl.*")
inline fun <reified R : ViewModel, reified T1, reified T2, reified T3, reified T4, reified T5, reified T6, reified T7, reified T8, reified T9, reified T10> ScopeDSL.viewModelOf(
crossinline constructor: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) -> R,
noinline options: DefinitionOptions<R>? = null,
Expand All @@ -132,6 +142,7 @@ inline fun <reified R : ViewModel, reified T1, reified T2, reified T3, reified T
/**
* @see viewModelOf
*/
@Deprecated("Moved ViewModel DSL package. Remove old imports and use org.koin.core.module.dsl.*")
inline fun <reified R : ViewModel, reified T1, reified T2, reified T3, reified T4, reified T5, reified T6, reified T7, reified T8, reified T9, reified T10, reified T11> ScopeDSL.viewModelOf(
crossinline constructor: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) -> R,
noinline options: DefinitionOptions<R>? = null,
Expand All @@ -140,6 +151,7 @@ inline fun <reified R : ViewModel, reified T1, reified T2, reified T3, reified T
/**
* @see viewModelOf
*/
@Deprecated("Moved ViewModel DSL package. Remove old imports and use org.koin.core.module.dsl.*")
inline fun <reified R : ViewModel, reified T1, reified T2, reified T3, reified T4, reified T5, reified T6, reified T7, reified T8, reified T9, reified T10, reified T11, reified T12> ScopeDSL.viewModelOf(
crossinline constructor: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) -> R,
noinline options: DefinitionOptions<R>? = null,
Expand All @@ -148,6 +160,7 @@ inline fun <reified R : ViewModel, reified T1, reified T2, reified T3, reified T
/**
* @see viewModelOf
*/
@Deprecated("Moved ViewModel DSL package. Remove old imports and use org.koin.core.module.dsl.*")
inline fun <reified R : ViewModel, reified T1, reified T2, reified T3, reified T4, reified T5, reified T6, reified T7, reified T8, reified T9, reified T10, reified T11, reified T12, reified T13> ScopeDSL.viewModelOf(
crossinline constructor: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) -> R,
noinline options: DefinitionOptions<R>? = null,
Expand All @@ -156,6 +169,7 @@ inline fun <reified R : ViewModel, reified T1, reified T2, reified T3, reified T
/**
* @see viewModelOf
*/
@Deprecated("Moved ViewModel DSL package. Remove old imports and use org.koin.core.module.dsl.*")
inline fun <reified R : ViewModel, reified T1, reified T2, reified T3, reified T4, reified T5, reified T6, reified T7, reified T8, reified T9, reified T10, reified T11, reified T12, reified T13, reified T14> ScopeDSL.viewModelOf(
crossinline constructor: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) -> R,
noinline options: DefinitionOptions<R>? = null,
Expand All @@ -164,6 +178,7 @@ inline fun <reified R : ViewModel, reified T1, reified T2, reified T3, reified T
/**
* @see viewModelOf
*/
@Deprecated("Moved ViewModel DSL package. Remove old imports and use org.koin.core.module.dsl.*")
inline fun <reified R : ViewModel, reified T1, reified T2, reified T3, reified T4, reified T5, reified T6, reified T7, reified T8, reified T9, reified T10, reified T11, reified T12, reified T13, reified T14, reified T15> ScopeDSL.viewModelOf(
crossinline constructor: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) -> R,
noinline options: DefinitionOptions<R>? = null,
Expand All @@ -172,6 +187,7 @@ inline fun <reified R : ViewModel, reified T1, reified T2, reified T3, reified T
/**
* @see viewModelOf
*/
@Deprecated("Moved ViewModel DSL package. Remove old imports and use org.koin.core.module.dsl.*")
inline fun <reified R : ViewModel, reified T1, reified T2, reified T3, reified T4, reified T5, reified T6, reified T7, reified T8, reified T9, reified T10, reified T11, reified T12, reified T13, reified T14, reified T15, reified T16> ScopeDSL.viewModelOf(
crossinline constructor: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) -> R,
noinline options: DefinitionOptions<R>? = null,
Expand All @@ -180,6 +196,7 @@ inline fun <reified R : ViewModel, reified T1, reified T2, reified T3, reified T
/**
* @see viewModelOf
*/
@Deprecated("Moved ViewModel DSL package. Remove old imports and use org.koin.core.module.dsl.*")
inline fun <reified R : ViewModel, reified T1, reified T2, reified T3, reified T4, reified T5, reified T6, reified T7, reified T8, reified T9, reified T10, reified T11, reified T12, reified T13, reified T14, reified T15, reified T16, reified T17> ScopeDSL.viewModelOf(
crossinline constructor: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) -> R,
noinline options: DefinitionOptions<R>? = null,
Expand All @@ -188,6 +205,7 @@ inline fun <reified R : ViewModel, reified T1, reified T2, reified T3, reified T
/**
* @see viewModelOf
*/
@Deprecated("Moved ViewModel DSL package. Remove old imports and use org.koin.core.module.dsl.*")
inline fun <reified R : ViewModel, reified T1, reified T2, reified T3, reified T4, reified T5, reified T6, reified T7, reified T8, reified T9, reified T10, reified T11, reified T12, reified T13, reified T14, reified T15, reified T16, reified T17, reified T18> ScopeDSL.viewModelOf(
crossinline constructor: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) -> R,
noinline options: DefinitionOptions<R>? = null,
Expand All @@ -196,6 +214,7 @@ inline fun <reified R : ViewModel, reified T1, reified T2, reified T3, reified T
/**
* @see viewModelOf
*/
@Deprecated("Moved ViewModel DSL package. Remove old imports and use org.koin.core.module.dsl.*")
inline fun <reified R : ViewModel, reified T1, reified T2, reified T3, reified T4, reified T5, reified T6, reified T7, reified T8, reified T9, reified T10, reified T11, reified T12, reified T13, reified T14, reified T15, reified T16, reified T17, reified T18, reified T19> ScopeDSL.viewModelOf(
crossinline constructor: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) -> R,
noinline options: DefinitionOptions<R>? = null,
Expand All @@ -204,6 +223,7 @@ inline fun <reified R : ViewModel, reified T1, reified T2, reified T3, reified T
/**
* @see viewModelOf
*/
@Deprecated("Moved ViewModel DSL package. Remove old imports and use org.koin.core.module.dsl.*")
inline fun <reified R : ViewModel, reified T1, reified T2, reified T3, reified T4, reified T5, reified T6, reified T7, reified T8, reified T9, reified T10, reified T11, reified T12, reified T13, reified T14, reified T15, reified T16, reified T17, reified T18, reified T19, reified T20> ScopeDSL.viewModelOf(
crossinline constructor: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) -> R,
noinline options: DefinitionOptions<R>? = null,
Expand All @@ -212,6 +232,7 @@ inline fun <reified R : ViewModel, reified T1, reified T2, reified T3, reified T
/**
* @see viewModelOf
*/
@Deprecated("Moved ViewModel DSL package. Remove old imports and use org.koin.core.module.dsl.*")
inline fun <reified R : ViewModel, reified T1, reified T2, reified T3, reified T4, reified T5, reified T6, reified T7, reified T8, reified T9, reified T10, reified T11, reified T12, reified T13, reified T14, reified T15, reified T16, reified T17, reified T18, reified T19, reified T20, reified T21> ScopeDSL.viewModelOf(
crossinline constructor: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) -> R,
noinline options: DefinitionOptions<R>? = null,
Expand All @@ -220,6 +241,7 @@ inline fun <reified R : ViewModel, reified T1, reified T2, reified T3, reified T
/**
* @see viewModelOf
*/
@Deprecated("Moved ViewModel DSL package. Remove old imports and use org.koin.core.module.dsl.*")
inline fun <reified R : ViewModel, reified T1, reified T2, reified T3, reified T4, reified T5, reified T6, reified T7, reified T8, reified T9, reified T10, reified T11, reified T12, reified T13, reified T14, reified T15, reified T16, reified T17, reified T18, reified T19, reified T20, reified T21, reified T22> ScopeDSL.viewModelOf(
crossinline constructor: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) -> R,
noinline options: DefinitionOptions<R>? = null,
Expand Down
Loading

0 comments on commit 34f3f55

Please sign in to comment.