From 86afd16cc8f5c597d602561a47920b23abc091bc Mon Sep 17 00:00:00 2001 From: Deluan Date: Sun, 31 Oct 2021 13:08:53 -0400 Subject: [PATCH] Allow changing playlist's owner. Relates to #698 --- ui/src/common/useSelectedFields.js | 1 + ui/src/playlist/PlaylistEdit.js | 19 +++++++++++++++++++ ui/src/playlist/PlaylistList.js | 20 ++++++++++++++++---- ui/src/playlist/PlaylistListActions.js | 3 ++- 4 files changed, 38 insertions(+), 5 deletions(-) diff --git a/ui/src/common/useSelectedFields.js b/ui/src/common/useSelectedFields.js index 9784cf32..07ccc918 100644 --- a/ui/src/common/useSelectedFields.js +++ b/ui/src/common/useSelectedFields.js @@ -3,6 +3,7 @@ import PropTypes from 'prop-types' import { useDispatch, useSelector } from 'react-redux' import { setOmittedFields, setToggleableFields } from '../actions' +// TODO Refactor export const useSelectedFields = ({ resource, columns, diff --git a/ui/src/playlist/PlaylistEdit.js b/ui/src/playlist/PlaylistEdit.js index 212783d0..cc651a66 100644 --- a/ui/src/playlist/PlaylistEdit.js +++ b/ui/src/playlist/PlaylistEdit.js @@ -9,6 +9,9 @@ import { BooleanInput, required, useTranslate, + usePermissions, + ReferenceInput, + SelectInput, } from 'react-admin' import { isSmartPlaylist, isWritable, Title } from '../common' @@ -29,10 +32,26 @@ const PlaylistTitle = ({ record }) => { const PlaylistEditForm = (props) => { const { record } = props + const { permissions } = usePermissions() return ( + {permissions === 'admin' ? ( + + + + ) : ( + + )} ( + + + ) @@ -68,8 +79,8 @@ const PlaylistList = (props) => { const isDesktop = useMediaQuery((theme) => theme.breakpoints.up('md')) useResourceRefresh('playlist') - const toggleableFields = useMemo(() => { - return { + const toggleableFields = useMemo( + () => ({ ownerName: , songCount: isDesktop && , duration: isDesktop && , @@ -79,8 +90,9 @@ const PlaylistList = (props) => { public: !isXsmall && ( ), - } - }, [isDesktop, isXsmall]) + }), + [isDesktop, isXsmall] + ) const columns = useSelectedFields({ resource: 'playlist', diff --git a/ui/src/playlist/PlaylistListActions.js b/ui/src/playlist/PlaylistListActions.js index 54998f3e..3cde0a20 100644 --- a/ui/src/playlist/PlaylistListActions.js +++ b/ui/src/playlist/PlaylistListActions.js @@ -1,4 +1,4 @@ -import React from 'react' +import React, { cloneElement } from 'react' import { sanitizeListRestProps, TopToolbar, @@ -14,6 +14,7 @@ const PlaylistListActions = ({ className, ...rest }) => { return ( + {cloneElement(rest.filters, { context: 'button' })} {translate('ra.action.create')}