mirror of
https://github.com/navidrome/navidrome.git
synced 2025-05-08 06:11:07 +03:00
refactor(ui): remove obsolete release date grouping logic from SongDatagrid and AlbumSongs
This commit is contained in:
parent
b5bc851c87
commit
58f48f0c14
@ -185,7 +185,6 @@ const AlbumSongs = (props) => {
|
|||||||
{...props}
|
{...props}
|
||||||
hasBulkActions={true}
|
hasBulkActions={true}
|
||||||
showDiscSubtitles={true}
|
showDiscSubtitles={true}
|
||||||
showReleaseDivider={true}
|
|
||||||
contextAlwaysVisible={!isDesktop}
|
contextAlwaysVisible={!isDesktop}
|
||||||
classes={{ row: classes.row }}
|
classes={{ row: classes.row }}
|
||||||
>
|
>
|
||||||
|
@ -59,53 +59,6 @@ const useStyles = makeStyles({
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
const ReleaseRow = forwardRef(
|
|
||||||
({ record, onClick, colSpan, contextAlwaysVisible }, ref) => {
|
|
||||||
const isDesktop = useMediaQuery((theme) => theme.breakpoints.up('md'))
|
|
||||||
const classes = useStyles({ isDesktop })
|
|
||||||
const translate = useTranslate()
|
|
||||||
const handlePlaySubset = (releaseDate) => () => {
|
|
||||||
onClick(releaseDate)
|
|
||||||
}
|
|
||||||
|
|
||||||
let releaseTitle = []
|
|
||||||
if (record.releaseDate) {
|
|
||||||
releaseTitle.push(translate('resources.album.fields.released'))
|
|
||||||
releaseTitle.push(formatFullDate(record.releaseDate))
|
|
||||||
if (record.catalogNum && isDesktop) {
|
|
||||||
releaseTitle.push('· Cat #')
|
|
||||||
releaseTitle.push(record.catalogNum)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
|
||||||
<TableRow
|
|
||||||
hover
|
|
||||||
ref={ref}
|
|
||||||
onClick={handlePlaySubset(record.releaseDate)}
|
|
||||||
className={classes.row}
|
|
||||||
>
|
|
||||||
<TableCell colSpan={colSpan}>
|
|
||||||
<Typography variant="h6" className={classes.subtitle}>
|
|
||||||
{releaseTitle.join(' ')}
|
|
||||||
</Typography>
|
|
||||||
</TableCell>
|
|
||||||
<TableCell>
|
|
||||||
<AlbumContextMenu
|
|
||||||
record={{ id: record.albumId }}
|
|
||||||
releaseDate={record.releaseDate}
|
|
||||||
showLove={false}
|
|
||||||
className={classes.contextMenu}
|
|
||||||
visible={contextAlwaysVisible}
|
|
||||||
/>
|
|
||||||
</TableCell>
|
|
||||||
</TableRow>
|
|
||||||
)
|
|
||||||
},
|
|
||||||
)
|
|
||||||
|
|
||||||
ReleaseRow.displayName = 'ReleaseRow'
|
|
||||||
|
|
||||||
const DiscSubtitleRow = forwardRef(
|
const DiscSubtitleRow = forwardRef(
|
||||||
({ record, onClick, colSpan, contextAlwaysVisible }, ref) => {
|
({ record, onClick, colSpan, contextAlwaysVisible }, ref) => {
|
||||||
const isDesktop = useMediaQuery((theme) => theme.breakpoints.up('md'))
|
const isDesktop = useMediaQuery((theme) => theme.breakpoints.up('md'))
|
||||||
@ -158,7 +111,6 @@ export const SongDatagridRow = ({
|
|||||||
record,
|
record,
|
||||||
children,
|
children,
|
||||||
firstTracksOfDiscs,
|
firstTracksOfDiscs,
|
||||||
firstTracksOfReleases,
|
|
||||||
contextAlwaysVisible,
|
contextAlwaysVisible,
|
||||||
onClickSubset,
|
onClickSubset,
|
||||||
className,
|
className,
|
||||||
@ -209,15 +161,6 @@ export const SongDatagridRow = ({
|
|||||||
const childCount = fields.length
|
const childCount = fields.length
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{firstTracksOfReleases.has(record.id) && (
|
|
||||||
<ReleaseRow
|
|
||||||
ref={dragDiscRef}
|
|
||||||
record={record}
|
|
||||||
onClick={onClickSubset}
|
|
||||||
contextAlwaysVisible={contextAlwaysVisible}
|
|
||||||
colSpan={childCount + (rest.expand ? 1 : 0)}
|
|
||||||
/>
|
|
||||||
)}
|
|
||||||
{firstTracksOfDiscs.has(record.id) && (
|
{firstTracksOfDiscs.has(record.id) && (
|
||||||
<DiscSubtitleRow
|
<DiscSubtitleRow
|
||||||
ref={dragDiscRef}
|
ref={dragDiscRef}
|
||||||
@ -244,7 +187,6 @@ SongDatagridRow.propTypes = {
|
|||||||
record: PropTypes.object,
|
record: PropTypes.object,
|
||||||
children: PropTypes.node,
|
children: PropTypes.node,
|
||||||
firstTracksOfDiscs: PropTypes.instanceOf(Set),
|
firstTracksOfDiscs: PropTypes.instanceOf(Set),
|
||||||
firstTracksOfReleases: PropTypes.instanceOf(Set),
|
|
||||||
contextAlwaysVisible: PropTypes.bool,
|
contextAlwaysVisible: PropTypes.bool,
|
||||||
onClickSubset: PropTypes.func,
|
onClickSubset: PropTypes.func,
|
||||||
}
|
}
|
||||||
@ -256,7 +198,6 @@ SongDatagridRow.defaultProps = {
|
|||||||
const SongDatagridBody = ({
|
const SongDatagridBody = ({
|
||||||
contextAlwaysVisible,
|
contextAlwaysVisible,
|
||||||
showDiscSubtitles,
|
showDiscSubtitles,
|
||||||
showReleaseDivider,
|
|
||||||
...rest
|
...rest
|
||||||
}) => {
|
}) => {
|
||||||
const dispatch = useDispatch()
|
const dispatch = useDispatch()
|
||||||
@ -311,37 +252,12 @@ const SongDatagridBody = ({
|
|||||||
return set
|
return set
|
||||||
}, [ids, data, showDiscSubtitles])
|
}, [ids, data, showDiscSubtitles])
|
||||||
|
|
||||||
const firstTracksOfReleases = useMemo(() => {
|
|
||||||
if (!ids) {
|
|
||||||
return new Set()
|
|
||||||
}
|
|
||||||
const set = new Set(
|
|
||||||
ids
|
|
||||||
.filter((i) => data[i])
|
|
||||||
.reduce((acc, id) => {
|
|
||||||
const last = acc && acc[acc.length - 1]
|
|
||||||
if (
|
|
||||||
acc.length === 0 ||
|
|
||||||
(last && data[id].releaseDate !== data[last].releaseDate)
|
|
||||||
) {
|
|
||||||
acc.push(id)
|
|
||||||
}
|
|
||||||
return acc
|
|
||||||
}, []),
|
|
||||||
)
|
|
||||||
if (!showReleaseDivider || set.size < 2) {
|
|
||||||
set.clear()
|
|
||||||
}
|
|
||||||
return set
|
|
||||||
}, [ids, data, showReleaseDivider])
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<PureDatagridBody
|
<PureDatagridBody
|
||||||
{...rest}
|
{...rest}
|
||||||
row={
|
row={
|
||||||
<SongDatagridRow
|
<SongDatagridRow
|
||||||
firstTracksOfDiscs={firstTracksOfDiscs}
|
firstTracksOfDiscs={firstTracksOfDiscs}
|
||||||
firstTracksOfReleases={firstTracksOfReleases}
|
|
||||||
contextAlwaysVisible={contextAlwaysVisible}
|
contextAlwaysVisible={contextAlwaysVisible}
|
||||||
onClickSubset={playSubset}
|
onClickSubset={playSubset}
|
||||||
/>
|
/>
|
||||||
@ -353,7 +269,6 @@ const SongDatagridBody = ({
|
|||||||
export const SongDatagrid = ({
|
export const SongDatagrid = ({
|
||||||
contextAlwaysVisible,
|
contextAlwaysVisible,
|
||||||
showDiscSubtitles,
|
showDiscSubtitles,
|
||||||
showReleaseDivider,
|
|
||||||
...rest
|
...rest
|
||||||
}) => {
|
}) => {
|
||||||
const classes = useStyles()
|
const classes = useStyles()
|
||||||
@ -366,7 +281,6 @@ export const SongDatagrid = ({
|
|||||||
<SongDatagridBody
|
<SongDatagridBody
|
||||||
contextAlwaysVisible={contextAlwaysVisible}
|
contextAlwaysVisible={contextAlwaysVisible}
|
||||||
showDiscSubtitles={showDiscSubtitles}
|
showDiscSubtitles={showDiscSubtitles}
|
||||||
showReleaseDivider={showReleaseDivider}
|
|
||||||
/>
|
/>
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
@ -376,6 +290,5 @@ export const SongDatagrid = ({
|
|||||||
SongDatagrid.propTypes = {
|
SongDatagrid.propTypes = {
|
||||||
contextAlwaysVisible: PropTypes.bool,
|
contextAlwaysVisible: PropTypes.bool,
|
||||||
showDiscSubtitles: PropTypes.bool,
|
showDiscSubtitles: PropTypes.bool,
|
||||||
showReleaseDivider: PropTypes.bool,
|
|
||||||
classes: PropTypes.object,
|
classes: PropTypes.object,
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user