import React from 'react' import PropTypes from 'prop-types' import { useDispatch } from 'react-redux' import { Button, sanitizeListRestProps, TopToolbar, useTranslate, } from 'react-admin' 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 { playNext, addTracks, playTracks, shuffleTracks, openAddToPlaylist, } from '../actions' import subsonic from '../subsonic' import { formatBytes } from '../utils' import { useMediaQuery, makeStyles } from '@material-ui/core' 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 handleDownload = React.useCallback(() => { subsonic.download(record.id) }, [record]) return (
{config.enableDownloads && ( )}
{isNotSmall && }
) } AlbumActions.propTypes = { record: PropTypes.object.isRequired, selectedIds: PropTypes.arrayOf(PropTypes.number), } AlbumActions.defaultProps = { record: {}, selectedIds: [], onUnselectItems: () => null, } export default AlbumActions