Skip to content

Commit

Permalink
Merge pull request #1953 from InsertKoinIO/split_vm_api
Browse files Browse the repository at this point in the history
Split VM / Nav API - Retrograde to composeNavigation = "2.8.0-alpha02"
  • Loading branch information
arnaudgiuliani authored Aug 27, 2024
2 parents 57ba072 + 33155d3 commit 5ca831e
Show file tree
Hide file tree
Showing 13 changed files with 8,736 additions and 25 deletions.
2 changes: 2 additions & 0 deletions projects/bom/koin-bom/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ dependencies {
api(project(":core:koin-core"))
api(project(":core:koin-core-coroutines"))
api(project(":core:koin-core-viewmodel"))
api(project(":core:koin-core-viewmodel-navigation"))
api(project(":core:koin-test"))
api(project(":core:koin-test-junit4"))
api(project(":core:koin-test-junit5"))
Expand All @@ -28,6 +29,7 @@ dependencies {

api(project(":compose:koin-compose"))
api(project(":compose:koin-compose-viewmodel"))
api(project(":compose:koin-compose-viewmodel-navigation"))
api(project(":compose:koin-androidx-compose"))
api(project(":compose:koin-androidx-compose-navigation"))
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ tasks.withType<KotlinCompile>().all {

dependencies {
api(project(":compose:koin-androidx-compose"))
api(project(":core:koin-core-viewmodel-navigation"))
api(libs.androidx.composeNavigation)
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
alias(libs.plugins.kotlinMultiplatform)
alias(libs.plugins.jetbrainsCompose)
alias(libs.plugins.compose.compiler)
}

val koinVersion: String by project
version = koinVersion

kotlin {
jvmToolchain(1_8)
jvm {
withJava()
}

js(IR) {
nodejs()
browser()
binaries.executable()
}

wasmJs {
nodejs()
binaries.executable()
}

iosX64()
iosArm64()
iosSimulatorArm64()
macosX64()
macosArm64()

sourceSets {
commonMain.dependencies {
api(project(":compose:koin-compose-viewmodel"))
api(project(":core:koin-core-viewmodel-navigation"))
api(libs.jb.composeNavigation)
}
}
}

tasks.withType<KotlinCompile>().all {
kotlinOptions {
jvmTarget = "11"
}
}

tasks.withType<org.jetbrains.kotlin.gradle.targets.js.npm.tasks.KotlinNpmInstallTask>().configureEach {
args.add("--ignore-engines")
}

apply(from = file("../../gradle/publish.gradle.kts"))
1 change: 0 additions & 1 deletion projects/compose/koin-compose-viewmodel/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@ kotlin {
api(project(":compose:koin-compose"))
api(project(":core:koin-core-viewmodel"))
api(libs.jb.composeViewmodel)
api(libs.jb.composeNavigation)
}
}
}
Expand Down
55 changes: 55 additions & 0 deletions projects/core/koin-core-viewmodel-navigation/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
alias(libs.plugins.kotlinMultiplatform)
}

val koinVersion: String by project
version = koinVersion

kotlin {
jvmToolchain(1_8)
jvm {
withJava()
}

js(IR) {
nodejs()
browser()
binaries.executable()
}

wasmJs {
binaries.executable()
nodejs()
}

iosX64()
iosArm64()
iosSimulatorArm64()
macosX64()
macosArm64()

sourceSets {
commonMain.dependencies {
api(project(":core:koin-core-viewmodel"))
api(libs.jb.navigation)
}
}
}

tasks.withType<KotlinCompile>().all {
kotlinOptions {
jvmTarget = "11"
}
}

tasks.withType<KotlinCompile>().all {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_1_8)
}
}

apply(from = file("../../gradle/publish.gradle.kts"))
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package org.koin.viewmodel

import androidx.lifecycle.HasDefaultViewModelProviderFactory
import androidx.lifecycle.ViewModelStoreOwner
import androidx.lifecycle.viewmodel.CreationExtras
import androidx.navigation.NavBackStackEntry
import org.koin.core.annotation.KoinInternalApi

@OptIn(KoinInternalApi::class)
fun defaultNavExtras(viewModelStoreOwner: ViewModelStoreOwner): CreationExtras = when {
viewModelStoreOwner is NavBackStackEntry && viewModelStoreOwner.arguments != null -> viewModelStoreOwner.arguments?.toExtras(viewModelStoreOwner) ?: CreationExtras.Empty
viewModelStoreOwner is HasDefaultViewModelProviderFactory -> viewModelStoreOwner.defaultViewModelCreationExtras
else -> CreationExtras.Empty
}
1 change: 0 additions & 1 deletion projects/core/koin-core-viewmodel/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@ kotlin {
api(libs.jb.lifecycleViewmodelSavedState)
api(libs.jb.bundle)
api(libs.jb.savedstate)
api(libs.jb.navigation)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,8 @@ package org.koin.viewmodel
import androidx.lifecycle.HasDefaultViewModelProviderFactory
import androidx.lifecycle.ViewModelStoreOwner
import androidx.lifecycle.viewmodel.CreationExtras
import androidx.navigation.NavBackStackEntry
import org.koin.core.annotation.KoinInternalApi

fun defaultExtras(viewModelStoreOwner: ViewModelStoreOwner): CreationExtras = when {
viewModelStoreOwner is HasDefaultViewModelProviderFactory -> viewModelStoreOwner.defaultViewModelCreationExtras
else -> CreationExtras.Empty
}

@OptIn(KoinInternalApi::class)
fun defaultNavExtras(viewModelStoreOwner: ViewModelStoreOwner): CreationExtras = when {
viewModelStoreOwner is NavBackStackEntry && viewModelStoreOwner.arguments != null -> viewModelStoreOwner.arguments?.toExtras(viewModelStoreOwner) ?: CreationExtras.Empty
viewModelStoreOwner is HasDefaultViewModelProviderFactory -> viewModelStoreOwner.defaultViewModelCreationExtras
else -> CreationExtras.Empty
}
5 changes: 2 additions & 3 deletions projects/core/koin-core/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
Expand Down Expand Up @@ -43,8 +42,8 @@ kotlin {

sourceSets {
commonMain.dependencies {
api(libs.extras.stately)
api(libs.extras.stately.collections)
implementation(libs.extras.stately)
implementation(libs.extras.stately.collections)
// api(libs.extras.uuid)
}
commonTest.dependencies {
Expand Down
Loading

0 comments on commit 5ca831e

Please sign in to comment.