fixed drag and drop behavior

This commit is contained in:
2026-02-19 22:37:19 -05:00
parent 193f65bd98
commit 56cf92a44c
11 changed files with 825 additions and 44 deletions
+51
View File
@@ -131,6 +131,38 @@ class QueueStore {
);
}
break;
case 'move':
if (delta.positions && delta.tracks) {
const removeSet = new Set(delta.positions);
const remaining = tracks.filter(
(_, i) => !removeSet.has(i),
);
// Adjust insertion index for removed elements.
let adjustedIdx = delta.index;
for (const pos of delta.positions) {
if (pos < delta.index) {
adjustedIdx--;
}
}
adjustedIdx = Math.max(
0,
Math.min(adjustedIdx, remaining.length),
);
const before = remaining.slice(0, adjustedIdx);
const after = remaining.slice(adjustedIdx);
this.state.tracks = [
...before,
...delta.tracks,
...after,
];
}
break;
}
@@ -198,6 +230,25 @@ class QueueStore {
EventsEmit(Events.RequestPlayQueueIndex, index);
}
insertTracksAtIndex(filePaths: string[], index: number): void {
EventsEmit(
Events.RequestInsertTracksAtIndex,
filePaths,
index,
);
}
moveTracksInQueue(
fromIndices: number[],
toIndex: number,
): void {
EventsEmit(
Events.RequestMoveQueueTracks,
fromIndices,
toIndex,
);
}
// ===================================================================
// SUBSCRIPTION SYSTEM
// ===================================================================