diff --git a/src/lib/queue.svelte.ts b/src/lib/queue.svelte.ts index 681fe4e..98bca9e 100644 --- a/src/lib/queue.svelte.ts +++ b/src/lib/queue.svelte.ts @@ -67,7 +67,6 @@ type HistoryState = { tracks: Song[]; pos: number; keys: number[] }; const history: HistoryState[] = []; let historyIndex = -1; let nextTrackKey = 0; -let _undoing = false; export const copy = () => { if (queue.sel.length) @@ -118,9 +117,12 @@ const record = () => { if ( previous && previous.tracks.length === tracks.length && - previous.tracks.every((track, i) => track === tracks[i]) - ) + previous.tracks.every((track, i) => track === tracks[i]) && + previous.keys.every((key, i) => key === queue.keys[i]) + ) { + previous.pos = pos; return; + } history.splice(historyIndex + 1); history.push({ tracks: [...tracks], pos, keys: [...queue.keys] }); @@ -150,14 +152,12 @@ const restoreHistory = (state: HistoryState, previous: HistoryState) => { export const undo = () => { if (historyIndex <= 0) return; - _undoing = true; const previous = history[historyIndex]; restoreHistory(history[--historyIndex], previous); }; export const redo = () => { if (historyIndex >= history.length - 1) return; - _undoing = true; const previous = history[historyIndex]; restoreHistory(history[++historyIndex], previous); }; @@ -579,8 +579,7 @@ $effect.root(() => { $effect(() => { queue.pos; - if (_undoing) _undoing = false; - else record(); + record(); const track = queue.tracks[queue.pos]; if (!track) {