diff --git a/changes/changelog.d/97.enhancement b/changes/changelog.d/97.enhancement new file mode 100644 index 0000000000000000000000000000000000000000..21a552ae25d6c476c690b1874af07ebb8acf59b9 --- /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 07263da63315deb04fb7d819037bbd04ff669931..a864405cf675a1f90f485ae53845240c06fdaae5 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 5439362dc389e1731e65e038a58c247974a816b8..b445229ec44fa680be900eba1007dfe6aa1f6bbe 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) })