From 0d7503f029a5c3cb69ca639c615e4dedf211ab33 Mon Sep 17 00:00:00 2001 From: Antoine Jaury Date: Fri, 3 Jul 2026 09:39:04 +0200 Subject: [PATCH] new: modularize `data.preferences` --- data/preferences/build.gradle.kts | 20 +++++++++++++++++++ .../data/PreferencesRepositoryImpl.kt | 0 .../preferences/di/PreferencesModule.kt | 12 +++++++++++ .../domain/PreferencesRepository.kt | 0 .../preferences/model/SubtitlePreferences.kt | 0 settings.gradle.kts | 1 + shared/build.gradle.kts | 1 + .../kotlin/fr/ajaury/gwenedeg/di/Modules.kt | 5 ++--- 8 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 data/preferences/build.gradle.kts rename {shared => data/preferences}/src/commonMain/kotlin/fr/ajaury/gwenedeg/preferences/data/PreferencesRepositoryImpl.kt (100%) create mode 100644 data/preferences/src/commonMain/kotlin/fr/ajaury/gwenedeg/preferences/di/PreferencesModule.kt rename {shared => data/preferences}/src/commonMain/kotlin/fr/ajaury/gwenedeg/preferences/domain/PreferencesRepository.kt (100%) rename {shared => data/preferences}/src/commonMain/kotlin/fr/ajaury/gwenedeg/preferences/model/SubtitlePreferences.kt (100%) diff --git a/data/preferences/build.gradle.kts b/data/preferences/build.gradle.kts new file mode 100644 index 0000000..72b5e25 --- /dev/null +++ b/data/preferences/build.gradle.kts @@ -0,0 +1,20 @@ +plugins { + id("gwenedeg.kmp.library") +} + +kotlin { + androidLibrary { + namespace = "fr.ajaury.gwenedeg.preferences" + } + + sourceSets { + commonMain.dependencies { + // Coroutines + implementation(libs.kotlinx.coroutinesCore) + + // DI + implementation(project.dependencies.platform(libs.koin.bom)) + implementation(libs.koin.core) + } + } +} \ No newline at end of file diff --git a/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/preferences/data/PreferencesRepositoryImpl.kt b/data/preferences/src/commonMain/kotlin/fr/ajaury/gwenedeg/preferences/data/PreferencesRepositoryImpl.kt similarity index 100% rename from shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/preferences/data/PreferencesRepositoryImpl.kt rename to data/preferences/src/commonMain/kotlin/fr/ajaury/gwenedeg/preferences/data/PreferencesRepositoryImpl.kt diff --git a/data/preferences/src/commonMain/kotlin/fr/ajaury/gwenedeg/preferences/di/PreferencesModule.kt b/data/preferences/src/commonMain/kotlin/fr/ajaury/gwenedeg/preferences/di/PreferencesModule.kt new file mode 100644 index 0000000..620c924 --- /dev/null +++ b/data/preferences/src/commonMain/kotlin/fr/ajaury/gwenedeg/preferences/di/PreferencesModule.kt @@ -0,0 +1,12 @@ +package fr.ajaury.gwenedeg.preferences.di + +import fr.ajaury.gwenedeg.preferences.data.PreferencesRepositoryImpl +import fr.ajaury.gwenedeg.preferences.domain.PreferencesRepository +import org.koin.core.module.Module +import org.koin.core.module.dsl.bind +import org.koin.core.module.dsl.singleOf +import org.koin.dsl.module + +val preferencesModule: Module = module { + singleOf(::PreferencesRepositoryImpl) { bind() } +} diff --git a/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/preferences/domain/PreferencesRepository.kt b/data/preferences/src/commonMain/kotlin/fr/ajaury/gwenedeg/preferences/domain/PreferencesRepository.kt similarity index 100% rename from shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/preferences/domain/PreferencesRepository.kt rename to data/preferences/src/commonMain/kotlin/fr/ajaury/gwenedeg/preferences/domain/PreferencesRepository.kt diff --git a/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/preferences/model/SubtitlePreferences.kt b/data/preferences/src/commonMain/kotlin/fr/ajaury/gwenedeg/preferences/model/SubtitlePreferences.kt similarity index 100% rename from shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/preferences/model/SubtitlePreferences.kt rename to data/preferences/src/commonMain/kotlin/fr/ajaury/gwenedeg/preferences/model/SubtitlePreferences.kt diff --git a/settings.gradle.kts b/settings.gradle.kts index 39627e5..9579667 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -45,6 +45,7 @@ include(":core:logging") include(":core:model") // Data modules +include(":data:preferences") include(":data:records") include(":data:resources") include(":data:subtitle") diff --git a/shared/build.gradle.kts b/shared/build.gradle.kts index 554fc7b..7e8a33b 100644 --- a/shared/build.gradle.kts +++ b/shared/build.gradle.kts @@ -39,6 +39,7 @@ kotlin { implementation(projects.core.model) // Data modules + implementation(projects.data.preferences) 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 9d1701e..457e318 100644 --- a/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/di/Modules.kt +++ b/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/di/Modules.kt @@ -4,8 +4,7 @@ import fr.ajaury.gwenedeg.core.logging.di.loggingModule import fr.ajaury.gwenedeg.player.data.PlaybackRepositoryImpl 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.preferences.di.preferencesModule import fr.ajaury.gwenedeg.records.di.recordsModule import fr.ajaury.gwenedeg.records.ui.viewmodel.RecordsViewModel import fr.ajaury.gwenedeg.resources.di.resourcesModule @@ -16,10 +15,10 @@ import org.koin.dsl.module val sharedModule = module { includes(loggingModule) + includes(preferencesModule) includes(recordsModule) includes(resourcesModule) singleOf(::PlaybackRepositoryImpl) { bind() } - singleOf(::PreferencesRepositoryImpl) { bind() } viewModelOf(::RecordsViewModel) viewModelOf(::PlayerViewModel) }