From 1de2d43b3be8c2f54fb64e7f41ea2ea575db6d1b Mon Sep 17 00:00:00 2001 From: Antoine Jaury Date: Tue, 16 Jun 2026 17:26:48 +0200 Subject: [PATCH] refactor: extract audio player logic into a dedicated multiplatform module --- core/audioplayer/build.gradle.kts | 55 +++++++++++++++++++ .../gwenedeg/player/AndroidAudioPlayer.kt | 5 +- .../player/AndroidAudioSessionManager.kt | 0 .../player/di/AudioPlayerModule.android.kt | 4 +- .../fr/ajaury/gwenedeg/player/AudioPlayer.kt | 2 +- .../gwenedeg/player/AudioSessionManager.kt | 0 .../gwenedeg/player/di/AudioPlayerModule.kt | 5 ++ .../ajaury/gwenedeg/player/IosAudioPlayer.kt | 4 +- .../gwenedeg/player/IosAudioSessionManager.kt | 0 .../player/di/AudioPlayerModule.ios.kt | 4 +- .../ajaury/gwenedeg/player/JsAudioPlayer.kt | 4 +- .../player/di/AudioPlayerModule.js.kt | 4 +- .../ajaury/gwenedeg/player/JvmAudioPlayer.kt | 4 +- .../player/di/AudioPlayerModule.jvm.kt | 6 ++ .../ajaury/gwenedeg/player/WasmAudioPlayer.kt | 4 +- .../player/di/AudioPlayerModule.wasmJs.kt | 6 ++ settings.gradle.kts | 1 + shared/build.gradle.kts | 7 +-- .../kotlin/fr/ajaury/gwenedeg/App.kt | 4 +- .../kotlin/fr/ajaury/gwenedeg/di/Modules.kt | 3 - .../player/ui/viewmodel/PlayerViewModel.kt | 3 +- .../fr/ajaury/gwenedeg/di/Modules.web.kt | 4 -- 22 files changed, 96 insertions(+), 33 deletions(-) create mode 100644 core/audioplayer/build.gradle.kts rename {shared => core/audioplayer}/src/androidMain/kotlin/fr/ajaury/gwenedeg/player/AndroidAudioPlayer.kt (79%) rename {shared => core/audioplayer}/src/androidMain/kotlin/fr/ajaury/gwenedeg/player/AndroidAudioSessionManager.kt (100%) rename shared/src/androidMain/kotlin/fr/ajaury/gwenedeg/di/Modules.android.kt => core/audioplayer/src/androidMain/kotlin/fr/ajaury/gwenedeg/player/di/AudioPlayerModule.android.kt (82%) rename {shared => core/audioplayer}/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/AudioPlayer.kt (80%) rename {shared => core/audioplayer}/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/AudioSessionManager.kt (100%) create mode 100644 core/audioplayer/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/di/AudioPlayerModule.kt rename {shared => core/audioplayer}/src/iosMain/kotlin/fr/ajaury/gwenedeg/player/IosAudioPlayer.kt (86%) rename {shared => core/audioplayer}/src/iosMain/kotlin/fr/ajaury/gwenedeg/player/IosAudioSessionManager.kt (100%) rename shared/src/iosMain/kotlin/fr/ajaury/gwenedeg/di/Modules.ios.kt => core/audioplayer/src/iosMain/kotlin/fr/ajaury/gwenedeg/player/di/AudioPlayerModule.ios.kt (81%) rename {shared => core/audioplayer}/src/jsMain/kotlin/fr/ajaury/gwenedeg/player/JsAudioPlayer.kt (82%) rename shared/src/jvmMain/kotlin/fr/ajaury/gwenedeg/di/Modules.jvm.kt => core/audioplayer/src/jsMain/kotlin/fr/ajaury/gwenedeg/player/di/AudioPlayerModule.js.kt (50%) rename {shared => core/audioplayer}/src/jvmMain/kotlin/fr/ajaury/gwenedeg/player/JvmAudioPlayer.kt (82%) create mode 100644 core/audioplayer/src/jvmMain/kotlin/fr/ajaury/gwenedeg/player/di/AudioPlayerModule.jvm.kt rename {shared => core/audioplayer}/src/wasmJsMain/kotlin/fr/ajaury/gwenedeg/player/WasmAudioPlayer.kt (82%) create mode 100644 core/audioplayer/src/wasmJsMain/kotlin/fr/ajaury/gwenedeg/player/di/AudioPlayerModule.wasmJs.kt delete mode 100644 shared/src/webMain/kotlin/fr/ajaury/gwenedeg/di/Modules.web.kt diff --git a/core/audioplayer/build.gradle.kts b/core/audioplayer/build.gradle.kts new file mode 100644 index 0000000..0c42b9c --- /dev/null +++ b/core/audioplayer/build.gradle.kts @@ -0,0 +1,55 @@ +import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl +import org.jetbrains.kotlin.gradle.dsl.JvmTarget + +plugins { + alias(libs.plugins.kotlinMultiplatform) + alias(libs.plugins.androidMultiplatformLibrary) +} + +kotlin { + iosArm64() + iosSimulatorArm64() + + jvm() + + js { + browser() + } + + @OptIn(ExperimentalWasmDsl::class) + wasmJs { + browser() + } + + androidLibrary { + namespace = "fr.ajaury.gwenedeg.core.audioplayer" + compileSdk = + libs.versions.androidCompileSdk + .get() + .toInt() + minSdk = + libs.versions.androidMinSdk + .get() + .toInt() + + compilerOptions { + jvmTarget = JvmTarget.JVM_11 + } + } + + sourceSets { + androidMain.dependencies { + // Player audio + implementation(libs.media3.exoplayer) + implementation(libs.media3.common) + } + commonMain.dependencies { + // DI + implementation(project.dependencies.platform(libs.koin.bom)) + implementation(libs.koin.core) + } + commonTest.dependencies { + implementation(libs.kotlin.test) + } + } +} diff --git a/shared/src/androidMain/kotlin/fr/ajaury/gwenedeg/player/AndroidAudioPlayer.kt b/core/audioplayer/src/androidMain/kotlin/fr/ajaury/gwenedeg/player/AndroidAudioPlayer.kt similarity index 79% rename from shared/src/androidMain/kotlin/fr/ajaury/gwenedeg/player/AndroidAudioPlayer.kt rename to core/audioplayer/src/androidMain/kotlin/fr/ajaury/gwenedeg/player/AndroidAudioPlayer.kt index 68e6183..f825f66 100644 --- a/shared/src/androidMain/kotlin/fr/ajaury/gwenedeg/player/AndroidAudioPlayer.kt +++ b/core/audioplayer/src/androidMain/kotlin/fr/ajaury/gwenedeg/player/AndroidAudioPlayer.kt @@ -3,15 +3,14 @@ package fr.ajaury.gwenedeg.player import android.content.Context import androidx.media3.common.MediaItem import androidx.media3.exoplayer.ExoPlayer -import gwenedeg.shared.generated.resources.Res class AndroidAudioPlayer( context: Context, ) : AudioPlayer { private val player = ExoPlayer.Builder(context).build() - override fun load(filePath: String) { - val mediaItem = MediaItem.fromUri(Res.getUri(filePath)) + override fun load(uri: String) { + val mediaItem = MediaItem.fromUri(uri) player.setMediaItem(mediaItem) player.prepare() } diff --git a/shared/src/androidMain/kotlin/fr/ajaury/gwenedeg/player/AndroidAudioSessionManager.kt b/core/audioplayer/src/androidMain/kotlin/fr/ajaury/gwenedeg/player/AndroidAudioSessionManager.kt similarity index 100% rename from shared/src/androidMain/kotlin/fr/ajaury/gwenedeg/player/AndroidAudioSessionManager.kt rename to core/audioplayer/src/androidMain/kotlin/fr/ajaury/gwenedeg/player/AndroidAudioSessionManager.kt diff --git a/shared/src/androidMain/kotlin/fr/ajaury/gwenedeg/di/Modules.android.kt b/core/audioplayer/src/androidMain/kotlin/fr/ajaury/gwenedeg/player/di/AudioPlayerModule.android.kt similarity index 82% rename from shared/src/androidMain/kotlin/fr/ajaury/gwenedeg/di/Modules.android.kt rename to core/audioplayer/src/androidMain/kotlin/fr/ajaury/gwenedeg/player/di/AudioPlayerModule.android.kt index 2fae03b..b3e27d4 100644 --- a/shared/src/androidMain/kotlin/fr/ajaury/gwenedeg/di/Modules.android.kt +++ b/core/audioplayer/src/androidMain/kotlin/fr/ajaury/gwenedeg/player/di/AudioPlayerModule.android.kt @@ -1,4 +1,4 @@ -package fr.ajaury.gwenedeg.di +package fr.ajaury.gwenedeg.player.di import fr.ajaury.gwenedeg.player.AndroidAudioPlayer import fr.ajaury.gwenedeg.player.AndroidAudioSessionManager @@ -7,7 +7,7 @@ import fr.ajaury.gwenedeg.player.AudioSessionManager import org.koin.core.module.Module import org.koin.dsl.module -actual val platformModule: Module = module { +actual val audioPlayerModule: Module = module { single { AndroidAudioPlayer(context = get()) } single { AndroidAudioSessionManager() } } diff --git a/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/AudioPlayer.kt b/core/audioplayer/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/AudioPlayer.kt similarity index 80% rename from shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/AudioPlayer.kt rename to core/audioplayer/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/AudioPlayer.kt index 261a303..a5482d6 100644 --- a/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/AudioPlayer.kt +++ b/core/audioplayer/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/AudioPlayer.kt @@ -9,5 +9,5 @@ interface AudioPlayer { fun release() - fun load(filePath: String) + fun load(uri: String) } diff --git a/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/AudioSessionManager.kt b/core/audioplayer/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/AudioSessionManager.kt similarity index 100% rename from shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/AudioSessionManager.kt rename to core/audioplayer/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/AudioSessionManager.kt diff --git a/core/audioplayer/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/di/AudioPlayerModule.kt b/core/audioplayer/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/di/AudioPlayerModule.kt new file mode 100644 index 0000000..5781f5c --- /dev/null +++ b/core/audioplayer/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/di/AudioPlayerModule.kt @@ -0,0 +1,5 @@ +package fr.ajaury.gwenedeg.player.di + +import org.koin.core.module.Module + +expect val audioPlayerModule: Module diff --git a/shared/src/iosMain/kotlin/fr/ajaury/gwenedeg/player/IosAudioPlayer.kt b/core/audioplayer/src/iosMain/kotlin/fr/ajaury/gwenedeg/player/IosAudioPlayer.kt similarity index 86% rename from shared/src/iosMain/kotlin/fr/ajaury/gwenedeg/player/IosAudioPlayer.kt rename to core/audioplayer/src/iosMain/kotlin/fr/ajaury/gwenedeg/player/IosAudioPlayer.kt index a78e565..79b7c63 100644 --- a/shared/src/iosMain/kotlin/fr/ajaury/gwenedeg/player/IosAudioPlayer.kt +++ b/core/audioplayer/src/iosMain/kotlin/fr/ajaury/gwenedeg/player/IosAudioPlayer.kt @@ -1,6 +1,5 @@ package fr.ajaury.gwenedeg.player -import gwenedeg.shared.generated.resources.Res import kotlinx.cinterop.ExperimentalForeignApi import platform.AVFoundation.AVPlayer import platform.AVFoundation.pause @@ -12,8 +11,7 @@ class IosAudioPlayer : AudioPlayer { private var player: AVPlayer? = null @OptIn(ExperimentalForeignApi::class) - override fun load(filePath: String) { - val uri = Res.getUri(filePath) + override fun load(uri: String) { val nsUrl = NSURL.URLWithString(uri) ?: error("Invalid audio URI: $uri") player = AVPlayer(nsUrl) diff --git a/shared/src/iosMain/kotlin/fr/ajaury/gwenedeg/player/IosAudioSessionManager.kt b/core/audioplayer/src/iosMain/kotlin/fr/ajaury/gwenedeg/player/IosAudioSessionManager.kt similarity index 100% rename from shared/src/iosMain/kotlin/fr/ajaury/gwenedeg/player/IosAudioSessionManager.kt rename to core/audioplayer/src/iosMain/kotlin/fr/ajaury/gwenedeg/player/IosAudioSessionManager.kt diff --git a/shared/src/iosMain/kotlin/fr/ajaury/gwenedeg/di/Modules.ios.kt b/core/audioplayer/src/iosMain/kotlin/fr/ajaury/gwenedeg/player/di/AudioPlayerModule.ios.kt similarity index 81% rename from shared/src/iosMain/kotlin/fr/ajaury/gwenedeg/di/Modules.ios.kt rename to core/audioplayer/src/iosMain/kotlin/fr/ajaury/gwenedeg/player/di/AudioPlayerModule.ios.kt index f2007eb..919c96f 100644 --- a/shared/src/iosMain/kotlin/fr/ajaury/gwenedeg/di/Modules.ios.kt +++ b/core/audioplayer/src/iosMain/kotlin/fr/ajaury/gwenedeg/player/di/AudioPlayerModule.ios.kt @@ -1,4 +1,4 @@ -package fr.ajaury.gwenedeg.di +package fr.ajaury.gwenedeg.player.di import fr.ajaury.gwenedeg.player.AudioPlayer import fr.ajaury.gwenedeg.player.AudioSessionManager @@ -7,7 +7,7 @@ import fr.ajaury.gwenedeg.player.IosAudioSessionManager import org.koin.core.module.Module import org.koin.dsl.module -actual val platformModule: Module = module { +actual val audioPlayerModule: Module = module { single { IosAudioPlayer() } single { IosAudioSessionManager() } } diff --git a/shared/src/jsMain/kotlin/fr/ajaury/gwenedeg/player/JsAudioPlayer.kt b/core/audioplayer/src/jsMain/kotlin/fr/ajaury/gwenedeg/player/JsAudioPlayer.kt similarity index 82% rename from shared/src/jsMain/kotlin/fr/ajaury/gwenedeg/player/JsAudioPlayer.kt rename to core/audioplayer/src/jsMain/kotlin/fr/ajaury/gwenedeg/player/JsAudioPlayer.kt index 0607c49..6b18ed1 100644 --- a/shared/src/jsMain/kotlin/fr/ajaury/gwenedeg/player/JsAudioPlayer.kt +++ b/core/audioplayer/src/jsMain/kotlin/fr/ajaury/gwenedeg/player/JsAudioPlayer.kt @@ -1,7 +1,7 @@ package fr.ajaury.gwenedeg.player class JsAudioPlayer : AudioPlayer { - override fun play(file: String) { + override fun play() { TODO("Not yet implemented") } @@ -17,7 +17,7 @@ class JsAudioPlayer : AudioPlayer { TODO("Not yet implemented") } - override fun load(filePath: String) { + override fun load(uri: String) { TODO("Not yet implemented") } } diff --git a/shared/src/jvmMain/kotlin/fr/ajaury/gwenedeg/di/Modules.jvm.kt b/core/audioplayer/src/jsMain/kotlin/fr/ajaury/gwenedeg/player/di/AudioPlayerModule.js.kt similarity index 50% rename from shared/src/jvmMain/kotlin/fr/ajaury/gwenedeg/di/Modules.jvm.kt rename to core/audioplayer/src/jsMain/kotlin/fr/ajaury/gwenedeg/player/di/AudioPlayerModule.js.kt index 2761a97..785aa27 100644 --- a/shared/src/jvmMain/kotlin/fr/ajaury/gwenedeg/di/Modules.jvm.kt +++ b/core/audioplayer/src/jsMain/kotlin/fr/ajaury/gwenedeg/player/di/AudioPlayerModule.js.kt @@ -1,6 +1,6 @@ -package fr.ajaury.gwenedeg.di +package fr.ajaury.gwenedeg.player.di import org.koin.core.module.Module -actual val platformModule: Module +actual val audioPlayerModule: Module get() = TODO("Not yet implemented") diff --git a/shared/src/jvmMain/kotlin/fr/ajaury/gwenedeg/player/JvmAudioPlayer.kt b/core/audioplayer/src/jvmMain/kotlin/fr/ajaury/gwenedeg/player/JvmAudioPlayer.kt similarity index 82% rename from shared/src/jvmMain/kotlin/fr/ajaury/gwenedeg/player/JvmAudioPlayer.kt rename to core/audioplayer/src/jvmMain/kotlin/fr/ajaury/gwenedeg/player/JvmAudioPlayer.kt index f8d9079..ff484d8 100644 --- a/shared/src/jvmMain/kotlin/fr/ajaury/gwenedeg/player/JvmAudioPlayer.kt +++ b/core/audioplayer/src/jvmMain/kotlin/fr/ajaury/gwenedeg/player/JvmAudioPlayer.kt @@ -1,7 +1,7 @@ package fr.ajaury.gwenedeg.player class JvmAudioPlayer : AudioPlayer { - override fun play(file: String) { + override fun play() { TODO("Not yet implemented") } @@ -17,7 +17,7 @@ class JvmAudioPlayer : AudioPlayer { TODO("Not yet implemented") } - override fun load(filePath: String) { + override fun load(uri: String) { TODO("Not yet implemented") } } diff --git a/core/audioplayer/src/jvmMain/kotlin/fr/ajaury/gwenedeg/player/di/AudioPlayerModule.jvm.kt b/core/audioplayer/src/jvmMain/kotlin/fr/ajaury/gwenedeg/player/di/AudioPlayerModule.jvm.kt new file mode 100644 index 0000000..785aa27 --- /dev/null +++ b/core/audioplayer/src/jvmMain/kotlin/fr/ajaury/gwenedeg/player/di/AudioPlayerModule.jvm.kt @@ -0,0 +1,6 @@ +package fr.ajaury.gwenedeg.player.di + +import org.koin.core.module.Module + +actual val audioPlayerModule: Module + get() = TODO("Not yet implemented") diff --git a/shared/src/wasmJsMain/kotlin/fr/ajaury/gwenedeg/player/WasmAudioPlayer.kt b/core/audioplayer/src/wasmJsMain/kotlin/fr/ajaury/gwenedeg/player/WasmAudioPlayer.kt similarity index 82% rename from shared/src/wasmJsMain/kotlin/fr/ajaury/gwenedeg/player/WasmAudioPlayer.kt rename to core/audioplayer/src/wasmJsMain/kotlin/fr/ajaury/gwenedeg/player/WasmAudioPlayer.kt index d695cd4..a218379 100644 --- a/shared/src/wasmJsMain/kotlin/fr/ajaury/gwenedeg/player/WasmAudioPlayer.kt +++ b/core/audioplayer/src/wasmJsMain/kotlin/fr/ajaury/gwenedeg/player/WasmAudioPlayer.kt @@ -1,7 +1,7 @@ package fr.ajaury.gwenedeg.player class WasmAudioPlayer : AudioPlayer { - override fun play(file: String) { + override fun play() { TODO("Not yet implemented") } @@ -17,7 +17,7 @@ class WasmAudioPlayer : AudioPlayer { TODO("Not yet implemented") } - override fun load(filePath: String) { + override fun load(uri: String) { TODO("Not yet implemented") } } diff --git a/core/audioplayer/src/wasmJsMain/kotlin/fr/ajaury/gwenedeg/player/di/AudioPlayerModule.wasmJs.kt b/core/audioplayer/src/wasmJsMain/kotlin/fr/ajaury/gwenedeg/player/di/AudioPlayerModule.wasmJs.kt new file mode 100644 index 0000000..785aa27 --- /dev/null +++ b/core/audioplayer/src/wasmJsMain/kotlin/fr/ajaury/gwenedeg/player/di/AudioPlayerModule.wasmJs.kt @@ -0,0 +1,6 @@ +package fr.ajaury.gwenedeg.player.di + +import org.koin.core.module.Module + +actual val audioPlayerModule: Module + get() = TODO("Not yet implemented") diff --git a/settings.gradle.kts b/settings.gradle.kts index e6ae54d..d8823e0 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -36,3 +36,4 @@ include(":androidApp") include(":desktopApp") include(":webApp") include(":shared") +include(":core:audioplayer") diff --git a/shared/build.gradle.kts b/shared/build.gradle.kts index 3e6d628..c5171f7 100644 --- a/shared/build.gradle.kts +++ b/shared/build.gradle.kts @@ -56,12 +56,11 @@ kotlin { sourceSets { androidMain.dependencies { implementation(libs.compose.uiToolingPreview) - - // Player audio - implementation(libs.media3.exoplayer) - implementation(libs.media3.common) } commonMain.dependencies { + // Audio player module + implementation(projects.core.audioplayer) + implementation(libs.compose.runtime) implementation(libs.compose.foundation) implementation(libs.compose.material3) diff --git a/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/App.kt b/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/App.kt index 7fc32e7..99204e1 100644 --- a/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/App.kt +++ b/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/App.kt @@ -7,9 +7,9 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.navigation3.runtime.NavEntry import androidx.navigation3.ui.NavDisplay import androidx.savedstate.compose.serialization.serializers.SnapshotStateListSerializer -import fr.ajaury.gwenedeg.di.platformModule import fr.ajaury.gwenedeg.di.sharedModule import fr.ajaury.gwenedeg.navigation.Route +import fr.ajaury.gwenedeg.player.di.audioPlayerModule import fr.ajaury.gwenedeg.player.ui.PlayerScreen import fr.ajaury.gwenedeg.records.ui.RecordsScreen import fr.ajaury.gwenedeg.theme.GwenedegTheme @@ -23,7 +23,7 @@ fun App() { configuration = koinConfiguration { modules( sharedModule, - platformModule, + audioPlayerModule, ) }, ) { 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 6a1df9b..3e961e5 100644 --- a/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/di/Modules.kt +++ b/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/di/Modules.kt @@ -4,7 +4,6 @@ import fr.ajaury.gwenedeg.player.ui.viewmodel.PlayerViewModel import fr.ajaury.gwenedeg.records.data.InMemoryRecordRepository import fr.ajaury.gwenedeg.records.domain.RecordRepository import fr.ajaury.gwenedeg.records.ui.viewmodel.RecordsViewModel -import org.koin.core.module.Module import org.koin.core.module.dsl.bind import org.koin.core.module.dsl.factoryOf import org.koin.core.module.dsl.viewModelOf @@ -15,5 +14,3 @@ val sharedModule = module { viewModelOf(::RecordsViewModel) viewModelOf(::PlayerViewModel) } - -expect val platformModule: Module diff --git a/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/ui/viewmodel/PlayerViewModel.kt b/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/ui/viewmodel/PlayerViewModel.kt index de38052..21e188a 100644 --- a/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/ui/viewmodel/PlayerViewModel.kt +++ b/shared/src/commonMain/kotlin/fr/ajaury/gwenedeg/player/ui/viewmodel/PlayerViewModel.kt @@ -3,6 +3,7 @@ package fr.ajaury.gwenedeg.player.ui.viewmodel import androidx.lifecycle.ViewModel import fr.ajaury.gwenedeg.player.AudioPlayer import fr.ajaury.gwenedeg.player.AudioSessionManager +import gwenedeg.shared.generated.resources.Res class PlayerViewModel( private val audioPlayer: AudioPlayer, @@ -13,7 +14,7 @@ class PlayerViewModel( } fun play(filePath: String) { - audioPlayer.load(filePath = filePath) + audioPlayer.load(uri = Res.getUri(filePath)) audioPlayer.play() } diff --git a/shared/src/webMain/kotlin/fr/ajaury/gwenedeg/di/Modules.web.kt b/shared/src/webMain/kotlin/fr/ajaury/gwenedeg/di/Modules.web.kt deleted file mode 100644 index bab5565..0000000 --- a/shared/src/webMain/kotlin/fr/ajaury/gwenedeg/di/Modules.web.kt +++ /dev/null @@ -1,4 +0,0 @@ -package fr.ajaury.gwenedeg.di - -actual val platformModule: org.koin.core.module.Module - get() = TODO("Not yet implemented")