diff --git a/build-logic/convention/src/main/kotlin/KotlinInjectConventionPlugin.kt b/build-logic/convention/src/main/kotlin/KotlinInjectConventionPlugin.kt index 692c8cb02..cd151a5b2 100644 --- a/build-logic/convention/src/main/kotlin/KotlinInjectConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/KotlinInjectConventionPlugin.kt @@ -27,7 +27,7 @@ class KotlinInjectConventionPlugin: Plugin { } dependencies { add("kspCommonMainMetadata", libs.findLibrary("kotlin.inject.compiler.ksp").get()) - add("commonMainImplementation", libs.findLibrary("kotlin.inject.runtime").get()) + add("commonMainImplementation", libs.findLibrary("kotlin.inject.runtime.kmp").get()) // KSP will eventually have better multiplatform support and we'll be able to simply have // `ksp libs.kotlinInject.compiler` in the dependencies block of each source set // https://github.com/google/ksp/pull/1021 diff --git a/core/network/build.gradle.kts b/core/network/build.gradle.kts index 1995fee87..5581c67eb 100644 --- a/core/network/build.gradle.kts +++ b/core/network/build.gradle.kts @@ -61,6 +61,8 @@ kotlin { implementation(libs.ktor.client.content.negotiation) implementation(libs.ktor.serialization.kotlinx.json) implementation(libs.ktorfit.lib) + implementation(libs.ktorfit.converters.call) + implementation(libs.ktorfit.converters.flow) } androidMain.dependencies { implementation(libs.ktor.client.android) diff --git a/core/network/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/core/network/di/NetworkModule.kt b/core/network/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/core/network/di/NetworkModule.kt index dc8be8b8c..cb547799f 100644 --- a/core/network/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/core/network/di/NetworkModule.kt +++ b/core/network/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/core/network/di/NetworkModule.kt @@ -18,8 +18,8 @@ package com.google.samples.apps.nowinandroid.core.network.di import com.google.samples.apps.nowinandroid.core.network.BuildKonfig import de.jensklingenberg.ktorfit.Ktorfit -import de.jensklingenberg.ktorfit.converter.builtin.CallConverterFactory -import de.jensklingenberg.ktorfit.converter.builtin.FlowConverterFactory +import de.jensklingenberg.ktorfit.converter.CallConverterFactory +import de.jensklingenberg.ktorfit.converter.FlowConverterFactory import de.jensklingenberg.ktorfit.ktorfit import io.ktor.client.HttpClient import io.ktor.client.plugins.contentnegotiation.ContentNegotiation @@ -29,7 +29,7 @@ import me.tatarka.inject.annotations.Component import me.tatarka.inject.annotations.Provides @Component -internal abstract class NetworkModule { +abstract class NetworkModule { @Provides fun providesNetworkJson(): Json = Json { diff --git a/core/network/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/core/network/retrofit/RetrofitNiaNetwork.kt b/core/network/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/core/network/retrofit/RetrofitNiaNetwork.kt index 3ae6ac79f..6cbd35674 100644 --- a/core/network/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/core/network/retrofit/RetrofitNiaNetwork.kt +++ b/core/network/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/core/network/retrofit/RetrofitNiaNetwork.kt @@ -66,7 +66,7 @@ internal class RetrofitNiaNetwork @Inject constructor( ktorfit: Ktorfit, ) : NiaNetworkDataSource { - private val networkApi = ktorfit.create() + private val networkApi: RetrofitNiaNetworkApi = ktorfit.createRetrofitNiaNetworkApi() override suspend fun getTopics(ids: List?): List = networkApi.getTopics(ids = ids).data diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 042094204..ce2b6d3ed 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -60,17 +60,17 @@ androidx-constraintlayout = "2.1.4" androidx-espresso-core = "3.6.1" androidx-material = "1.12.0" androidx-test-junit = "1.2.1" -compose-ui-tooling = "1.6.8" -compose-plugin = "1.6.11" +compose-ui-tooling = "1.7.2" +compose-plugin = "1.7.0-beta02" sqldelight = "2.0.2" -kotlinInject = '0.7.1' -multiplatform-settings = "1.1.1" +kotlinInject = '0.7.2' +multiplatform-settings = "1.2.0" kermit = "2.0.4" ktor = "3.0.0-rc-1" ktrofit = "2.1.0" -buildKonfig = "0.15.1" -lifecycle-viewmodel-compose = "2.8.0" -navigation-compose = "2.7.0-alpha07" +buildKonfig = "0.15.2" +lifecycle-viewmodel-compose = "2.8.2" +navigation-compose = "2.8.0-alpha10" [bundles] androidx-compose-ui-test = ["androidx-compose-ui-test", "androidx-compose-ui-testManifest"] @@ -181,6 +181,7 @@ sqldelight-coroutines-extensions = { group = "app.cash.sqldelight", name = "coro sqldelight-primitive-adapters = { group = "app.cash.sqldelight", name = "primitive-adapters", version.ref = "sqldelight" } kotlin-inject-compiler-ksp = { group = "me.tatarka.inject", name = "kotlin-inject-compiler-ksp", version.ref = "kotlinInject" } kotlin-inject-runtime = { group = "me.tatarka.inject", name = "kotlin-inject-runtime", version.ref = "kotlinInject" } +kotlin-inject-runtime-kmp = { group = "me.tatarka.inject", name = "kotlin-inject-runtime-kmp", version.ref = "kotlinInject" } multiplatform-settings = { group = "com.russhwolf", name = "multiplatform-settings-no-arg", version.ref = "multiplatform-settings" } multiplatform-settings-test = { group = "com.russhwolf", name = "multiplatform-settings-test", version.ref = "multiplatform-settings" } multiplatform-settings-serialization = { group = "com.russhwolf", name = "multiplatform-settings-serialization", version.ref = "multiplatform-settings" } @@ -199,6 +200,8 @@ ktor-client-winhttp = { group = "io.ktor", name = "ktor-client-winhttp", version ktor-serialization-kotlinx-json = { group = "io.ktor", name = "ktor-serialization-kotlinx-json", version.ref = "ktor" } ktorfit-ksp = { group = "de.jensklingenberg.ktorfit", name = "ktorfit-ksp", version.ref = "ktrofit" } ktorfit-lib = { group = "de.jensklingenberg.ktorfit", name = "ktorfit-lib", version.ref = "ktrofit" } +ktorfit-converters-flow = { group = "de.jensklingenberg.ktorfit", name = "ktorfit-converters-flow", version.ref = "ktrofit" } +ktorfit-converters-call = { group = "de.jensklingenberg.ktorfit", name = "ktorfit-converters-call", version.ref = "ktrofit" } buildkonfig-gradlePlugin = { group = "com.codingfeline.buildkonfig", name = "buildkonfig-gradle-plugin", version.ref = "buildKonfig" } jetbrains-compose-viewmodel = { group = "org.jetbrains.androidx.lifecycle", name = "lifecycle-viewmodel-compose", version.ref = "lifecycle-viewmodel-compose" } jetbrains-compose-navigation = { group = "org.jetbrains.androidx.navigation", name = "navigation-compose", version.ref = "navigation-compose" }