From 975986ab167cbffa85b8b4f3ee5b8612a00604e5 Mon Sep 17 00:00:00 2001 From: Deluan Date: Mon, 1 Nov 2021 19:21:11 -0400 Subject: [PATCH] Add bulk action to make playlists private/public Better responsiveness --- resources/i18n/pt.json | 4 +- ui/src/i18n/en.json | 4 +- ui/src/playlist/ChangePublicStatusButton.js | 17 +++++++ ui/src/playlist/PlaylistEdit.js | 7 +-- ui/src/playlist/PlaylistList.js | 54 +++++++++++++-------- 5 files changed, 60 insertions(+), 26 deletions(-) create mode 100644 ui/src/playlist/ChangePublicStatusButton.js diff --git a/resources/i18n/pt.json b/resources/i18n/pt.json index a6468031..00c48983 100644 --- a/resources/i18n/pt.json +++ b/resources/i18n/pt.json @@ -150,7 +150,9 @@ "actions": { "selectPlaylist": "Selecione a playlist:", "addNewPlaylist": "Criar \"%{name}\"", - "export": "Exportar" + "export": "Exportar", + "makePublic": "Pública", + "makePrivate": "Pessoal" }, "message": { "duplicate_song": "Adicionar músicas duplicadas", diff --git a/ui/src/i18n/en.json b/ui/src/i18n/en.json index 46742a88..cc40dcf9 100644 --- a/ui/src/i18n/en.json +++ b/ui/src/i18n/en.json @@ -150,7 +150,9 @@ "actions": { "selectPlaylist": "Select a playlist:", "addNewPlaylist": "Create \"%{name}\"", - "export": "Export" + "export": "Export", + "makePublic": "Make Public", + "makePrivate": "Make Private" }, "message": { "duplicate_song": "Add duplicated songs", diff --git a/ui/src/playlist/ChangePublicStatusButton.js b/ui/src/playlist/ChangePublicStatusButton.js new file mode 100644 index 00000000..4f537d65 --- /dev/null +++ b/ui/src/playlist/ChangePublicStatusButton.js @@ -0,0 +1,17 @@ +import * as React from 'react' +import { LockOpen, Lock } from '@material-ui/icons' +import { BulkUpdateButton, useTranslate } from 'react-admin' + +const ChangePublicStatusButton = (props) => { + const translate = useTranslate() + const playlists = { public: props?.public } + const label = props?.public + ? translate('resources.playlist.actions.makePublic') + : translate('resources.playlist.actions.makePrivate') + const icon = props?.public ? : + return ( + + ) +} + +export default ChangePublicStatusButton diff --git a/ui/src/playlist/PlaylistEdit.js b/ui/src/playlist/PlaylistEdit.js index d1561129..23f9cc1b 100644 --- a/ui/src/playlist/PlaylistEdit.js +++ b/ui/src/playlist/PlaylistEdit.js @@ -13,7 +13,7 @@ import { ReferenceInput, SelectInput, } from 'react-admin' -import { isSmartPlaylist, isWritable, Title } from '../common' +import { isWritable, Title } from '../common' const SyncFragment = ({ formData, variant, ...rest }) => { return ( @@ -52,10 +52,7 @@ const PlaylistEditForm = (props) => { ) : ( )} - + {(formDataProps) => } diff --git a/ui/src/playlist/PlaylistList.js b/ui/src/playlist/PlaylistList.js index 31ce6579..bd4f0903 100644 --- a/ui/src/playlist/PlaylistList.js +++ b/ui/src/playlist/PlaylistList.js @@ -12,6 +12,8 @@ import { useUpdate, useNotify, useRecordContext, + BulkDeleteButton, + usePermissions, } from 'react-admin' import Switch from '@material-ui/core/Switch' import { useMediaQuery } from '@material-ui/core' @@ -22,24 +24,29 @@ import { isWritable, useSelectedFields, useResourceRefresh, - isSmartPlaylist, } from '../common' import PlaylistListActions from './PlaylistListActions' +import ChangePublicStatusButton from './ChangePublicStatusButton' -const PlaylistFilter = (props) => ( - - - - - - -) +const PlaylistFilter = (props) => { + const { permissions } = usePermissions() + return ( + + + {permissions === 'admin' && ( + + + + )} + + ) +} const TogglePublicInput = ({ resource, source }) => { const record = useRecordContext() @@ -69,11 +76,19 @@ const TogglePublicInput = ({ resource, source }) => { ) } +const PlaylistListBulkActions = (props) => ( + <> + + + + +) + const PlaylistList = (props) => { const isXsmall = useMediaQuery((theme) => theme.breakpoints.down('xs')) const isDesktop = useMediaQuery((theme) => theme.breakpoints.up('md')) @@ -81,9 +96,9 @@ const PlaylistList = (props) => { const toggleableFields = useMemo( () => ({ - ownerName: , - songCount: isDesktop && , - duration: isDesktop && , + ownerName: isDesktop && , + songCount: !isXsmall && , + duration: , updatedAt: isDesktop && ( ), @@ -105,6 +120,7 @@ const PlaylistList = (props) => { exporter={false} filters={} actions={} + bulkActionButtons={!isXsmall && } > isWritable(r?.ownerId)}>