diff --git a/resources/i18n/pt-br.json b/resources/i18n/pt-br.json
index 4b240bcff..3faa1b149 100644
--- a/resources/i18n/pt-br.json
+++ b/resources/i18n/pt-br.json
@@ -33,7 +33,8 @@
"participants": "Outros Participantes",
"tags": "Outras Tags",
"mappedTags": "Tags mapeadas",
- "rawTags": "Tags originais"
+ "rawTags": "Tags originais",
+ "missing": "Ausente"
},
"actions": {
"addToQueue": "Adicionar à fila",
@@ -72,7 +73,8 @@
"releaseType": "Tipo",
"grouping": "Agrupamento",
"media": "Mídia",
- "mood": "Mood"
+ "mood": "Mood",
+ "missing": "Ausente"
},
"actions": {
"playAll": "Tocar",
@@ -104,7 +106,8 @@
"rating": "Classificação",
"genre": "Gênero",
"size": "Tamanho",
- "role": "Role"
+ "role": "Role",
+ "missing": "Ausente"
},
"roles": {
"albumartist": "Artista do Álbum |||| Artistas do Álbum",
diff --git a/ui/src/album/AlbumList.jsx b/ui/src/album/AlbumList.jsx
index 57fce81e0..40b927a89 100644
--- a/ui/src/album/AlbumList.jsx
+++ b/ui/src/album/AlbumList.jsx
@@ -10,6 +10,7 @@ import {
ReferenceArrayInput,
ReferenceInput,
SearchInput,
+ usePermissions,
useRefresh,
useTranslate,
useVersion,
@@ -44,6 +45,8 @@ const useStyles = makeStyles({
const AlbumFilter = (props) => {
const classes = useStyles()
const translate = useTranslate()
+ const { permissions } = usePermissions()
+ const isAdmin = permissions === 'admin'
return (
@@ -153,6 +156,7 @@ const AlbumFilter = (props) => {
defaultValue={true}
/>
)}
+ {isAdmin && }
)
}
diff --git a/ui/src/artist/ArtistList.jsx b/ui/src/artist/ArtistList.jsx
index f26cff217..7a14e9efe 100644
--- a/ui/src/artist/ArtistList.jsx
+++ b/ui/src/artist/ArtistList.jsx
@@ -11,6 +11,8 @@ import {
SelectInput,
TextField,
useTranslate,
+ NullableBooleanInput,
+ usePermissions,
} from 'react-admin'
import { useMediaQuery, withWidth } from '@material-ui/core'
import FavoriteIcon from '@material-ui/icons/Favorite'
@@ -63,6 +65,8 @@ const useStyles = makeStyles({
const ArtistFilter = (props) => {
const translate = useTranslate()
+ const { permissions } = usePermissions()
+ const isAdmin = permissions === 'admin'
const rolesObj = en?.resources?.artist?.roles
const roles = Object.keys(rolesObj).reduce((acc, role) => {
acc.push({
@@ -85,6 +89,7 @@ const ArtistFilter = (props) => {
defaultValue={true}
/>
)}
+ {isAdmin && }
)
}
diff --git a/ui/src/i18n/en.json b/ui/src/i18n/en.json
index 64b264e45..0695d62c2 100644
--- a/ui/src/i18n/en.json
+++ b/ui/src/i18n/en.json
@@ -34,7 +34,8 @@
"participants": "Additional participants",
"tags": "Additional Tags",
"mappedTags": "Mapped tags",
- "rawTags": "Raw tags"
+ "rawTags": "Raw tags",
+ "missing": "Missing"
},
"actions": {
"addToQueue": "Play Later",
@@ -73,7 +74,8 @@
"releaseType": "Type",
"grouping": "Grouping",
"media": "Media",
- "mood": "Mood"
+ "mood": "Mood",
+ "missing": "Missing"
},
"actions": {
"playAll": "Play",
@@ -105,7 +107,8 @@
"playCount": "Plays",
"rating": "Rating",
"genre": "Genre",
- "role": "Role"
+ "role": "Role",
+ "missing": "Missing"
},
"roles": {
"albumartist": "Album Artist |||| Album Artists",
diff --git a/ui/src/song/SongList.jsx b/ui/src/song/SongList.jsx
index 02d28d44f..2a2807964 100644
--- a/ui/src/song/SongList.jsx
+++ b/ui/src/song/SongList.jsx
@@ -8,6 +8,8 @@ import {
SearchInput,
TextField,
useTranslate,
+ NullableBooleanInput,
+ usePermissions,
} from 'react-admin'
import { useMediaQuery } from '@material-ui/core'
import FavoriteIcon from '@material-ui/icons/Favorite'
@@ -67,6 +69,8 @@ const useStyles = makeStyles({
const SongFilter = (props) => {
const classes = useStyles()
const translate = useTranslate()
+ const { permissions } = usePermissions()
+ const isAdmin = permissions === 'admin'
return (
@@ -121,6 +125,7 @@ const SongFilter = (props) => {
defaultValue={true}
/>
)}
+ {isAdmin && }
)
}
diff --git a/ui/src/song/SongListActions.jsx b/ui/src/song/SongListActions.jsx
index 82dbe789e..44fe9b5f5 100644
--- a/ui/src/song/SongListActions.jsx
+++ b/ui/src/song/SongListActions.jsx
@@ -24,6 +24,7 @@ export const SongListActions = ({
const isNotSmall = useMediaQuery((theme) => theme.breakpoints.up('sm'))
return (
+
{filters &&
cloneElement(filters, {
resource,
@@ -32,7 +33,6 @@ export const SongListActions = ({
filterValues,
context: 'button',
})}
-
{isNotSmall && }
)