Skip to content
Snippets Groups Projects
Commit 868c7ef0 authored by Eliot Berriot's avatar Eliot Berriot
Browse files

Merge branch '97-shuffle-after' into 'develop'

Resolve "Only shuffle tracks after current index ?"

Closes #97

See merge request funkwhale/funkwhale!104
parents f66bcf34 6a30e59a
No related branches found
No related tags found
No related merge requests found
Queue shuffle now apply only to tracks after the current one (#97)
...@@ -41,7 +41,6 @@ export default { ...@@ -41,7 +41,6 @@ export default {
state.currentIndex += 1 state.currentIndex += 1
} }
} }
}, },
getters: { getters: {
currentTrack: state => { currentTrack: state => {
...@@ -141,7 +140,9 @@ export default { ...@@ -141,7 +140,9 @@ export default {
commit('ended', true) commit('ended', true)
}, },
shuffle ({dispatch, commit, state}) { 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('player/currentTime', 0, {root: true})
commit('tracks', []) commit('tracks', [])
dispatch('appendMany', {tracks: shuffled}) dispatch('appendMany', {tracks: shuffled})
......
...@@ -316,18 +316,18 @@ describe('store/queue', () => { ...@@ -316,18 +316,18 @@ describe('store/queue', () => {
}) })
it('shuffle', (done) => { it('shuffle', (done) => {
let _shuffle = sandbox.stub(_, 'shuffle') let _shuffle = sandbox.stub(_, 'shuffle')
let tracks = [1, 2, 3] let tracks = ['a', 'b', 'c', 'd', 'e']
let shuffledTracks = [2, 3, 1] let shuffledTracks = ['e', 'd', 'c']
_shuffle.returns(shuffledTracks) _shuffle.returns(shuffledTracks)
testAction({ testAction({
action: store.actions.shuffle, action: store.actions.shuffle,
params: {state: {tracks: tracks}}, params: {state: {currentIndex: 1, tracks: tracks}},
expectedMutations: [ expectedMutations: [
{ type: 'player/currentTime', payload: 0 , options: {root: true}}, { type: 'player/currentTime', payload: 0 , options: {root: true}},
{ type: 'tracks', payload: [] } { type: 'tracks', payload: [] }
], ],
expectedActions: [ expectedActions: [
{ type: 'appendMany', payload: {tracks: shuffledTracks} } { type: 'appendMany', payload: {tracks: ['a', 'b'].concat(shuffledTracks)} }
] ]
}, done) }, done)
}) })
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment