refactor: simplify PlayButton usage

This commit is contained in:
Deluan 2020-02-07 16:38:01 -05:00
parent a50735a94c
commit 8f0c07d29f
4 changed files with 12 additions and 25 deletions

View File

@ -1,4 +1,4 @@
import React, { Fragment } from 'react' import React from 'react'
import { Loading, useGetOne } from 'react-admin' import { Loading, useGetOne } from 'react-admin'
import { Card, CardContent, CardMedia, Typography } from '@material-ui/core' import { Card, CardContent, CardMedia, Typography } from '@material-ui/core'
import { subsonicUrl } from '../subsonic' import { subsonicUrl } from '../subsonic'

View File

@ -32,8 +32,8 @@ const AlbumSongList = (props) => {
total={total} total={total}
primaryText={(r) => ( primaryText={(r) => (
<> <>
<PlayButton record={r} /> <PlayButton action={setTrack(r)} />
<PlayButton record={r} action={addTrack} icon={<AddIcon />} /> <PlayButton action={addTrack(r)} icon={<AddIcon />} />
{trackName(r)} {trackName(r)}
</> </>
)} )}

View File

@ -3,23 +3,17 @@ import PropTypes from 'prop-types'
import PlayArrowIcon from '@material-ui/icons/PlayArrow' import PlayArrowIcon from '@material-ui/icons/PlayArrow'
import { IconButton } from '@material-ui/core' import { IconButton } from '@material-ui/core'
import { useDispatch } from 'react-redux' import { useDispatch } from 'react-redux'
import { setTrack } from '../player'
const defaultIcon = <PlayArrowIcon fontSize="small" /> const defaultIcon = <PlayArrowIcon fontSize="small" />
const PlayButton = ({ const PlayButton = ({ icon = defaultIcon, action, ...rest }) => {
record,
icon = defaultIcon,
action = setTrack,
...rest
}) => {
const dispatch = useDispatch() const dispatch = useDispatch()
return ( return (
<IconButton <IconButton
onClick={(e) => { onClick={(e) => {
e.stopPropagation() e.stopPropagation()
dispatch(action(record)) dispatch(action)
}} }}
{...rest} {...rest}
size={'small'} size={'small'}
@ -30,8 +24,7 @@ const PlayButton = ({
} }
PlayButton.propTypes = { PlayButton.propTypes = {
record: PropTypes.any,
icon: PropTypes.element, icon: PropTypes.element,
action: PropTypes.func action: PropTypes.object
} }
export default PlayButton export default PlayButton

View File

@ -66,21 +66,15 @@ const SongList = (props) => {
> >
{isXsmall ? ( {isXsmall ? (
<SimpleList <SimpleList
primaryText={(record) => ( primaryText={(r) => (
<> <>
<PlayButton record={record} /> <PlayButton action={setTrack(r)} />
<PlayButton <PlayButton action={addTrack(r)} icon={<AddIcon />} />
record={record} {r.title}
action={addTrack}
icon={<AddIcon />}
/>
{record.title}
</> </>
)} )}
secondaryText={(record) => record.artist} secondaryText={(r) => r.artist}
tertiaryText={(record) => ( tertiaryText={(r) => <DurationField record={r} source={'duration'} />}
<DurationField record={record} source={'duration'} />
)}
linkType={(id, basePath, record) => dispatch(setTrack(record))} linkType={(id, basePath, record) => dispatch(setTrack(record))}
/> />
) : ( ) : (