Add move item functionality to Settings.
This commit is contained in:
parent
d4400c5c31
commit
e591db7bcf
|
@ -59,6 +59,32 @@ export class Settings {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async moveQueueItem(
|
||||||
|
id: number,
|
||||||
|
direction: Queue.MoveDirection,
|
||||||
|
): Promise<void> {
|
||||||
|
const targetItem = this.queue.find((item) => item.id === id);
|
||||||
|
if (targetItem === undefined) {
|
||||||
|
throw new Error(`Failed to move item with ID: ${id}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
const previousIndex = targetItem.sortIndex;
|
||||||
|
if (direction === 'down') {
|
||||||
|
targetItem.sortIndex += 1;
|
||||||
|
} else if (direction === 'up') {
|
||||||
|
targetItem.sortIndex -= 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
const existingItem = this.queue.find(
|
||||||
|
(item) => item.sortIndex === targetItem.sortIndex,
|
||||||
|
);
|
||||||
|
if (existingItem !== undefined) {
|
||||||
|
existingItem.sortIndex = previousIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
await this.save();
|
||||||
|
}
|
||||||
|
|
||||||
public newQueueItemId(): number {
|
public newQueueItemId(): number {
|
||||||
const item = this.queue.sort((a, b) => b.id - a.id)[0];
|
const item = this.queue.sort((a, b) => b.id - a.id)[0];
|
||||||
return item === undefined ? 1 : item.id + 1;
|
return item === undefined ? 1 : item.id + 1;
|
||||||
|
|
|
@ -26,5 +26,7 @@ declare global {
|
||||||
text: string;
|
text: string;
|
||||||
url: string;
|
url: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
type MoveDirection = 'up' | 'down';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue