This commit is contained in:
Deluan
2020-05-18 12:19:01 -04:00
parent cf019849f0
commit 84ea852339
+44 -46
View File
@@ -1,9 +1,5 @@
import React from 'react' import React from 'react'
import { import { useDataProvider, useGetList, useNotify } from 'react-admin'
useDataProvider,
useGetList,
useNotify,
} from 'react-admin'
import { MenuItem } from '@material-ui/core' import { MenuItem } from '@material-ui/core'
import PropTypes from 'prop-types' import PropTypes from 'prop-types'
@@ -25,50 +21,52 @@ export const addAlbumToPlaylist = (dataProvider, albumId, playlistId) =>
.then((response) => response.data.map((song) => song.id)) .then((response) => response.data.map((song) => song.id))
.then((ids) => addTracksToPlaylist(dataProvider, ids, playlistId)) .then((ids) => addTracksToPlaylist(dataProvider, ids, playlistId))
const AddToPlaylistMenu = React.forwardRef(({ selectedIds, albumId, onClose }, ref) => { const AddToPlaylistMenu = React.forwardRef(
const notify = useNotify() ({ selectedIds, albumId, onClose }, ref) => {
const dataProvider = useDataProvider() const notify = useNotify()
const { ids, data, loaded } = useGetList( const dataProvider = useDataProvider()
'playlist', const { ids, data, loaded } = useGetList(
{ page: 1, perPage: -1 }, 'playlist',
{ field: 'name', order: 'ASC' }, { page: 1, perPage: -1 },
{} { field: 'name', order: 'ASC' },
) {}
)
if (!loaded) { if (!loaded) {
return <MenuItem>Loading...</MenuItem> return <MenuItem>Loading...</MenuItem>
}
const handleItemClick = (e) => {
e.preventDefault()
const value = e.target.getAttribute('value')
if (value !== '') {
const add = albumId
? addAlbumToPlaylist(dataProvider, albumId, value)
: addTracksToPlaylist(dataProvider, selectedIds, value)
add
.then((len) => {
notify('message.songsAddedToPlaylist', 'info', {smart_count: len})
})
.catch(() => {
notify('ra.page.error', 'warning')
})
} }
e.stopPropagation()
onClose && onClose()
}
return ( const handleItemClick = (e) => {
<> e.preventDefault()
{ids.map((id) => ( const value = e.target.getAttribute('value')
<MenuItem value={id} key={id} onClick={handleItemClick}> if (value !== '') {
{data[id].name} const add = albumId
</MenuItem> ? addAlbumToPlaylist(dataProvider, albumId, value)
))} : addTracksToPlaylist(dataProvider, selectedIds, value)
</>
) add
}) .then((len) => {
notify('message.songsAddedToPlaylist', 'info', { smart_count: len })
})
.catch(() => {
notify('ra.page.error', 'warning')
})
}
e.stopPropagation()
onClose && onClose()
}
return (
<>
{ids.map((id) => (
<MenuItem value={id} key={id} onClick={handleItemClick}>
{data[id].name}
</MenuItem>
))}
</>
)
}
)
AddToPlaylistMenu.propTypes = { AddToPlaylistMenu.propTypes = {
selectedIds: PropTypes.arrayOf(PropTypes.any).isRequired, selectedIds: PropTypes.arrayOf(PropTypes.any).isRequired,