From 4d397ac5e80f3b5ae8ac0f27050cc953fb8362f2 Mon Sep 17 00:00:00 2001 From: Antoine Jaury Date: Fri, 3 Jul 2026 09:53:07 +0200 Subject: [PATCH] new: modularize `data.playback` into a dedicated module --- data/playback/build.gradle.kts | 30 +++++++++++++++++++ .../player/data/PlaybackRepositoryImpl.kt | 0 .../gwenedeg/player/di/PlaybackModule.kt | 12 ++++++++ .../player/domain/PlaybackRepository.kt | 0 .../gwenedeg/player/model/PlaybackTiming.kt | 0 .../gwenedeg/player/model/PlayerState.kt | 0 settings.gradle.kts | 1 + shared/build.gradle.kts | 1 + .../kotlin/fr/ajaury/gwenedeg/di/Modules.kt | 7 ++--- 9 files changed, 46 insertions(+), 5 deletions(-) create mode 100644 data/playback/build.gradle.kts rename {shared => data/playback}/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/data/PlaybackRepositoryImpl.kt (100%) create mode 100644 data/playback/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/di/PlaybackModule.kt rename {shared => data/playback}/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/domain/PlaybackRepository.kt (100%) rename {shared => data/playback}/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/model/PlaybackTiming.kt (100%) rename {shared => data/playback}/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/model/PlayerState.kt (100%) diff --git a/data/playback/build.gradle.kts b/data/playback/build.gradle.kts new file mode 100644 index 0000000..b0389a2 --- /dev/null +++ b/data/playback/build.gradle.kts @@ -0,0 +1,30 @@ +plugins { + id("gwenedeg.kmp.library") +} + +kotlin { + androidLibrary { + namespace = "fr.ajaury.gwenedeg.playback" + } + + sourceSets { + commonMain.dependencies { + // Core modules + implementation(projects.core.audioplayer) + implementation(projects.core.logging) + implementation(projects.core.model) + + // Data modules + implementation(projects.data.records) + implementation(projects.data.resources) + implementation(projects.data.subtitle) + + // Coroutines + implementation(libs.kotlinx.coroutinesCore) + + // DI + implementation(project.dependencies.platform(libs.koin.bom)) + implementation(libs.koin.core) + } + } +} diff --git a/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/data/PlaybackRepositoryImpl.kt b/data/playback/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/data/PlaybackRepositoryImpl.kt similarity index 100% rename from shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/data/PlaybackRepositoryImpl.kt rename to data/playback/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/data/PlaybackRepositoryImpl.kt diff --git a/data/playback/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/di/PlaybackModule.kt b/data/playback/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/di/PlaybackModule.kt new file mode 100644 index 0000000..31c80d4 --- /dev/null +++ b/data/playback/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/di/PlaybackModule.kt @@ -0,0 +1,12 @@ +package fr.ajaury.gwenedeg.player.di + +import fr.ajaury.gwenedeg.player.data.PlaybackRepositoryImpl +import fr.ajaury.gwenedeg.player.domain.PlaybackRepository +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 playbackModule: Module = module { + singleOf(::PlaybackRepositoryImpl) { bind() } +} diff --git a/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/domain/PlaybackRepository.kt b/data/playback/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/domain/PlaybackRepository.kt similarity index 100% rename from shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/domain/PlaybackRepository.kt rename to data/playback/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/domain/PlaybackRepository.kt diff --git a/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/model/PlaybackTiming.kt b/data/playback/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/model/PlaybackTiming.kt similarity index 100% rename from shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/model/PlaybackTiming.kt rename to data/playback/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/model/PlaybackTiming.kt diff --git a/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/model/PlayerState.kt b/data/playback/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/model/PlayerState.kt similarity index 100% rename from shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/model/PlayerState.kt rename to data/playback/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/model/PlayerState.kt diff --git a/settings.gradle.kts b/settings.gradle.kts index 9579667..f1c8272 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -45,6 +45,7 @@ include(":core:logging") include(":core:model") // Data modules +include(":data:playback") include(":data:preferences") include(":data:records") include(":data:resources") diff --git a/shared/build.gradle.kts b/shared/build.gradle.kts index 7e8a33b..c153a7e 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.playback) implementation(projects.data.preferences) implementation(projects.data.records) implementation(projects.data.resources) 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 457e318..1003805 100644 --- a/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/di/Modules.kt +++ b/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/di/Modules.kt @@ -1,24 +1,21 @@ package fr.ajaury.gwenedeg.di 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.di.playbackModule import fr.ajaury.gwenedeg.player.ui.viewmodel.PlayerViewModel 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 -import org.koin.core.module.dsl.bind -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(playbackModule) includes(preferencesModule) includes(recordsModule) includes(resourcesModule) - singleOf(::PlaybackRepositoryImpl) { bind() } viewModelOf(::RecordsViewModel) viewModelOf(::PlayerViewModel) }