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) => { notify('ra.page.error', 'warning') }, }, ) const handleClick = (e) => { togglePublic() e.stopPropagation() } return ( ) } const ToggleAutoImport = ({ resource, source }) => { const record = useRecordContext() const notify = useNotify() const [ToggleAutoImport] = useUpdate( resource, record.id, { ...record, sync: !record.sync, }, { undoable: false, onFailure: (error) => { notify('ra.page.error', 'warning') }, }, ) const handleClick = (e) => { ToggleAutoImport() e.stopPropagation() } return record.path ? ( ) : null } 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 && ( ), comment: , sync: , }), [isDesktop, isXsmall], ) const columns = useSelectedFields({ resource: 'playlist', columns: toggleableFields, defaultOff: ['comment'], }) return ( } actions={} bulkActionButtons={!isXsmall && } > isWritable(r?.ownerId)}> {columns} ) } export default PlaylistList