From 38d6107423943b81c653a87ec2adce833642323c Mon Sep 17 00:00:00 2001 From: Antoine Jaury Date: Mon, 22 Jun 2026 13:47:29 +0200 Subject: [PATCH] fix: correct replay action to prevent reloading same file --- .../player/ui/viewmodel/PlayerViewModel.kt | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) 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 d4f1e3e..9765cae 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 @@ -95,28 +95,32 @@ class PlayerViewModel( fun loadSubtitle(resourcePath: String) { viewModelScope.launch { - subtitle.value = - try { - val content = resourceReader.read(resourcePath = resourcePath) - subtitleRepository.getSubtitle(content = content) - } catch (exception: Exception) { - logger.error( - message = "Failed to load subtitle: $resourcePath", - throwable = exception, - ) - Subtitle(emptyList()) - } + subtitle.value = try { + val content = resourceReader.read(resourcePath = resourcePath) + subtitleRepository.getSubtitle(content = content) + } catch (exception: Exception) { + logger.error( + message = "Failed to load subtitle: $resourcePath", + throwable = exception, + ) + Subtitle(emptyList()) + } } } fun performMainPlayAction() { when (uiState.value.playbackState) { PlaybackState.PLAYING -> audioPlayer.pause() - PlaybackState.ENDED -> filePath?.let { play(it) } + PlaybackState.ENDED -> replay() PlaybackState.PAUSED, PlaybackState.IDLE -> audioPlayer.play() } } + fun replay() { + audioPlayer.seekTo(0.milliseconds) + audioPlayer.play() + } + fun seekToTimePart(progress: Float) { val position = (progress.toDouble() * uiState.value.playbackTiming.durationMs).milliseconds audioPlayer.seekTo(position)