diff --git a/core/network/build.gradle.kts b/core/network/build.gradle.kts index 5581c67eb..164d1fb3c 100644 --- a/core/network/build.gradle.kts +++ b/core/network/build.gradle.kts @@ -19,11 +19,10 @@ import com.codingfeline.buildkonfig.compiler.FieldSpec.Type.STRING plugins { alias(libs.plugins.nowinandroid.kmp.library) alias(libs.plugins.nowinandroid.android.library.jacoco) - alias(libs.plugins.nowinandroid.kotlin.inject) + alias(libs.plugins.nowinandroid.di.koin) alias(libs.plugins.ktrofit) alias(libs.plugins.buildkonfig) id("kotlinx-serialization") - id("com.google.devtools.ksp") id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin") } diff --git a/core/network/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/core/network/demo/DemoNiaNetworkDataSource.kt b/core/network/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/core/network/demo/DemoNiaNetworkDataSource.kt index 96083fd2c..1fe677105 100644 --- a/core/network/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/core/network/demo/DemoNiaNetworkDataSource.kt +++ b/core/network/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/core/network/demo/DemoNiaNetworkDataSource.kt @@ -27,12 +27,13 @@ import com.google.samples.apps.nowinandroid.core.network.model.NetworkTopic import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.withContext import kotlinx.serialization.json.Json -import me.tatarka.inject.annotations.Inject +import org.koin.core.annotation.Single /** * [NiaNetworkDataSource] implementation that provides static news resources to aid development */ -class DemoNiaNetworkDataSource @Inject constructor( +@Single +class DemoNiaNetworkDataSource( @Dispatcher(IO) private val ioDispatcher: CoroutineDispatcher, private val networkJson: Json, ) : NiaNetworkDataSource { 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 cb547799f..0763c2d54 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 @@ -17,38 +17,51 @@ package com.google.samples.apps.nowinandroid.core.network.di import com.google.samples.apps.nowinandroid.core.network.BuildKonfig +import com.google.samples.apps.nowinandroid.core.network.retrofit.RetrofitNiaNetwork import de.jensklingenberg.ktorfit.Ktorfit 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 -import io.ktor.serialization.kotlinx.json.json import kotlinx.serialization.json.Json -import me.tatarka.inject.annotations.Component -import me.tatarka.inject.annotations.Provides +import org.koin.core.annotation.ComponentScan +import org.koin.core.annotation.Module +import org.koin.core.module.dsl.singleOf +import org.koin.dsl.module +import org.koin.ksp.generated.module -@Component -abstract class NetworkModule { - - @Provides - fun providesNetworkJson(): Json = Json { - ignoreUnknownKeys = true +internal val jsonModule = module { + single { + Json { + ignoreUnknownKeys = true + } } +} - @Provides - fun provideKtorfit(json: Json): Ktorfit = ktorfit { - baseUrl(BuildKonfig.BACKEND_URL) - httpClient( - HttpClient { - install(ContentNegotiation) { - json(json) - } - }, - ) - converterFactories( - FlowConverterFactory(), - CallConverterFactory(), - ) +internal val ktorfitModule = module { + single { + ktorfit { + baseUrl(BuildKonfig.BACKEND_URL) + httpClient( + HttpClient { + install(ContentNegotiation) { + get() + } + }, + ) + converterFactories( + FlowConverterFactory(), + CallConverterFactory(), + ) + } } + + singleOf(::RetrofitNiaNetwork) } + +val networkModule = listOf(NetworkModule().module, jsonModule, ktorfitModule) + +@Module +@ComponentScan +class NetworkModule 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 6cbd35674..d65a75bd8 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 @@ -24,7 +24,6 @@ import de.jensklingenberg.ktorfit.Ktorfit import de.jensklingenberg.ktorfit.http.GET import de.jensklingenberg.ktorfit.http.Query import kotlinx.serialization.Serializable -import me.tatarka.inject.annotations.Inject /** * Retrofit API declaration for NIA Network API @@ -62,7 +61,7 @@ internal data class NetworkResponse( /** * [Ktrofit] backed [NiaNetworkDataSource] */ -internal class RetrofitNiaNetwork @Inject constructor( +internal class RetrofitNiaNetwork( ktorfit: Ktorfit, ) : NiaNetworkDataSource {