import React, { useMemo } from 'react' import { Datagrid, DateField, EditButton, Filter, NumberField, SearchInput, TextField, useUpdate, useNotify, } from 'react-admin' import Switch from '@material-ui/core/Switch' import { useMediaQuery } from '@material-ui/core' import { DurationField, List, Writable, isWritable, useSelectedFields, useResourceRefresh, } from '../common' import PlaylistListActions from './PlaylistListActions' const PlaylistFilter = (props) => ( ) const TogglePublicInput = ({ permissions, resource, record = {}, source }) => { const notify = useNotify() const [togglePublic] = useUpdate( resource, record.id, { ...record, public: !record.public, }, { undoable: false, onFailure: (error) => { console.log(error) notify('ra.page.error', 'warning') }, } ) const handleClick = (e) => { togglePublic() e.stopPropagation() } const canChange = permissions === 'admin' || localStorage.getItem('username') === record['owner'] return ( ) } const PlaylistList = ({ permissions, ...props }) => { const isXsmall = useMediaQuery((theme) => theme.breakpoints.down('xs')) const isDesktop = useMediaQuery((theme) => theme.breakpoints.up('md')) useResourceRefresh('playlist') const toggleableFields = useMemo(() => { return { owner: , songCount: isDesktop && , duration: isDesktop && , updatedAt: isDesktop && ( ), public: !isXsmall && ( ), } }, [isDesktop, isXsmall, permissions]) const columns = useSelectedFields({ resource: 'playlist', columns: toggleableFields, }) return ( } actions={} > isWritable(r && r.owner)} > {columns} ) } export default PlaylistList