From fe47b07464a0ec58a8304e369d37a419cf29e1c8 Mon Sep 17 00:00:00 2001 From: wiiiii123 Date: Mon, 25 May 2026 00:28:37 +0700 Subject: [PATCH] fix(editor): route companion audio resume paths --- src/components/video-editor/VideoEditor.tsx | 30 ++++++++++++++------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/src/components/video-editor/VideoEditor.tsx b/src/components/video-editor/VideoEditor.tsx index 2e39b09c..9e80a854 100644 --- a/src/components/video-editor/VideoEditor.tsx +++ b/src/components/video-editor/VideoEditor.tsx @@ -2299,23 +2299,25 @@ export default function VideoEditor() { } return window.electronAPI.onRecordingSessionChanged((session) => { + const sessionSourcePath = session?.videoPath ? fromFileUrl(session.videoPath) : null; + const sessionWebcamPath = session?.webcamPath ? fromFileUrl(session.webcamPath) : null; console.log("[VideoEditor] onRecordingSessionChanged received!", { hasSession: Boolean(session), hasSessionVideoPath: Boolean(session?.videoPath), hasVideoSourcePath: Boolean(videoSourcePath), - match: session?.videoPath === videoSourcePath, - hasWebcamPath: Boolean(session?.webcamPath), + match: sessionSourcePath === videoSourcePath, + hasWebcamPath: Boolean(sessionWebcamPath), }); - if (!session || session.videoPath !== videoSourcePath) { + if (!session || sessionSourcePath !== videoSourcePath) { return; } setWebcam((prev) => ({ ...prev, - enabled: Boolean(session.webcamPath), - sourcePath: session.webcamPath ?? null, - timeOffsetMs: session.webcamPath + enabled: Boolean(sessionWebcamPath), + sourcePath: sessionWebcamPath, + timeOffsetMs: sessionWebcamPath ? (session.timeOffsetMs ?? prev.timeOffsetMs) : DEFAULT_WEBCAM_TIME_OFFSET_MS, })); @@ -3185,6 +3187,15 @@ export default function VideoEditor() { }, }); + const startPlayback = useCallback(() => { + const playback = videoPlaybackRef.current; + const video = playback?.video; + if (!playback || !video) return; + + audio.playSourceAudioPreview(); + playback.play().catch((err) => console.error("Video play failed:", err)); + }, [audio.playSourceAudioPreview]); + function togglePlayPause() { const playback = videoPlaybackRef.current; const video = playback?.video; @@ -3193,8 +3204,7 @@ export default function VideoEditor() { if (!video.paused && !video.ended) { playback.pause(); } else { - audio.playSourceAudioPreview(); - playback.play().catch((err) => console.error("Video play failed:", err)); + startPlayback(); } } @@ -3905,7 +3915,7 @@ export default function VideoEditor() { const playback = videoPlaybackRef.current; if (playback?.video) { if (playback.video.paused) { - playback.play().catch(console.error); + startPlayback(); } else { playback.pause(); } @@ -3915,7 +3925,7 @@ export default function VideoEditor() { window.addEventListener("keydown", handleKeyDown, { capture: true }); return () => window.removeEventListener("keydown", handleKeyDown, { capture: true }); - }, [shortcuts, isMac, handleUndo, handleRedo]); + }, [shortcuts, isMac, handleUndo, handleRedo, startPlayback]); useEffect(() => { if (selectedZoomId && !zoomRegions.some((region) => region.id === selectedZoomId)) {