diff --git a/data/records/build.gradle.kts b/data/records/build.gradle.kts new file mode 100644 index 0000000..ecbe2f7 --- /dev/null +++ b/data/records/build.gradle.kts @@ -0,0 +1,56 @@ +import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl +import org.jetbrains.kotlin.gradle.dsl.JvmTarget + +plugins { + alias(libs.plugins.kotlinMultiplatform) + alias(libs.plugins.androidMultiplatformLibrary) +} + +kotlin { + iosArm64() + iosSimulatorArm64() + + jvm() + + js { + browser() + } + + @OptIn(ExperimentalWasmDsl::class) + wasmJs { + browser() + } + + androidLibrary { + namespace = "fr.ajaury.gwenedeg.records" + compileSdk = + libs.versions.androidCompileSdk + .get() + .toInt() + minSdk = + libs.versions.androidMinSdk + .get() + .toInt() + + compilerOptions { + jvmTarget = JvmTarget.JVM_11 + } + } + + sourceSets { + commonMain.dependencies { + // Core modules + implementation(projects.core.model) + + // Coroutines + implementation(libs.kotlinx.coroutinesCore) + + // DI + implementation(project.dependencies.platform(libs.koin.bom)) + implementation(libs.koin.core) + } + commonTest.dependencies { + implementation(libs.kotlin.test) + } + } +} diff --git a/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/records/data/InMemoryRecordRepository.kt b/data/records/src/commonMain/kotlin/fr/ajaury/gwenedeg/records/data/InMemoryRecordRepository.kt similarity index 98% rename from shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/records/data/InMemoryRecordRepository.kt rename to data/records/src/commonMain/kotlin/fr/ajaury/gwenedeg/records/data/InMemoryRecordRepository.kt index 83cf4ea..8e36114 100644 --- a/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/records/data/InMemoryRecordRepository.kt +++ b/data/records/src/commonMain/kotlin/fr/ajaury/gwenedeg/records/data/InMemoryRecordRepository.kt @@ -6,7 +6,7 @@ import fr.ajaury.gwenedeg.records.domain.RecordRepository import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flowOf -class InMemoryRecordRepository : RecordRepository { +internal class InMemoryRecordRepository : RecordRepository { private val records = listOf( Phrase( diff --git a/data/records/src/commonMain/kotlin/fr/ajaury/gwenedeg/records/di/RecordsModule.kt b/data/records/src/commonMain/kotlin/fr/ajaury/gwenedeg/records/di/RecordsModule.kt new file mode 100644 index 0000000..82c7c7f --- /dev/null +++ b/data/records/src/commonMain/kotlin/fr/ajaury/gwenedeg/records/di/RecordsModule.kt @@ -0,0 +1,12 @@ +package fr.ajaury.gwenedeg.records.di + +import fr.ajaury.gwenedeg.records.data.InMemoryRecordRepository +import fr.ajaury.gwenedeg.records.domain.RecordRepository +import org.koin.core.module.Module +import org.koin.core.module.dsl.bind +import org.koin.core.module.dsl.factoryOf +import org.koin.dsl.module + +val recordsModule: Module = module { + factoryOf(::InMemoryRecordRepository) { bind() } +} diff --git a/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/records/domain/RecordRepository.kt b/data/records/src/commonMain/kotlin/fr/ajaury/gwenedeg/records/domain/RecordRepository.kt similarity index 100% rename from shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/records/domain/RecordRepository.kt rename to data/records/src/commonMain/kotlin/fr/ajaury/gwenedeg/records/domain/RecordRepository.kt diff --git a/settings.gradle.kts b/settings.gradle.kts index 86f394a..77a6d67 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -44,5 +44,6 @@ include(":core:logging") include(":core:model") // Data modules +include(":data:records") include(":data:resources") include(":data:subtitle") diff --git a/shared/build.gradle.kts b/shared/build.gradle.kts index 6f65852..f65592e 100644 --- a/shared/build.gradle.kts +++ b/shared/build.gradle.kts @@ -65,6 +65,7 @@ kotlin { implementation(projects.core.model) // Data modules + implementation(projects.data.records) implementation(projects.data.resources) implementation(projects.data.subtitle) diff --git a/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/di/Modules.kt b/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/di/Modules.kt index f92bcd9..9d1701e 100644 --- a/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/di/Modules.kt +++ b/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/di/Modules.kt @@ -6,20 +6,18 @@ import fr.ajaury.gwenedeg.player.domain.PlaybackRepository import fr.ajaury.gwenedeg.player.ui.viewmodel.PlayerViewModel import fr.ajaury.gwenedeg.preferences.data.PreferencesRepositoryImpl import fr.ajaury.gwenedeg.preferences.domain.PreferencesRepository -import fr.ajaury.gwenedeg.records.data.InMemoryRecordRepository -import fr.ajaury.gwenedeg.records.domain.RecordRepository +import fr.ajaury.gwenedeg.records.di.recordsModule import fr.ajaury.gwenedeg.records.ui.viewmodel.RecordsViewModel import fr.ajaury.gwenedeg.resources.di.resourcesModule import org.koin.core.module.dsl.bind -import org.koin.core.module.dsl.factoryOf import org.koin.core.module.dsl.singleOf import org.koin.core.module.dsl.viewModelOf import org.koin.dsl.module val sharedModule = module { includes(loggingModule) + includes(recordsModule) includes(resourcesModule) - factoryOf(::InMemoryRecordRepository) { bind() } singleOf(::PlaybackRepositoryImpl) { bind() } singleOf(::PreferencesRepositoryImpl) { bind() } viewModelOf(::RecordsViewModel)