From b6a183f6005b5a3582a719a777b2b4ecf1dd58e8 Mon Sep 17 00:00:00 2001 From: Agate Date: Thu, 7 May 2020 17:50:20 +0200 Subject: [PATCH] Fix #1092: Ensure player doesn't disappear when last queue track is removed manually --- changes/changelog.d/1092.bugfix | 1 + front/src/store/queue.js | 9 +++++++-- front/tests/unit/specs/store/queue.spec.js | 2 +- 3 files changed, 9 insertions(+), 3 deletions(-) create mode 100644 changes/changelog.d/1092.bugfix diff --git a/changes/changelog.d/1092.bugfix b/changes/changelog.d/1092.bugfix new file mode 100644 index 000000000..018470ac8 --- /dev/null +++ b/changes/changelog.d/1092.bugfix @@ -0,0 +1 @@ +Ensure player doesn't disappear when last queue track is removed manually (#1092) diff --git a/front/src/store/queue.js b/front/src/store/queue.js index 5514db921..a5ab856a4 100644 --- a/front/src/store/queue.js +++ b/front/src/store/queue.js @@ -104,8 +104,13 @@ export default { commit('splice', {start: index, size: 1}) if (index < state.currentIndex) { commit('currentIndex', state.currentIndex - 1) - } - if (current) { + } else if (index > 0 && index === state.tracks.length) { + // kind of a edge case: if you delete the last track of the queue + // we set current index to the previous one to avoid the queue tab from + // being stuck because the player disappeared + // cf #1092 + commit('currentIndex', state.tracks.length - 1) + } else if (current) { // we play next track, which now have the same index commit('currentIndex', index) } diff --git a/front/tests/unit/specs/store/queue.spec.js b/front/tests/unit/specs/store/queue.spec.js index afdf46c90..f69098246 100644 --- a/front/tests/unit/specs/store/queue.spec.js +++ b/front/tests/unit/specs/store/queue.spec.js @@ -133,7 +133,7 @@ describe('store/queue', () => { testAction({ action: store.actions.cleanTrack, payload: 3, - params: {state: {currentIndex: 2, tracks: []}}, + params: {state: {currentIndex: 2, tracks: [1, 2, 3, 4, 5]}}, expectedMutations: [ { type: 'splice', payload: {start: 3, size: 1} } ]