refactor: simplify Koin module definitions with DSL

This commit is contained in:
2026-06-23 14:56:03 +02:00
parent a3d1bb56a6
commit 3f64d62294
8 changed files with 29 additions and 13 deletions
@@ -5,9 +5,11 @@ import fr.ajaury.gwenedeg.player.data.AndroidAudioSessionManager
import fr.ajaury.gwenedeg.player.domain.AudioPlayer
import fr.ajaury.gwenedeg.player.domain.AudioSessionManager
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
actual val audioPlayerModule: Module = module {
single<AudioPlayer> { AndroidAudioPlayer(context = get()) }
single<AudioSessionManager> { AndroidAudioSessionManager() }
singleOf(::AndroidAudioPlayer) { bind<AudioPlayer>() }
singleOf(::AndroidAudioSessionManager) { bind<AudioSessionManager>() }
}
@@ -1,13 +1,17 @@
package fr.ajaury.gwenedeg.player.di
import fr.ajaury.gwenedeg.core.logging.di.loggingModule
import fr.ajaury.gwenedeg.player.data.IosAudioPlayer
import fr.ajaury.gwenedeg.player.data.IosAudioSessionManager
import fr.ajaury.gwenedeg.player.domain.AudioPlayer
import fr.ajaury.gwenedeg.player.domain.AudioSessionManager
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
actual val audioPlayerModule: Module = module {
single<AudioPlayer> { IosAudioPlayer() }
single<AudioSessionManager> { IosAudioSessionManager() }
includes(loggingModule)
singleOf(::IosAudioPlayer) { bind<AudioPlayer>() }
singleOf(::IosAudioSessionManager) { bind<AudioSessionManager>() }
}
@@ -5,9 +5,11 @@ import fr.ajaury.gwenedeg.player.data.JvmAudioSessionManager
import fr.ajaury.gwenedeg.player.domain.AudioPlayer
import fr.ajaury.gwenedeg.player.domain.AudioSessionManager
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
actual val audioPlayerModule: Module = module {
single<AudioPlayer> { JvmAudioPlayer() }
single<AudioSessionManager> { JvmAudioSessionManager() }
singleOf(::JvmAudioPlayer) { bind<AudioPlayer>() }
singleOf(::JvmAudioSessionManager) { bind<AudioSessionManager>() }
}
@@ -5,9 +5,11 @@ import fr.ajaury.gwenedeg.player.data.WebAudioSessionManager
import fr.ajaury.gwenedeg.player.domain.AudioPlayer
import fr.ajaury.gwenedeg.player.domain.AudioSessionManager
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
actual val audioPlayerModule: Module = module {
single<AudioPlayer> { WebAudioPlayer() }
single<AudioSessionManager> { WebAudioSessionManager() }
singleOf(::WebAudioPlayer) { bind<AudioPlayer>() }
singleOf(::WebAudioSessionManager) { bind<AudioSessionManager>() }
}
@@ -3,8 +3,10 @@ package fr.ajaury.gwenedeg.core.coroutines.di
import fr.ajaury.gwenedeg.core.coroutines.data.DefaultDispatcherProvider
import fr.ajaury.gwenedeg.core.coroutines.domain.DispatcherProvider
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 coroutinesModule: Module = module {
single<DispatcherProvider> { DefaultDispatcherProvider() }
singleOf(::DefaultDispatcherProvider) { bind<DispatcherProvider>() }
}
@@ -2,9 +2,9 @@ package fr.ajaury.gwenedeg.core.logging.data
import fr.ajaury.gwenedeg.core.logging.domain.Logger
internal class KermitLogger(
private val tag: String = "Gwenedeg",
) : Logger {
internal class KermitLogger : Logger {
private val tag: String = "Gwenedeg"
override fun debug(
message: String,
throwable: Throwable?,
@@ -3,8 +3,10 @@ package fr.ajaury.gwenedeg.core.logging.di
import fr.ajaury.gwenedeg.core.logging.data.KermitLogger
import fr.ajaury.gwenedeg.core.logging.domain.Logger
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 loggingModule: Module = module {
single<Logger> { KermitLogger() }
singleOf(::KermitLogger) { bind<Logger>() }
}
@@ -1,5 +1,6 @@
package fr.ajaury.gwenedeg.di
import fr.ajaury.gwenedeg.core.logging.di.loggingModule
import fr.ajaury.gwenedeg.player.ui.viewmodel.PlayerViewModel
import fr.ajaury.gwenedeg.records.data.InMemoryRecordRepository
import fr.ajaury.gwenedeg.records.domain.RecordRepository
@@ -12,6 +13,7 @@ import org.koin.core.module.dsl.viewModelOf
import org.koin.dsl.module
val sharedModule = module {
includes(loggingModule)
factoryOf(::InMemoryRecordRepository) { bind<RecordRepository>() }
viewModelOf(::RecordsViewModel)
viewModelOf(::PlayerViewModel)