From 6a30e59aa28555dc508e8f84445ab790639ef01d Mon Sep 17 00:00:00 2001 From: Eliot Berriot <contact@eliotberriot.com> Date: Fri, 23 Mar 2018 16:28:30 +0100 Subject: [PATCH] Fix #97: Queue shuffle now apply only to tracks after the current one --- changes/changelog.d/97.enhancement | 1 + front/src/store/queue.js | 5 +++-- front/test/unit/specs/store/queue.spec.js | 8 ++++---- 3 files changed, 8 insertions(+), 6 deletions(-) create mode 100644 changes/changelog.d/97.enhancement diff --git a/changes/changelog.d/97.enhancement b/changes/changelog.d/97.enhancement new file mode 100644 index 00000000..21a552ae --- /dev/null +++ b/changes/changelog.d/97.enhancement @@ -0,0 +1 @@ +Queue shuffle now apply only to tracks after the current one (#97) diff --git a/front/src/store/queue.js b/front/src/store/queue.js index 07263da6..a864405c 100644 --- a/front/src/store/queue.js +++ b/front/src/store/queue.js @@ -41,7 +41,6 @@ export default { state.currentIndex += 1 } } - }, getters: { currentTrack: state => { @@ -141,7 +140,9 @@ export default { commit('ended', true) }, shuffle ({dispatch, commit, state}) { - let shuffled = _.shuffle(state.tracks) + let toKeep = state.tracks.slice(0, state.currentIndex + 1) + let toShuffle = state.tracks.slice(state.currentIndex + 1) + let shuffled = toKeep.concat(_.shuffle(toShuffle)) commit('player/currentTime', 0, {root: true}) commit('tracks', []) dispatch('appendMany', {tracks: shuffled}) diff --git a/front/test/unit/specs/store/queue.spec.js b/front/test/unit/specs/store/queue.spec.js index 5439362d..b445229e 100644 --- a/front/test/unit/specs/store/queue.spec.js +++ b/front/test/unit/specs/store/queue.spec.js @@ -316,18 +316,18 @@ describe('store/queue', () => { }) it('shuffle', (done) => { let _shuffle = sandbox.stub(_, 'shuffle') - let tracks = [1, 2, 3] - let shuffledTracks = [2, 3, 1] + let tracks = ['a', 'b', 'c', 'd', 'e'] + let shuffledTracks = ['e', 'd', 'c'] _shuffle.returns(shuffledTracks) testAction({ action: store.actions.shuffle, - params: {state: {tracks: tracks}}, + params: {state: {currentIndex: 1, tracks: tracks}}, expectedMutations: [ { type: 'player/currentTime', payload: 0 , options: {root: true}}, { type: 'tracks', payload: [] } ], expectedActions: [ - { type: 'appendMany', payload: {tracks: shuffledTracks} } + { type: 'appendMany', payload: {tracks: ['a', 'b'].concat(shuffledTracks)} } ] }, done) }) -- GitLab