Remove duplication

This commit is contained in:
Deluan
2020-05-22 21:31:45 -04:00
parent de2759b3d5
commit 52a46e61e0
5 changed files with 21 additions and 31 deletions
+4 -12
View File
@@ -1,8 +1,6 @@
import React from 'react' import React from 'react'
import { import {
BulkActionsToolbar, BulkActionsToolbar,
Datagrid,
DatagridBody,
DatagridLoading, DatagridLoading,
FunctionField, FunctionField,
ListToolbar, ListToolbar,
@@ -17,7 +15,7 @@ import { playTracks } from '../audioplayer'
import { import {
DurationField, DurationField,
SongDetails, SongDetails,
SongDatagridRow, SongDatagrid,
SongContextMenu, SongContextMenu,
} from '../common' } from '../common'
@@ -88,13 +86,6 @@ const AlbumSongs = (props) => {
const showPlaceholder = !anySong || anySong.albumId !== albumId const showPlaceholder = !anySong || anySong.albumId !== albumId
const hasBulkActions = props.bulkActionButtons !== false const hasBulkActions = props.bulkActionButtons !== false
const SongsDatagridBody = (props) => (
<DatagridBody {...props} row={<SongDatagridRow multiDisc={multiDisc} />} />
)
const SongsDatagrid = (props) => (
<Datagrid {...props} body={<SongsDatagridBody />} />
)
return ( return (
<> <>
<ListToolbar <ListToolbar
@@ -127,11 +118,12 @@ const AlbumSongs = (props) => {
size={'small'} size={'small'}
/> />
) : ( ) : (
<SongsDatagrid <SongDatagrid
expand={!isXsmall && <SongDetails />} expand={!isXsmall && <SongDetails />}
rowClick={(id) => dispatch(playTracks(data, ids, id))} rowClick={(id) => dispatch(playTracks(data, ids, id))}
{...controllerProps} {...controllerProps}
hasBulkActions={hasBulkActions} hasBulkActions={hasBulkActions}
multiDisc={multiDisc}
> >
{isDesktop && ( {isDesktop && (
<TextField <TextField
@@ -152,7 +144,7 @@ const AlbumSongs = (props) => {
{isDesktop && <TextField source="artist" sortable={false} />} {isDesktop && <TextField source="artist" sortable={false} />}
<DurationField source="duration" sortable={false} /> <DurationField source="duration" sortable={false} />
<SongContextMenu /> <SongContextMenu />
</SongsDatagrid> </SongDatagrid>
)} )}
</Card> </Card>
</div> </div>
@@ -1,10 +1,10 @@
import React, { useState, isValidElement, cloneElement } from 'react' import React, { useState, isValidElement, cloneElement } from 'react'
import { DatagridRow, useTranslate } from 'react-admin' import { Datagrid, DatagridBody, DatagridRow, useTranslate } from 'react-admin'
import { TableCell, TableRow, Typography } from '@material-ui/core' import { TableCell, TableRow, Typography } from '@material-ui/core'
import PropTypes from 'prop-types' import PropTypes from 'prop-types'
import RangeField from './RangeField' import RangeField from './RangeField'
const SongDatagridRow = ({ record, children, multiDisc, ...rest }) => { export const SongDatagridRow = ({ record, children, multiDisc, ...rest }) => {
const translate = useTranslate() const translate = useTranslate()
const [visible, setVisible] = useState(false) const [visible, setVisible] = useState(false)
return ( return (
@@ -51,4 +51,10 @@ RangeField.propTypes = {
multiDisc: PropTypes.bool, multiDisc: PropTypes.bool,
} }
export default SongDatagridRow export const SongDatagrid = (props) => {
const multiDisc = props.multiDisc
const SongDatagridBody = (props) => (
<DatagridBody {...props} row={<SongDatagridRow multiDisc={multiDisc} />} />
)
return <Datagrid {...props} body={<SongDatagridBody />} />
}
+2 -1
View File
@@ -10,7 +10,7 @@ import SongDetails from './SongDetails'
import SizeField from './SizeField' import SizeField from './SizeField'
import DocLink from './DocLink' import DocLink from './DocLink'
import List from './List' import List from './List'
import SongDatagridRow from './SongDatagridRow' import { SongDatagrid, SongDatagridRow } from './SongDatagrid'
import AddToPlaylistMenu from './AddToPlaylistMenu' import AddToPlaylistMenu from './AddToPlaylistMenu'
import SongContextMenu from './SongContextMenu' import SongContextMenu from './SongContextMenu'
@@ -25,6 +25,7 @@ export {
SimpleList, SimpleList,
RangeField, RangeField,
SongDetails, SongDetails,
SongDatagrid,
SongDatagridRow, SongDatagridRow,
DocLink, DocLink,
formatRange, formatRange,
+2 -2
View File
@@ -1,11 +1,11 @@
import React from 'react' import React from 'react'
import { import {
BulkActionsToolbar, BulkActionsToolbar,
Datagrid,
DatagridBody,
DatagridLoading, DatagridLoading,
ListToolbar, ListToolbar,
TextField, TextField,
DatagridBody,
Datagrid,
useListController, useListController,
useRefresh, useRefresh,
} from 'react-admin' } from 'react-admin'
+4 -13
View File
@@ -1,7 +1,5 @@
import React from 'react' import React from 'react'
import { import {
Datagrid,
DatagridBody,
Filter, Filter,
FunctionField, FunctionField,
NumberField, NumberField,
@@ -14,7 +12,7 @@ import {
SimpleList, SimpleList,
List, List,
SongDetails, SongDetails,
SongDatagridRow, SongDatagrid,
SongContextMenu, SongContextMenu,
} from '../common' } from '../common'
import { useDispatch } from 'react-redux' import { useDispatch } from 'react-redux'
@@ -28,13 +26,6 @@ const SongFilter = (props) => (
</Filter> </Filter>
) )
const SongsDatagridBody = (props) => (
<DatagridBody {...props} row={<SongDatagridRow />} />
)
const SongsDatagrid = (props) => (
<Datagrid {...props} body={<SongsDatagridBody />} />
)
const SongList = (props) => { const SongList = (props) => {
const dispatch = useDispatch() const dispatch = useDispatch()
const isXsmall = useMediaQuery((theme) => theme.breakpoints.down('xs')) const isXsmall = useMediaQuery((theme) => theme.breakpoints.down('xs'))
@@ -59,10 +50,10 @@ const SongList = (props) => {
</> </>
)} )}
linkType={(id, basePath, record) => dispatch(setTrack(record))} linkType={(id, basePath, record) => dispatch(setTrack(record))}
rightIcon={(r) => <SongContextMenu record={r} />} rightIcon={(r) => <SongContextMenu record={r} visible={true} />}
/> />
) : ( ) : (
<SongsDatagrid <SongDatagrid
expand={<SongDetails />} expand={<SongDetails />}
rowClick={(id, basePath, record) => dispatch(setTrack(record))} rowClick={(id, basePath, record) => dispatch(setTrack(record))}
> >
@@ -76,7 +67,7 @@ const SongList = (props) => {
)} )}
<DurationField source="duration" /> <DurationField source="duration" />
<SongContextMenu /> <SongContextMenu />
</SongsDatagrid> </SongDatagrid>
)} )}
</List> </List>
) )