diff --git a/jam-ui/src/components/client/JKSessionBackingTrackPlayer.js b/jam-ui/src/components/client/JKSessionBackingTrackPlayer.js index d9972a503..3248c1c4d 100644 --- a/jam-ui/src/components/client/JKSessionBackingTrackPlayer.js +++ b/jam-ui/src/components/client/JKSessionBackingTrackPlayer.js @@ -111,6 +111,13 @@ const JKSessionBackingTrackPlayer = ({ return; } + // Warn about suspicious durations (file format validation) + const tenHoursMs = 10 * 60 * 60 * 1000; // 10 hours + const oneSecondMs = 1000; + if (validDuration > tenHoursMs || validDuration < oneSecondMs) { + console.warn('[BTP] Suspicious duration detected:', validDuration, 'ms. May indicate parsing error.'); + } + setDurationMs(validDuration); setDuration(formatTime(validDuration)); clearError(); // Clear any previous errors @@ -191,6 +198,18 @@ const JKSessionBackingTrackPlayer = ({ }; }, [isPlaying, jamClient, backingTrack]); + // Cleanup on unmount: stop playback to prevent stale state + useEffect(() => { + return () => { + // Stop playback when component unmounts + if (jamClient && isPlaying) { + jamClient.SessionStopPlay().catch((err) => { + console.error('[BTP] Error stopping playback on unmount:', err); + }); + } + }; + }, [jamClient, isPlaying]); + const handlePlay = async () => { if (isOperating) return; // Prevent rapid clicks setIsOperating(true);