fixed drag and drop behavior
This commit is contained in:
@@ -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
|
||||
// ===================================================================
|
||||
|
||||
Reference in New Issue
Block a user