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'); }