new: modularize data.playback into a dedicated module

This commit is contained in:
2026-07-03 09:53:07 +02:00
parent d483174ddc
commit 4d397ac5e8
9 changed files with 46 additions and 5 deletions
+30
View File
@@ -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)
}
}
}
@@ -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<PlaybackRepository>() }
}
+1
View File
@@ -45,6 +45,7 @@ include(":core:logging")
include(":core:model")
// Data modules
include(":data:playback")
include(":data:preferences")
include(":data:records")
include(":data:resources")
+1
View File
@@ -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)
@@ -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<PlaybackRepository>() }
viewModelOf(::RecordsViewModel)
viewModelOf(::PlayerViewModel)
}