From 1523177ffa2dd989b5f4824f32d3f37a786e142f Mon Sep 17 00:00:00 2001 From: tapframe <85391825+tapframe@users.noreply.github.com> Date: Sat, 2 May 2026 14:27:04 +0530 Subject: [PATCH] fix: improve trakt scrobble handling --- .../nuvio/app/features/player/PlayerScreen.kt | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/composeApp/src/commonMain/kotlin/com/nuvio/app/features/player/PlayerScreen.kt b/composeApp/src/commonMain/kotlin/com/nuvio/app/features/player/PlayerScreen.kt index 3dea8937..b9f9df07 100644 --- a/composeApp/src/commonMain/kotlin/com/nuvio/app/features/player/PlayerScreen.kt +++ b/composeApp/src/commonMain/kotlin/com/nuvio/app/features/player/PlayerScreen.kt @@ -223,7 +223,6 @@ fun PlayerScreen( activeEpisodeNumber, ) { mutableStateOf(false) } var hasSentCompletionScrobbleForCurrentItem by remember( - activeSourceUrl, activeVideoId, activeSeasonNumber, activeEpisodeNumber, @@ -379,7 +378,6 @@ fun PlayerScreen( val progressPercent = currentPlaybackProgressPercent() if (progressPercent >= 1f && progressPercent < 80f) { emitTraktScrobbleStop(progressPercent) - hasSentCompletionScrobbleForCurrentItem = false return } @@ -1195,15 +1193,20 @@ fun PlayerScreen( pausedOverlayVisible = true } - LaunchedEffect(playbackSnapshot.positionMs, playbackSnapshot.isPlaying, playbackSnapshot.isEnded, playbackSnapshot.durationMs) { + LaunchedEffect( + playbackSnapshot.positionMs, + playbackSnapshot.isPlaying, + playbackSnapshot.isLoading, + playbackSnapshot.isEnded, + playbackSnapshot.durationMs, + ) { if (playbackSnapshot.isEnded) { - hasSentCompletionScrobbleForCurrentItem = false flushWatchProgress() previousIsPlaying = false return@LaunchedEffect } - if (previousIsPlaying && !playbackSnapshot.isPlaying) { + if (previousIsPlaying && !playbackSnapshot.isPlaying && !playbackSnapshot.isLoading) { flushWatchProgress() } @@ -1211,7 +1214,9 @@ fun PlayerScreen( emitTraktScrobbleStart() } - previousIsPlaying = playbackSnapshot.isPlaying + if (!playbackSnapshot.isLoading) { + previousIsPlaying = playbackSnapshot.isPlaying + } if (!playbackSnapshot.isPlaying) { return@LaunchedEffect