From e259e3dd74217491239db571299710e527301f3e Mon Sep 17 00:00:00 2001 From: wvffle Date: Fri, 4 Nov 2022 13:54:04 +0000 Subject: [PATCH] Fix player closing when queue ends --- changes/changelog.d/1931.bugfix | 1 + front/src/composables/audio/queue.ts | 16 ++++++++++------ 2 files changed, 11 insertions(+), 6 deletions(-) create mode 100644 changes/changelog.d/1931.bugfix diff --git a/changes/changelog.d/1931.bugfix b/changes/changelog.d/1931.bugfix new file mode 100644 index 000000000..f9965a902 --- /dev/null +++ b/changes/changelog.d/1931.bugfix @@ -0,0 +1 @@ +Fix player closing when queue ends (#1931) diff --git a/front/src/composables/audio/queue.ts b/front/src/composables/audio/queue.ts index 5d108cd71..1ada52cee 100644 --- a/front/src/composables/audio/queue.ts +++ b/front/src/composables/audio/queue.ts @@ -94,7 +94,7 @@ const queue = computed(() => { }) // Current Index -export const currentIndex = useClamp(useStorage('queue:index', 0), 0, () => tracks.value.length) +export const currentIndex = useClamp(useStorage('queue:index', 0), 0, () => tracks.value.length - 1) export const currentTrack = computed(() => queue.value[currentIndex.value]) // Use Queue @@ -204,11 +204,15 @@ export const useQueue = createGlobalState(() => { // Next track const hasNext = computed(() => looping.value === LoopingMode.LoopQueue || currentIndex.value !== tracks.value.length - 1) const playNext = async (force = false) => { - // Loop entire queue / change track to the next one - if (looping.value === LoopingMode.LoopQueue && currentIndex.value === tracks.value.length - 1 && force !== true) { - // Loop track programmatically if it is the only track in the queue - if (tracks.value.length === 1) return playTrack(currentIndex.value, true) - return playTrack(0) + if (currentIndex.value === tracks.value.length - 1) { + // Loop entire queue / change track to the next one + if (looping.value === LoopingMode.LoopQueue && force !== true) { + // Loop track programmatically if it is the only track in the queue + if (tracks.value.length === 1) return playTrack(currentIndex.value, true) + return playTrack(0) + } + + isPlaying.value = false } return playTrack(currentIndex.value + 1)