import React, { useMemo } from 'react' import { Datagrid, DateField, EditButton, Filter, NumberField, ReferenceInput, SearchInput, SelectInput, TextField, useUpdate, useNotify, useRecordContext, BulkDeleteButton, usePermissions, } 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' import ChangePublicStatusButton from './ChangePublicStatusButton' const PlaylistFilter = (props) => { const { permissions } = usePermissions() return ( {permissions === 'admin' && ( )} ) } const TogglePublicInput = ({ resource, source }) => { const record = useRecordContext() 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() } return ( ) } const PlaylistListBulkActions = (props) => ( <> ) const PlaylistList = (props) => { const isXsmall = useMediaQuery((theme) => theme.breakpoints.down('xs')) const isDesktop = useMediaQuery((theme) => theme.breakpoints.up('md')) useResourceRefresh('playlist') const toggleableFields = useMemo( () => ({ ownerName: isDesktop && , songCount: !isXsmall && , duration: , updatedAt: isDesktop && ( ), public: !isXsmall && ( ), }), [isDesktop, isXsmall] ) const columns = useSelectedFields({ resource: 'playlist', columns: toggleableFields, }) return ( } actions={} bulkActionButtons={!isXsmall && } > isWritable(r?.ownerId)}> {columns} ) } export default PlaylistList