diff --git a/core/player/src/main/java/hu/bbara/purefin/core/player/manager/PlayerManager.kt b/core/player/src/main/java/hu/bbara/purefin/core/player/manager/PlayerManager.kt index ba2e996..295e70f 100644 --- a/core/player/src/main/java/hu/bbara/purefin/core/player/manager/PlayerManager.kt +++ b/core/player/src/main/java/hu/bbara/purefin/core/player/manager/PlayerManager.kt @@ -116,11 +116,16 @@ class PlayerManager @Inject constructor( startProgressLoop() } - fun play(mediaItem: MediaItem, mediaContext: MediaContext? = null) { + fun play(mediaItem: MediaItem, mediaContext: MediaContext? = null, startPositionMs: Long? = null) { currentMediaContext = mediaContext - player.setMediaItem(mediaItem) + if (startPositionMs != null) { + player.setMediaItem(mediaItem, startPositionMs) + } else { + player.setMediaItem(mediaItem) + } player.prepare() player.playWhenReady = true + _progress.value = PlaybackProgressSnapshot() refreshMetadata(mediaItem) refreshQueue() _playbackState.update { it.copy(isEnded = false, error = null) } diff --git a/core/player/src/main/java/hu/bbara/purefin/core/player/viewmodel/PlayerViewModel.kt b/core/player/src/main/java/hu/bbara/purefin/core/player/viewmodel/PlayerViewModel.kt index 742cb60..a8d965b 100644 --- a/core/player/src/main/java/hu/bbara/purefin/core/player/viewmodel/PlayerViewModel.kt +++ b/core/player/src/main/java/hu/bbara/purefin/core/player/viewmodel/PlayerViewModel.kt @@ -148,10 +148,7 @@ class PlayerViewModel @Inject constructor( val preferenceKey = mediaRepository.episodes.value[uuid]?.seriesId?.toString() ?: id val mediaContext = MediaContext(mediaId = id, preferenceKey = preferenceKey) - playerManager.play(mediaItem, mediaContext) - - // Seek to resume position after play() is called - resumePositionMs?.let { playerManager.seekTo(it) } + playerManager.play(mediaItem, mediaContext, resumePositionMs) if (dataErrorMessage != null) { dataErrorMessage = null