import React from 'react' import PropTypes from 'prop-types' import { useDispatch } from 'react-redux' import { Button, sanitizeListRestProps, TopToolbar, useTranslate, } from 'react-admin' import { useMediaQuery, makeStyles } from '@material-ui/core' import PlayArrowIcon from '@material-ui/icons/PlayArrow' import ShuffleIcon from '@material-ui/icons/Shuffle' import CloudDownloadOutlinedIcon from '@material-ui/icons/CloudDownloadOutlined' import { RiPlayListAddFill, RiPlayList2Fill } from 'react-icons/ri' import PlaylistAddIcon from '@material-ui/icons/PlaylistAdd' import ShareIcon from '@material-ui/icons/Share' import { playNext, addTracks, playTracks, shuffleTracks, openAddToPlaylist, openDownloadMenu, DOWNLOAD_MENU_ALBUM, openShareMenu, } from '../actions' import { formatBytes } from '../utils' import config from '../config' import { ToggleFieldsMenu } from '../common' const useStyles = makeStyles({ toolbar: { display: 'flex', justifyContent: 'space-between', width: '100%' }, }) const AlbumActions = ({ className, ids, data, record, permanentFilter, ...rest }) => { const dispatch = useDispatch() const translate = useTranslate() const classes = useStyles() const isDesktop = useMediaQuery((theme) => theme.breakpoints.up('md')) const isNotSmall = useMediaQuery((theme) => theme.breakpoints.up('sm')) const handlePlay = React.useCallback(() => { dispatch(playTracks(data, ids)) }, [dispatch, data, ids]) const handlePlayNext = React.useCallback(() => { dispatch(playNext(data, ids)) }, [dispatch, data, ids]) const handlePlayLater = React.useCallback(() => { dispatch(addTracks(data, ids)) }, [dispatch, data, ids]) const handleShuffle = React.useCallback(() => { dispatch(shuffleTracks(data, ids)) }, [dispatch, data, ids]) const handleAddToPlaylist = React.useCallback(() => { dispatch(openAddToPlaylist({ selectedIds: ids })) }, [dispatch, ids]) const handleShare = React.useCallback(() => { dispatch(openShareMenu([record.id], 'album', record.name)) }, [dispatch, record]) const handleDownload = React.useCallback(() => { dispatch(openDownloadMenu(record, DOWNLOAD_MENU_ALBUM)) }, [dispatch, record]) return (
{config.enableSharing && ( )} {config.enableDownloads && ( )}
{isNotSmall && }
) } AlbumActions.propTypes = { record: PropTypes.object.isRequired, selectedIds: PropTypes.arrayOf(PropTypes.number), } AlbumActions.defaultProps = { record: {}, selectedIds: [], } export default AlbumActions