Optimized call to retrieve album songs

This commit is contained in:
Deluan 2020-05-29 16:59:38 -04:00
parent 8f8d992da4
commit a7640c9df4
2 changed files with 13 additions and 18 deletions

View File

@ -34,19 +34,19 @@ const AlbumContextMenu = ({ record, discNumber, color, visible }) => {
const options = { const options = {
play: { play: {
label: translate('resources.album.actions.playAll'), label: 'resources.album.actions.playAll',
action: playTracks, action: playTracks,
}, },
addToQueue: { addToQueue: {
label: translate('resources.album.actions.addToQueue'), label: 'resources.album.actions.addToQueue',
action: addTracks, action: addTracks,
}, },
shuffle: { shuffle: {
label: translate('resources.album.actions.shuffle'), label: 'resources.album.actions.shuffle',
action: shuffleTracks, action: shuffleTracks,
}, },
addToPlaylist: { addToPlaylist: {
label: translate('resources.song.actions.addToPlaylist'), label: 'resources.song.actions.addToPlaylist',
action: (data, ids) => openAddToPlaylist({ selectedIds: ids }), action: (data, ids) => openAddToPlaylist({ selectedIds: ids }),
}, },
} }
@ -63,17 +63,12 @@ const AlbumContextMenu = ({ record, discNumber, color, visible }) => {
e.stopPropagation() e.stopPropagation()
} }
let extractSongsData = function (response, discNumber) { let extractSongsData = function (response) {
const data = response.data.reduce( const data = response.data.reduce(
(acc, cur) => ({ ...acc, [cur.id]: cur }), (acc, cur) => ({ ...acc, [cur.id]: cur }),
{} {}
) )
const ids = response.data.map((r) => r.id)
const ids = response.data
// Select only songs from discNumber if it is specified
.filter((r) => !discNumber || r.discNumber === discNumber)
.map((r) => r.id)
return { data, ids } return { data, ids }
} }
@ -84,10 +79,10 @@ const AlbumContextMenu = ({ record, discNumber, color, visible }) => {
.getList('albumSong', { .getList('albumSong', {
pagination: { page: 1, perPage: -1 }, pagination: { page: 1, perPage: -1 },
sort: { field: 'discNumber, trackNumber', order: 'ASC' }, sort: { field: 'discNumber, trackNumber', order: 'ASC' },
filter: { album_id: record.id }, filter: { album_id: record.id, disc_number: discNumber },
}) })
.then((response) => { .then((response) => {
let { data, ids } = extractSongsData(response, discNumber) let { data, ids } = extractSongsData(response)
dispatch(options[key].action(data, ids)) dispatch(options[key].action(data, ids))
}) })
.catch(() => { .catch(() => {
@ -123,7 +118,7 @@ const AlbumContextMenu = ({ record, discNumber, color, visible }) => {
> >
{Object.keys(options).map((key) => ( {Object.keys(options).map((key) => (
<MenuItem value={key} key={key} onClick={handleItemClick}> <MenuItem value={key} key={key} onClick={handleItemClick}>
{options[key].label} {translate(options[key].label)}
</MenuItem> </MenuItem>
))} ))}
</Menu> </Menu>

View File

@ -39,15 +39,15 @@ const SongContextMenu = ({
const [anchorEl, setAnchorEl] = useState(null) const [anchorEl, setAnchorEl] = useState(null)
const options = { const options = {
playNow: { playNow: {
label: translate('resources.song.actions.playNow'), label: 'resources.song.actions.playNow',
action: (record) => setTrack(record), action: (record) => setTrack(record),
}, },
addToQueue: { addToQueue: {
label: translate('resources.song.actions.addToQueue'), label: 'resources.song.actions.addToQueue',
action: (record) => addTracks({ [record.id]: record }), action: (record) => addTracks({ [record.id]: record }),
}, },
addToPlaylist: { addToPlaylist: {
label: translate('resources.song.actions.addToPlaylist'), label: 'resources.song.actions.addToPlaylist',
action: (record) => action: (record) =>
openAddToPlaylist({ openAddToPlaylist({
selectedIds: [record.mediaFileId || record.id], selectedIds: [record.mediaFileId || record.id],
@ -130,7 +130,7 @@ const SongContextMenu = ({
> >
{Object.keys(options).map((key) => ( {Object.keys(options).map((key) => (
<MenuItem value={key} key={key} onClick={handleItemClick}> <MenuItem value={key} key={key} onClick={handleItemClick}>
{options[key].label} {translate(options[key].label)}
</MenuItem> </MenuItem>
))} ))}
</Menu> </Menu>