From 2a2ad88655d543b57714bb19d08a5db4f191f7b5 Mon Sep 17 00:00:00 2001 From: FineFindus Date: Sat, 1 Feb 2025 09:24:51 +0100 Subject: [PATCH] fix(Player): save watch position when playback ends This fixes an issue, where the watch position would not correctly be saved as the fully watched video. This could occur when the last part of a video was skipped by a sponsorblock segment. --- .../github/libretube/services/AbstractPlayerService.kt | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/github/libretube/services/AbstractPlayerService.kt b/app/src/main/java/com/github/libretube/services/AbstractPlayerService.kt index 7b3c5655e..9e9bb03c9 100644 --- a/app/src/main/java/com/github/libretube/services/AbstractPlayerService.kt +++ b/app/src/main/java/com/github/libretube/services/AbstractPlayerService.kt @@ -94,8 +94,13 @@ abstract class AbstractPlayerService : MediaLibraryService(), MediaLibrarySessio override fun onPlaybackStateChanged(playbackState: Int) { super.onPlaybackStateChanged(playbackState) - if (playbackState == Player.STATE_READY) { - isTransitioning = false + when (playbackState) { + Player.STATE_ENDED -> { + exoPlayer?.let { PlayerHelper.saveWatchPosition(it, videoId) } + } + Player.STATE_READY -> { + isTransitioning = false + } } } }