feat: hide missing artists from regular users and Subsonic API (#4092)

* Handle missing artists for non-admin users

* feat(artist): enhance ArtistList with missing row styling and class management

Signed-off-by: Deluan <deluan@navidrome.org>

---------

Signed-off-by: Deluan <deluan@navidrome.org>
This commit is contained in:
Deluan Quintão
2025-05-20 21:53:02 -04:00
committed by GitHub
parent 4733616d90
commit 453630d430
7 changed files with 140 additions and 9 deletions
+13 -1
View File
@@ -17,6 +17,7 @@ import FavoriteIcon from '@material-ui/icons/Favorite'
import FavoriteBorderIcon from '@material-ui/icons/FavoriteBorder'
import { makeStyles } from '@material-ui/core/styles'
import { useDrag } from 'react-dnd'
import clsx from 'clsx'
import {
ArtistContextMenu,
List,
@@ -49,6 +50,9 @@ const useStyles = makeStyles({
},
},
},
missingRow: {
opacity: 0.3,
},
contextMenu: {
visibility: 'hidden',
},
@@ -95,7 +99,15 @@ const ArtistDatagridRow = (props) => {
}),
[record],
)
return <DatagridRow ref={dragArtistRef} {...props} />
const classes = useStyles()
const computedClasses = clsx(
props.className,
classes.row,
record?.missing && classes.missingRow,
)
return (
<DatagridRow ref={dragArtistRef} {...props} className={computedClasses} />
)
}
const ArtistDatagridBody = (props) => (
+2 -1
View File
@@ -23,7 +23,8 @@ const mapResource = (resource, params) => {
return [`playlist/${plsId}/tracks`, params]
}
case 'album':
case 'song': {
case 'song':
case 'artist': {
if (params.filter && !isAdmin()) {
params.filter.missing = false
}