From e29615a885f7e7744785522c14bc76a7aea4d7a4 Mon Sep 17 00:00:00 2001 From: empty Date: Tue, 6 Jan 2026 17:55:36 +0800 Subject: [PATCH] fix: Sync currentTime when user selects a frame in timeline --- .../src/components/preview/preview-player.tsx | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/frontend/src/components/preview/preview-player.tsx b/frontend/src/components/preview/preview-player.tsx index 9330bd9..a140657 100644 --- a/frontend/src/components/preview/preview-player.tsx +++ b/frontend/src/components/preview/preview-player.tsx @@ -88,6 +88,23 @@ export function PreviewPlayer() { const selectedFrame = storyboard?.frames.find((f) => f.id === selectedFrameId) + // Sync currentTime when user selects a frame (not during playback) + useEffect(() => { + if (isPlaying || !storyboard?.frames.length || !selectedFrameId) return + + // Calculate start time of selected frame + let startTime = 0 + for (const frame of storyboard.frames) { + if (frame.id === selectedFrameId) break + startTime += frame.duration + } + + // Only update if different (avoid infinite loop) + if (Math.abs(currentTime - startTime) > 0.1) { + setCurrentTime(startTime) + } + }, [selectedFrameId, isPlaying]) + // Audio playback sync useEffect(() => { if (!audioRef.current) return