Skip to content

Commit 306314b

Browse files
committed
Fix: endless loop in queue items retrieval
1 parent 138d5e4 commit 306314b

1 file changed

Lines changed: 22 additions & 25 deletions

File tree

src/layouts/default/PlayerOSD/PlayerFullscreen.vue

Lines changed: 22 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -410,6 +410,7 @@ import {
410410
EventType,
411411
MediaItemType,
412412
MediaType,
413+
PlayerQueue,
413414
QueueItem,
414415
Track,
415416
} from "@/plugins/api/interfaces";
@@ -640,29 +641,15 @@ const queueCommand = function (item: QueueItem | undefined, command: string) {
640641
}
641642
};
642643
643-
const loadItems = async function (clear = false) {
644-
if (clear) {
645-
tempHide.value = true;
646-
queueItems.value = [];
647-
await sleep(100);
648-
tempHide.value = false;
649-
return;
650-
}
651-
652-
if (store.activePlayerQueue) {
653-
const offset = queueItems.value.length;
654-
const limit = (store.activePlayerQueue.current_index || 0) + 50;
655-
const result = await api.getPlayerQueueItems(
656-
store.activePlayerQueue.queue_id,
657-
limit,
658-
offset,
659-
);
660-
queueItems.value.push(...result);
661-
}
644+
const resetItems = async function () {
645+
tempHide.value = true;
646+
queueItems.value = [];
647+
await sleep(100);
648+
tempHide.value = false;
662649
};
663650
664651
// eslint-disable-next-line @typescript-eslint/no-explicit-any
665-
const loadNextPage = function ({ done }: { done: any }) {
652+
const loadNextPage = async function ({ done }: { done: any }) {
666653
if (!store.activePlayerQueue || store.activePlayerQueue.items == 0) {
667654
done("empty");
668655
return;
@@ -671,10 +658,19 @@ const loadNextPage = function ({ done }: { done: any }) {
671658
done("empty");
672659
return;
673660
}
674-
675-
loadItems(false).then(() => {
661+
const offset = queueItems.value.length;
662+
const limit = (store.activePlayerQueue.current_index || 0) + 50;
663+
const result = await api.getPlayerQueueItems(
664+
store.activePlayerQueue.queue_id,
665+
limit,
666+
offset,
667+
);
668+
queueItems.value.push(...result);
669+
if (result.length < 50) {
670+
done("empty");
671+
} else {
676672
done("ok");
677-
});
673+
}
678674
};
679675
680676
// listen for item updates to refresh items when that happens
@@ -683,7 +679,8 @@ onMounted(() => {
683679
EventType.QUEUE_ITEMS_UPDATED,
684680
(evt: EventMessage) => {
685681
if (evt.object_id != store.activePlayerQueue?.queue_id) return;
686-
loadItems(true);
682+
const queue = evt.data as PlayerQueue;
683+
resetItems();
687684
},
688685
);
689686
onBeforeUnmount(unsub);
@@ -740,7 +737,7 @@ const activeQueuePanelClick = function () {
740737
watch(
741738
() => store.activePlayerId,
742739
(val) => {
743-
loadItems(true);
740+
resetItems();
744741
},
745742
{ immediate: true },
746743
);

0 commit comments

Comments
 (0)