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 { Card, CardContent, CardMedia, Typography } from '@material-ui/core'
import { subsonicUrl } from '../subsonic'

View File

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

View File

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

View File

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