From df2a468e89e41184dd8aaad6523f535885d45c9c Mon Sep 17 00:00:00 2001 From: Barnabas Balogh Date: Sun, 7 Jun 2026 11:30:33 +0000 Subject: [PATCH] feat(playback): mark items fully watched when progress exceeds 80% When playback position reaches 80% of runtime, send the full runtimeTicks to the server so items appear completely watched, matching the played flag already being set at this threshold. --- .../bbara/purefin/data/jellyfin/client/JellyfinApiClient.kt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/data/src/main/java/hu/bbara/purefin/data/jellyfin/client/JellyfinApiClient.kt b/data/src/main/java/hu/bbara/purefin/data/jellyfin/client/JellyfinApiClient.kt index c4a42bdb..3a5a4d94 100644 --- a/data/src/main/java/hu/bbara/purefin/data/jellyfin/client/JellyfinApiClient.kt +++ b/data/src/main/java/hu/bbara/purefin/data/jellyfin/client/JellyfinApiClient.kt @@ -403,6 +403,7 @@ class JellyfinApiClient @Inject constructor( ) = withContext(Dispatchers.IO) { if (runtimeTicks <= 0L) return@withContext val normalizedPlaybackPositionTicks = playbackPositionTicks.coerceIn(0L, runtimeTicks) + val isPastThreshold = normalizedPlaybackPositionTicks.toDouble() / runtimeTicks.toDouble() >= 0.8 logRequest("updatePlaybackPosition") { if (!ensureConfigured()) { return@logRequest @@ -411,8 +412,8 @@ class JellyfinApiClient @Inject constructor( itemId = mediaId, userId = getUserId(), data = UpdateUserItemDataDto( - playbackPositionTicks = normalizedPlaybackPositionTicks, - played = normalizedPlaybackPositionTicks.toDouble() / runtimeTicks.toDouble() >= 0.9, + playbackPositionTicks = if (isPastThreshold) runtimeTicks else normalizedPlaybackPositionTicks, + played = isPastThreshold, ) ) result.content