From f5909da5844508092459f7fb5c82bfca9e2af7a9 Mon Sep 17 00:00:00 2001 From: chrisk325 Date: Mon, 23 Mar 2026 11:39:39 +0530 Subject: [PATCH] minor fix to trakt duplicating --- src/hooks/useTraktAutosync.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/hooks/useTraktAutosync.ts b/src/hooks/useTraktAutosync.ts index f4cbe5a7..9f8ecdf3 100644 --- a/src/hooks/useTraktAutosync.ts +++ b/src/hooks/useTraktAutosync.ts @@ -710,11 +710,27 @@ export function useTraktAutosync(options: TraktAutosyncOptions) { logger.log(`[TraktAutosync] Manual state reset for: ${options.title}`); }, [options.title]); + // Resume session after app foreground return — clears hasStopped so a fresh + // /scrobble/start can be sent without triggering the remount-duplicate guard. + // Only re-opens if session isn't complete (already scrobbled). + const resumeSession = useCallback(async (currentTime: number, duration: number) => { + if (isSessionComplete.current) { + logger.log(`[TraktAutosync] resumeSession: session complete, skipping`); + return; + } + if (isUnmounted.current) return; + logger.log(`[TraktAutosync] resumeSession: clearing hasStopped/hasStartedWatching and re-opening session`); + hasStopped.current = false; + hasStartedWatching.current = false; + await handlePlaybackStart(currentTime, duration); + }, [handlePlaybackStart]); + return { isAuthenticated, handlePlaybackStart, handleProgressUpdate, handlePlaybackEnd, + resumeSession, resetState }; }