import React from 'react' import { BulkActionsToolbar, ListToolbar, TextField, useVersion, useListContext, } from 'react-admin' import clsx from 'clsx' import { useDispatch } from 'react-redux' import { Card, useMediaQuery } from '@material-ui/core' import { makeStyles } from '@material-ui/core/styles' import FavoriteBorderIcon from '@material-ui/icons/FavoriteBorder' import { playTracks } from '../actions' import { DurationField, SongBulkActions, SongContextMenu, SongDatagrid, SongDetails, SongTitleField, RatingField, } from '../common' import { AddToPlaylistDialog } from '../dialogs' import { QualityInfo } from '../common/QualityInfo' import config from '../config' const useStyles = makeStyles( (theme) => ({ root: {}, main: { display: 'flex', }, content: { marginTop: 0, transition: theme.transitions.create('margin-top'), position: 'relative', flex: '1 1 auto', [theme.breakpoints.down('xs')]: { boxShadow: 'none', }, }, bulkActionsDisplayed: { marginTop: -theme.spacing(8), transition: theme.transitions.create('margin-top'), }, actions: { zIndex: 2, display: 'flex', justifyContent: 'flex-end', flexWrap: 'wrap', }, noResults: { padding: 20 }, columnIcon: { marginLeft: '3px', marginTop: '-2px', verticalAlign: 'text-top', }, toolbar: { justifyContent: 'flex-start', }, row: { '&:hover': { '& $contextMenu': { visibility: 'visible', }, '& $ratingField': { visibility: 'visible', }, }, }, contextMenu: { visibility: (props) => (props.isDesktop ? 'hidden' : 'visible'), }, ratingField: { visibility: 'hidden', }, }), { name: 'RaList' } ) const AlbumSongs = (props) => { const { data, ids } = props const isXsmall = useMediaQuery((theme) => theme.breakpoints.down('xs')) const isDesktop = useMediaQuery((theme) => theme.breakpoints.up('md')) const classes = useStyles({ isDesktop }) const dispatch = useDispatch() const version = useVersion() return ( <>
0, })} key={version} > } rowClick={(id) => dispatch(playTracks(data, ids, id))} {...props} hasBulkActions={true} showDiscSubtitles={true} contextAlwaysVisible={!isDesktop} classes={{ row: classes.row }} > {isDesktop && ( )} {isDesktop && } {isDesktop && } {isDesktop && config.enableStarRating && ( )} ) } />
) } export const removeAlbumCommentsFromSongs = ({ album, data }) => { if (album?.comment && data) { Object.values(data).forEach((song) => { song.comment = '' }) } } const SanitizedAlbumSongs = (props) => { removeAlbumCommentsFromSongs(props) const { loaded, loading, total, ...rest } = useListContext(props) return <>{loaded && } } export default SanitizedAlbumSongs