Add option to shuffle playlist

This commit is contained in:
Deluan 2020-05-16 19:11:52 -04:00
parent c43798c5dd
commit bf1dc33782
2 changed files with 13 additions and 2 deletions

View File

@ -48,7 +48,9 @@ const shuffle = (data) => {
;[ids[i], ids[j]] = [ids[j], ids[i]]
}
const shuffled = {}
ids.forEach((id) => (shuffled[id] = data[id]))
// The "_" is to force the object key to be a string, so it keeps the order when adding to object
// or else the keys will always be in the same (numerically) order
ids.forEach((id) => (shuffled['_' + id] = data[id]))
return shuffled
}

View File

@ -5,9 +5,10 @@ import {
useTranslate,
} from 'react-admin'
import PlayArrowIcon from '@material-ui/icons/PlayArrow'
import ShuffleIcon from '@material-ui/icons/Shuffle'
import React from 'react'
import { useDispatch } from 'react-redux'
import { playTracks } from '../audioplayer'
import { playTracks, shuffleTracks } from '../audioplayer'
const PlaylistActions = ({
className,
@ -30,6 +31,14 @@ const PlaylistActions = ({
>
<PlayArrowIcon />
</Button>
<Button
onClick={() => {
dispatch(shuffleTracks(data, ids))
}}
label={translate('resources.album.actions.shuffle')}
>
<ShuffleIcon />
</Button>
</TopToolbar>
)
}