fix: Cannot play the same content. The previous session got stuck

This commit is contained in:
2026-03-03 22:26:29 +01:00
parent 3941c67d8b
commit 43a15c4662
2 changed files with 8 additions and 6 deletions

View File

@@ -116,11 +116,16 @@ class PlayerManager @Inject constructor(
startProgressLoop() startProgressLoop()
} }
fun play(mediaItem: MediaItem, mediaContext: MediaContext? = null) { fun play(mediaItem: MediaItem, mediaContext: MediaContext? = null, startPositionMs: Long? = null) {
currentMediaContext = mediaContext currentMediaContext = mediaContext
player.setMediaItem(mediaItem) if (startPositionMs != null) {
player.setMediaItem(mediaItem, startPositionMs)
} else {
player.setMediaItem(mediaItem)
}
player.prepare() player.prepare()
player.playWhenReady = true player.playWhenReady = true
_progress.value = PlaybackProgressSnapshot()
refreshMetadata(mediaItem) refreshMetadata(mediaItem)
refreshQueue() refreshQueue()
_playbackState.update { it.copy(isEnded = false, error = null) } _playbackState.update { it.copy(isEnded = false, error = null) }

View File

@@ -148,10 +148,7 @@ class PlayerViewModel @Inject constructor(
val preferenceKey = mediaRepository.episodes.value[uuid]?.seriesId?.toString() ?: id val preferenceKey = mediaRepository.episodes.value[uuid]?.seriesId?.toString() ?: id
val mediaContext = MediaContext(mediaId = id, preferenceKey = preferenceKey) val mediaContext = MediaContext(mediaId = id, preferenceKey = preferenceKey)
playerManager.play(mediaItem, mediaContext) playerManager.play(mediaItem, mediaContext, resumePositionMs)
// Seek to resume position after play() is called
resumePositionMs?.let { playerManager.seekTo(it) }
if (dataErrorMessage != null) { if (dataErrorMessage != null) {
dataErrorMessage = null dataErrorMessage = null