From 12e743afcd86b8701386c11d58d10bb941202991 Mon Sep 17 00:00:00 2001 From: Jcuhfehl <91626737+Jcuhfehl@users.noreply.github.com> Date: Thu, 26 Jan 2023 19:28:45 +0100 Subject: [PATCH] Fix playback progress on downloads when playback has already started (#243) * Fix playback progress when playback has already started Before, if an item had playback progress when the download was started, the player would jump to the end of the item immediately when playing from downloads. * Fix syncing playback progress when remote is ahead * Fix playback progress when playback has already started Before, if an item had playback progress when the download was started, the player would jump to the end of the item immediately when playing from downloads. * Fix syncing playback progress when remote is ahead --- .../main/java/dev/jdtech/jellyfin/utils/DownloadUtilities.kt | 4 ++-- .../dev/jdtech/jellyfin/viewmodels/PlayerActivityViewModel.kt | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/player/core/src/main/java/dev/jdtech/jellyfin/utils/DownloadUtilities.kt b/player/core/src/main/java/dev/jdtech/jellyfin/utils/DownloadUtilities.kt index eef41cd5..39683022 100644 --- a/player/core/src/main/java/dev/jdtech/jellyfin/utils/DownloadUtilities.kt +++ b/player/core/src/main/java/dev/jdtech/jellyfin/utils/DownloadUtilities.kt @@ -237,7 +237,7 @@ suspend fun syncPlaybackProgress( val localPlayedPercentage = it.item?.playedPercentage val item = jellyfinRepository.getItem(it.itemId) - val remotePlaybackProgress = item.userData?.playbackPositionTicks?.div(10000) + val remotePlaybackProgress = item.userData?.playbackPositionTicks val remotePlayedPercentage = item.userData?.playedPercentage var playbackProgress: Long = 0 @@ -267,7 +267,7 @@ suspend fun syncPlaybackProgress( ) jellyfinRepository.postPlaybackProgress( it.itemId, - playbackProgress.times(10000), + playbackProgress, true ) Timber.d("Percentage: $playedPercentage") diff --git a/player/video/src/main/java/dev/jdtech/jellyfin/viewmodels/PlayerActivityViewModel.kt b/player/video/src/main/java/dev/jdtech/jellyfin/viewmodels/PlayerActivityViewModel.kt index 6ae26b6c..d13c45f0 100644 --- a/player/video/src/main/java/dev/jdtech/jellyfin/viewmodels/PlayerActivityViewModel.kt +++ b/player/video/src/main/java/dev/jdtech/jellyfin/viewmodels/PlayerActivityViewModel.kt @@ -149,7 +149,7 @@ constructor( Timber.e(e) } - player.setMediaItems(mediaItems, currentMediaItemIndex, items.getOrNull(currentMediaItemIndex)?.playbackPosition ?: C.TIME_UNSET) + player.setMediaItems(mediaItems, currentMediaItemIndex, items.getOrNull(currentMediaItemIndex)?.playbackPosition?.div(10000) ?: C.TIME_UNSET) if (!appPreferences.playerMpv || !playFromDownloads) player.prepare() // TODO: This line causes a crash when playing from downloads with MPV player.play() @@ -185,7 +185,7 @@ constructor( if (player.currentMediaItem != null && player.currentMediaItem!!.mediaId.isNotEmpty()) { val itemId = UUID.fromString(player.currentMediaItem!!.mediaId) if (playFromDownloads) { - postDownloadPlaybackProgress(downloadDatabase, itemId, player.currentPosition, (player.currentPosition.toDouble() / player.duration.toDouble()).times(100)) // TODO Automatically use the correct item + postDownloadPlaybackProgress(downloadDatabase, items[0].itemId, player.currentPosition.times(10000), (player.currentPosition.toDouble() / player.duration.toDouble()).times(100)) // TODO Automatically use the correct item } try { jellyfinRepository.postPlaybackProgress(