From d9aee11d4481340b7ab14910c2466c349fe8a54c Mon Sep 17 00:00:00 2001 From: Yiannis Christodoulou Date: Mon, 13 Oct 2025 01:49:53 +0300 Subject: [PATCH] fix: Edit: Chapter: When undoing / redoing edits, the edits are not saved --- .../client/src/components/TimelineControls.tsx | 2 ++ .../client/src/hooks/useVideoChapters.tsx | 12 ++++++++++++ 2 files changed, 14 insertions(+) diff --git a/frontend-tools/chapters-editor/client/src/components/TimelineControls.tsx b/frontend-tools/chapters-editor/client/src/components/TimelineControls.tsx index c2f3404c..ea26ea74 100644 --- a/frontend-tools/chapters-editor/client/src/components/TimelineControls.tsx +++ b/frontend-tools/chapters-editor/client/src/components/TimelineControls.tsx @@ -847,6 +847,7 @@ const TimelineControls = ({ document.addEventListener('update-trim', handleTrimUpdate as EventListener); document.addEventListener('delete-segment', scheduleAutoSave); document.addEventListener('split-segment', scheduleAutoSave); + document.addEventListener('undo-redo-autosave', scheduleAutoSave); return () => { logger.debug('Cleaning up auto-save event listeners...'); @@ -855,6 +856,7 @@ const TimelineControls = ({ document.removeEventListener('update-trim', handleTrimUpdate as EventListener); document.removeEventListener('delete-segment', scheduleAutoSave); document.removeEventListener('split-segment', scheduleAutoSave); + document.removeEventListener('undo-redo-autosave', scheduleAutoSave); // Clear any pending auto-save timer if (autoSaveTimerRef.current) { diff --git a/frontend-tools/chapters-editor/client/src/hooks/useVideoChapters.tsx b/frontend-tools/chapters-editor/client/src/hooks/useVideoChapters.tsx index dbc3b9fb..0b3d706f 100644 --- a/frontend-tools/chapters-editor/client/src/hooks/useVideoChapters.tsx +++ b/frontend-tools/chapters-editor/client/src/hooks/useVideoChapters.tsx @@ -620,6 +620,12 @@ const useVideoChapters = () => { setSplitPoints([...previousState.splitPoints]); setClipSegments(JSON.parse(JSON.stringify(previousState.clipSegments))); setHistoryPosition(historyPosition - 1); + + // Trigger auto-save by dispatching a custom event + setTimeout(() => { + const event = new CustomEvent('undo-redo-autosave'); + document.dispatchEvent(event); + }, 10); } else { logger.debug('Cannot undo: at earliest history position'); } @@ -648,6 +654,12 @@ const useVideoChapters = () => { setSplitPoints([...nextState.splitPoints]); setClipSegments(JSON.parse(JSON.stringify(nextState.clipSegments))); setHistoryPosition(historyPosition + 1); + + // Trigger auto-save by dispatching a custom event + setTimeout(() => { + const event = new CustomEvent('undo-redo-autosave'); + document.dispatchEvent(event); + }, 10); } else { logger.debug('Cannot redo: at latest history position'); }