import React from 'react' import { useSelector } from 'react-redux' import { Redirect, useLocation } from 'react-router-dom' import { AutocompleteInput, Filter, NullableBooleanInput, NumberInput, ReferenceInput, SearchInput, Pagination, useTranslate, } from 'react-admin' import StarIcon from '@material-ui/icons/Star' import { withWidth } from '@material-ui/core' import { List, QuickFilter, Title, useAlbumsPerPage } from '../common' import AlbumListActions from './AlbumListActions' import AlbumListView from './AlbumListView' import AlbumGridView from './AlbumGridView' import { AddToPlaylistDialog } from '../dialogs' import albumLists, { defaultAlbumList } from './albumLists' const AlbumFilter = (props) => { const translate = useTranslate() return ( ({ name: [searchText] })} > } defaultValue={true} /> ) } const AlbumListTitle = ({ albumListType }) => { const translate = useTranslate() let title = translate('resources.album.name', { smart_count: 2 }) if (albumListType) { let listTitle = translate(`resources.album.lists.${albumListType}`, { smart_count: 2, }) title = `${title} - ${listTitle}` } return } const AlbumList = (props) => { const { width } = props const albumView = useSelector((state) => state.albumView) const [perPage, perPageOptions] = useAlbumsPerPage(width) const location = useLocation() const albumListType = location.pathname .replace(/^\/album/, '') .replace(/^\//, '') // If it does not have filter/sort params (usually coming from Menu), // reload with correct filter/sort params if (!location.search) { const type = albumListType || localStorage.getItem('defaultView') || defaultAlbumList const listParams = albumLists[type] if (listParams) { return <Redirect to={`/album/${type}?${listParams.params}`} /> } } return ( <> <List {...props} exporter={false} bulkActionButtons={false} actions={<AlbumListActions />} filters={<AlbumFilter />} perPage={perPage} pagination={<Pagination rowsPerPageOptions={perPageOptions} />} title={<AlbumListTitle albumListType={albumListType} />} > {albumView.grid ? ( <AlbumGridView {...props} /> ) : ( <AlbumListView {...props} /> )} </List> <AddToPlaylistDialog /> </> ) } export default withWidth()(AlbumList)