mirror of
https://github.com/navidrome/navidrome.git
synced 2025-04-15 03:30:39 +03:00
Move the shuffleAlbum logic into an action
This commit is contained in:
parent
4441ae1f0b
commit
b44218fdcc
@ -8,7 +8,7 @@ import PlayArrowIcon from '@material-ui/icons/PlayArrow'
|
||||
import ShuffleIcon from '@material-ui/icons/Shuffle'
|
||||
import React from 'react'
|
||||
import { useDispatch } from 'react-redux'
|
||||
import { playAlbum } from '../audioplayer'
|
||||
import { playAlbum, shuffleAlbum } from '../audioplayer'
|
||||
|
||||
export const AlbumActions = ({
|
||||
className,
|
||||
@ -28,17 +28,6 @@ export const AlbumActions = ({
|
||||
return acc
|
||||
}, {})
|
||||
|
||||
const shuffle = (data) => {
|
||||
const ids = Object.keys(data)
|
||||
for (let i = ids.length - 1; i > 0; i--) {
|
||||
let j = Math.floor(Math.random() * (i + 1))
|
||||
;[ids[i], ids[j]] = [ids[j], ids[i]]
|
||||
}
|
||||
const shuffled = {}
|
||||
ids.forEach((id) => (shuffled[id] = data[id]))
|
||||
return shuffled
|
||||
}
|
||||
|
||||
return (
|
||||
<TopToolbar className={className} {...sanitizeListRestProps(rest)}>
|
||||
<Button
|
||||
@ -51,9 +40,7 @@ export const AlbumActions = ({
|
||||
</Button>
|
||||
<Button
|
||||
onClick={() => {
|
||||
const shuffled = shuffle(filteredData)
|
||||
const firstId = Object.keys(shuffled)[0]
|
||||
dispatch(playAlbum(firstId, shuffled))
|
||||
dispatch(shuffleAlbum(filteredData))
|
||||
}}
|
||||
label={translate('resources.album.actions.shuffle')}
|
||||
>
|
||||
|
@ -1,4 +1,10 @@
|
||||
import Player from './Player'
|
||||
import { addTrack, setTrack, playQueueReducer, playAlbum } from './queue'
|
||||
import {
|
||||
addTrack,
|
||||
setTrack,
|
||||
playQueueReducer,
|
||||
playAlbum,
|
||||
shuffleAlbum,
|
||||
} from './queue'
|
||||
|
||||
export { Player, addTrack, setTrack, playAlbum, playQueueReducer }
|
||||
export { Player, addTrack, setTrack, playAlbum, playQueueReducer, shuffleAlbum }
|
||||
|
@ -26,6 +26,27 @@ const setTrack = (data) => ({
|
||||
data,
|
||||
})
|
||||
|
||||
const shuffle = (data) => {
|
||||
const ids = Object.keys(data)
|
||||
for (let i = ids.length - 1; i > 0; i--) {
|
||||
let j = Math.floor(Math.random() * (i + 1))
|
||||
;[ids[i], ids[j]] = [ids[j], ids[i]]
|
||||
}
|
||||
const shuffled = {}
|
||||
ids.forEach((id) => (shuffled[id] = data[id]))
|
||||
return shuffled
|
||||
}
|
||||
|
||||
const shuffleAlbum = (data) => {
|
||||
const shuffled = shuffle(data)
|
||||
const firstId = Object.keys(shuffled)[0]
|
||||
return {
|
||||
type: PLAYER_PLAY_ALBUM,
|
||||
id: firstId,
|
||||
data: shuffled,
|
||||
}
|
||||
}
|
||||
|
||||
const playAlbum = (id, data) => ({
|
||||
type: PLAYER_PLAY_ALBUM,
|
||||
id,
|
||||
@ -109,4 +130,12 @@ const playQueueReducer = (
|
||||
}
|
||||
}
|
||||
|
||||
export { addTrack, setTrack, playAlbum, syncQueue, scrobble, playQueueReducer }
|
||||
export {
|
||||
addTrack,
|
||||
setTrack,
|
||||
playAlbum,
|
||||
syncQueue,
|
||||
scrobble,
|
||||
shuffleAlbum,
|
||||
playQueueReducer,
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user