diff --git a/ui/src/album/AlbumSongs.js b/ui/src/album/AlbumSongs.js index 707ab7e26..8abac5064 100644 --- a/ui/src/album/AlbumSongs.js +++ b/ui/src/album/AlbumSongs.js @@ -78,16 +78,7 @@ const AlbumSongs = (props) => { const isDesktop = useMediaQuery((theme) => theme.breakpoints.up('md')) const controllerProps = useListController(props) const { bulkActionButtons, albumId, className } = props - const { data, ids, version, loaded } = controllerProps - - let multiDisc = false - if (loaded) { - const discNumbers = ids - .map((id) => data[id]) - .filter((r) => r) - .map((r) => r.discNumber) - multiDisc = new Set(discNumbers).size > 1 - } + const { data, ids, version } = controllerProps const anySong = data[ids[0]] const showPlaceholder = !anySong || anySong.albumId !== albumId @@ -130,7 +121,7 @@ const AlbumSongs = (props) => { rowClick={(id) => dispatch(playTracks(data, ids, id))} {...controllerProps} hasBulkActions={hasBulkActions} - multiDisc={multiDisc} + showDiscSubtitles={true} contextAlwaysVisible={!isDesktop} > {isDesktop && ( diff --git a/ui/src/common/SongDatagrid.js b/ui/src/common/SongDatagrid.js index e67968b49..3ce99bd7e 100644 --- a/ui/src/common/SongDatagrid.js +++ b/ui/src/common/SongDatagrid.js @@ -24,7 +24,7 @@ const useStyles = makeStyles({ }, }) -const DiscSubtitleRow = ({ record, onClickDiscSubtitle, length }) => { +const DiscSubtitleRow = ({ record, onClickDiscSubtitle, colSpan }) => { const classes = useStyles() const [visible, setVisible] = useState(false) const handlePlayDisc = (discNumber) => () => { @@ -38,7 +38,7 @@ const DiscSubtitleRow = ({ record, onClickDiscSubtitle, length }) => { onMouseLeave={() => setVisible(false)} className={classes.row} > - + {record.discNumber} @@ -73,7 +73,7 @@ export const SongDatagridRow = ({ )} {}, } -export const SongDatagrid = ({ multiDisc, contextAlwaysVisible, ...rest }) => { +export const SongDatagrid = ({ + contextAlwaysVisible, + showDiscSubtitles, + ...rest +}) => { const dispatch = useDispatch() + const { ids, data } = rest + const playDisc = (discNumber) => { - const ids = rest.ids.filter((id) => rest.data[id].discNumber === discNumber) - dispatch(playTracks(rest.data, ids)) + const idsToPlay = ids.filter((id) => data[id].discNumber === discNumber) + dispatch(playTracks(data, idsToPlay)) } + + const multiDisc = + showDiscSubtitles && + new Set( + ids + .map((id) => data[id]) + .filter((r) => r) // remove null records + .map((r) => r.discNumber) + ).size > 1 + const SongDatagridBody = (props) => ( { SongDatagrid.propTypes = { contextAlwaysVisible: PropTypes.bool, - multiDisc: PropTypes.bool, + showDiscSubtitles: PropTypes.bool, }