diff --git a/app/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/di/AppModule.kt b/app/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/di/AppModule.kt index e50fac659..24a95d21a 100644 --- a/app/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/di/AppModule.kt +++ b/app/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/di/AppModule.kt @@ -63,7 +63,7 @@ internal val appModules = module { databaseModule, dataModule, dataStoreModule(), - *networkModule().toTypedArray(), + networkModule, ) includes(featureModules) includes(appViewModelModule) diff --git a/core/database/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/core/database/di/DatabaseModule.kt b/core/database/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/core/database/di/DatabaseModule.kt index 3654250b3..f92ae2852 100644 --- a/core/database/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/core/database/di/DatabaseModule.kt +++ b/core/database/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/core/database/di/DatabaseModule.kt @@ -32,6 +32,9 @@ import com.google.samples.apps.nowinandroid.core.database.dao.TopicFtsDao import com.google.samples.apps.nowinandroid.core.database.dao.TopicFtsDaoInterface import com.google.samples.apps.nowinandroid.core.di.coroutineDispatcherModule import org.koin.core.module.Module +import org.koin.core.module.dsl.factoryOf +import org.koin.core.module.dsl.singleOf +import org.koin.dsl.bind import org.koin.dsl.module internal expect val driverModule: Module @@ -41,34 +44,15 @@ internal val schemaModule = module { } internal val dbModule = module { - single { (driver: SqlDriver) -> - NiaDatabase(driver) - } + single { NiaDatabase(get()) } } internal val daoModule = module { - factory { (database: NiaDatabase) -> - TopicDao(database, get()) - } - - factory { (database: NiaDatabase) -> - NewsResourceDao(database, get()) - } - - factory { (database: NiaDatabase) -> - TopicFtsDao(database, get()) - } - - factory { (database: NiaDatabase) -> - NewsResourceFtsDao(database, get()) - } - - factory { (database: NiaDatabase) -> - RecentSearchQueryDao( - database, - get(), - ) - } + singleOf(::TopicDao) bind TopicDaoInterface::class + singleOf(::NewsResourceDao) bind NewsResourceDaoInterface::class + singleOf(::TopicFtsDao) bind TopicFtsDaoInterface::class + singleOf(::NewsResourceFtsDao) bind NewsResourceFtsDaoInterface::class + singleOf(::RecentSearchQueryDao) bind RecentSearchQueryDaoInterface::class } val databaseModule: Module get() = module { diff --git a/core/database/src/jvmMain/kotlin/com/google/samples/apps/nowinandroid/core/database/di/Database.jvm.kt b/core/database/src/jvmMain/kotlin/com/google/samples/apps/nowinandroid/core/database/di/Database.jvm.kt index 8218e101c..e18b482a5 100644 --- a/core/database/src/jvmMain/kotlin/com/google/samples/apps/nowinandroid/core/database/di/Database.jvm.kt +++ b/core/database/src/jvmMain/kotlin/com/google/samples/apps/nowinandroid/core/database/di/Database.jvm.kt @@ -27,7 +27,8 @@ import org.koin.dsl.module import java.util.Properties internal actual val driverModule = module { - single { (schema: SqlSchema>) -> + single { + val schema: SqlSchema> = get() JdbcSqliteDriver( url = JdbcSqliteDriver.IN_MEMORY, properties = Properties().apply { put("foreign_keys", "true") }, 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 d9006fe1b..d379443da 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,6 +17,7 @@ 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.NiaNetworkDataSource import com.google.samples.apps.nowinandroid.core.network.retrofit.RetrofitNiaNetwork import de.jensklingenberg.ktorfit.Ktorfit import de.jensklingenberg.ktorfit.converter.CallConverterFactory @@ -25,11 +26,10 @@ import de.jensklingenberg.ktorfit.ktorfit import io.ktor.client.HttpClient import io.ktor.client.plugins.contentnegotiation.ContentNegotiation import kotlinx.serialization.json.Json -import org.koin.core.annotation.ComponentScan -import org.koin.core.annotation.Module +import org.koin.core.module.Module import org.koin.core.module.dsl.singleOf +import org.koin.dsl.bind import org.koin.dsl.module -import org.koin.ksp.generated.module internal val jsonModule = module { single { @@ -42,7 +42,8 @@ internal val jsonModule = module { internal val ktorfitModule = module { single { ktorfit { - baseUrl(BuildKonfig.BACKEND_URL) + // TODO use the correct URL + baseUrl("https://${BuildKonfig.BACKEND_URL}/") httpClient( HttpClient { install(ContentNegotiation) { @@ -56,12 +57,9 @@ internal val ktorfitModule = module { ) } } - - singleOf(::RetrofitNiaNetwork) } -fun networkModule() = listOf(NetworkModule().module, jsonModule, ktorfitModule) - -@Module -@ComponentScan -class NetworkModule +val networkModule: Module = module { + includes(jsonModule, ktorfitModule) + singleOf(::RetrofitNiaNetwork) bind NiaNetworkDataSource::class +} diff --git a/secrets.defaults.properties b/secrets.defaults.properties index 3b5457bd9..cdf0f60fe 100644 --- a/secrets.defaults.properties +++ b/secrets.defaults.properties @@ -1,4 +1,4 @@ ## This file provides default values to modules using the secrets-gradle-plugin. It is necessary # because the secrets properties file is not under source control so CI builds will fail without # default values. -BACKEND_URL="http://example.com" \ No newline at end of file +BACKEND_URL="http://example.com/" \ No newline at end of file