From 5347dbdff0d82d11196b455d0aef8d34613b86b0 Mon Sep 17 00:00:00 2001 From: Mikael Finstad Date: Sun, 19 Feb 2023 13:50:15 +0800 Subject: [PATCH] fix a bug with clear segments --- src/App.jsx | 2 +- src/hooks/useSegments.js | 16 ++++++++++------ 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index 85bf4901..a07bc665 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -638,7 +638,7 @@ const App = memo(() => { setCanvasPlayerEventId(0); setDuration(); cutSegmentsHistory.go(0); - clearSegments(); // TODO this will cause two history items + clearSegments(); setCutStartTimeManual(); setCutEndTimeManual(); setFileFormat(); diff --git a/src/hooks/useSegments.js b/src/hooks/useSegments.js index deeaccec..1ef41112 100644 --- a/src/hooks/useSegments.js +++ b/src/hooks/useSegments.js @@ -142,16 +142,20 @@ export default ({ }, [currentApparentCutSeg.end, currentApparentCutSeg.start, filePath, loadCutSegments, mainVideoStream]); const removeSegments = useCallback((removeSegmentIds) => { - if (cutSegments.length === 1 && cutSegments[0].start == null && cutSegments[0].end == null) return; // We are at initial segment, nothing more we can do (it cannot be removed) - setCutSegments((existing) => { - const newSegments = existing.filter((seg) => !removeSegmentIds.includes(seg.segId)); + setCutSegments((existingSegments) => { + if (existingSegments.length === 1 && existingSegments[0].start == null && existingSegments[0].end == null) { + return existingSegments; // We are at initial segment, nothing more we can do (it cannot be removed) + } + + const newSegments = existingSegments.filter((seg) => !removeSegmentIds.includes(seg.segId)); if (newSegments.length === 0) { - clearSegments(); // when removing the last segments, we start over - return existing; + // when removing the last segments, we start over + clearSegCounter(); + return createInitialCutSegments(); } return newSegments; }); - }, [clearSegments, cutSegments, setCutSegments]); + }, [clearSegCounter, createInitialCutSegments, setCutSegments]); const removeCutSegment = useCallback((index) => { removeSegments([cutSegments[index].segId]);