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.AudioPlayer
import fr.ajaury.gwenedeg.player.domain.AudioSessionManager import fr.ajaury.gwenedeg.player.domain.AudioSessionManager
import org.koin.core.module.Module 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 import org.koin.dsl.module
actual val audioPlayerModule: Module = module { actual val audioPlayerModule: Module = module {
single<AudioPlayer> { AndroidAudioPlayer(context = get()) } singleOf(::AndroidAudioPlayer) { bind<AudioPlayer>() }
single<AudioSessionManager> { AndroidAudioSessionManager() } singleOf(::AndroidAudioSessionManager) { bind<AudioSessionManager>() }
} }
@@ -1,13 +1,17 @@
package fr.ajaury.gwenedeg.player.di 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.IosAudioPlayer
import fr.ajaury.gwenedeg.player.data.IosAudioSessionManager import fr.ajaury.gwenedeg.player.data.IosAudioSessionManager
import fr.ajaury.gwenedeg.player.domain.AudioPlayer import fr.ajaury.gwenedeg.player.domain.AudioPlayer
import fr.ajaury.gwenedeg.player.domain.AudioSessionManager import fr.ajaury.gwenedeg.player.domain.AudioSessionManager
import org.koin.core.module.Module 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 import org.koin.dsl.module
actual val audioPlayerModule: Module = module { actual val audioPlayerModule: Module = module {
single<AudioPlayer> { IosAudioPlayer() } includes(loggingModule)
single<AudioSessionManager> { IosAudioSessionManager() } 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.AudioPlayer
import fr.ajaury.gwenedeg.player.domain.AudioSessionManager import fr.ajaury.gwenedeg.player.domain.AudioSessionManager
import org.koin.core.module.Module 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 import org.koin.dsl.module
actual val audioPlayerModule: Module = module { actual val audioPlayerModule: Module = module {
single<AudioPlayer> { JvmAudioPlayer() } singleOf(::JvmAudioPlayer) { bind<AudioPlayer>() }
single<AudioSessionManager> { JvmAudioSessionManager() } 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.AudioPlayer
import fr.ajaury.gwenedeg.player.domain.AudioSessionManager import fr.ajaury.gwenedeg.player.domain.AudioSessionManager
import org.koin.core.module.Module 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 import org.koin.dsl.module
actual val audioPlayerModule: Module = module { actual val audioPlayerModule: Module = module {
single<AudioPlayer> { WebAudioPlayer() } singleOf(::WebAudioPlayer) { bind<AudioPlayer>() }
single<AudioSessionManager> { WebAudioSessionManager() } 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.data.DefaultDispatcherProvider
import fr.ajaury.gwenedeg.core.coroutines.domain.DispatcherProvider import fr.ajaury.gwenedeg.core.coroutines.domain.DispatcherProvider
import org.koin.core.module.Module 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 import org.koin.dsl.module
val coroutinesModule: Module = 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 import fr.ajaury.gwenedeg.core.logging.domain.Logger
internal class KermitLogger( internal class KermitLogger : Logger {
private val tag: String = "Gwenedeg", private val tag: String = "Gwenedeg"
) : Logger {
override fun debug( override fun debug(
message: String, message: String,
throwable: Throwable?, 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.data.KermitLogger
import fr.ajaury.gwenedeg.core.logging.domain.Logger import fr.ajaury.gwenedeg.core.logging.domain.Logger
import org.koin.core.module.Module 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 import org.koin.dsl.module
val loggingModule: Module = module { val loggingModule: Module = module {
single<Logger> { KermitLogger() } singleOf(::KermitLogger) { bind<Logger>() }
} }
@@ -1,5 +1,6 @@
package fr.ajaury.gwenedeg.di 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.player.ui.viewmodel.PlayerViewModel
import fr.ajaury.gwenedeg.records.data.InMemoryRecordRepository import fr.ajaury.gwenedeg.records.data.InMemoryRecordRepository
import fr.ajaury.gwenedeg.records.domain.RecordRepository import fr.ajaury.gwenedeg.records.domain.RecordRepository
@@ -12,6 +13,7 @@ import org.koin.core.module.dsl.viewModelOf
import org.koin.dsl.module import org.koin.dsl.module
val sharedModule = module { val sharedModule = module {
includes(loggingModule)
factoryOf(::InMemoryRecordRepository) { bind<RecordRepository>() } factoryOf(::InMemoryRecordRepository) { bind<RecordRepository>() }
viewModelOf(::RecordsViewModel) viewModelOf(::RecordsViewModel)
viewModelOf(::PlayerViewModel) viewModelOf(::PlayerViewModel)