diff --git a/ui/src/audioplayer/queue.js b/ui/src/audioplayer/queue.js index c8fc0ab74..809f1b7eb 100644 --- a/ui/src/audioplayer/queue.js +++ b/ui/src/audioplayer/queue.js @@ -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 } diff --git a/ui/src/playlist/PlaylistActions.js b/ui/src/playlist/PlaylistActions.js index 9cabb2e97..ca54b5b4e 100644 --- a/ui/src/playlist/PlaylistActions.js +++ b/ui/src/playlist/PlaylistActions.js @@ -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 = ({ > + ) }