Files
navidrome/ui/src/common/PlayButton.js
T
Shishir A S c57fa7a8fc Fixes play icon color in "Light" theme (#972)
* fix(ui/src/album): White play button on hover for all themes - #960

* fix(PlayButton) : White play button for light theme - #960

* fix(PlayButton) : White play button for light theme - #960

* bug(AlbumGridView.js) - Album play button defaults to white, can be overridden - #960

Signed-off-by: Shishir <shishir.srik@gmail.com>

* bug(AlbumGridView.js) - Album play button defaults to white, can be overridden - #960

* Reverted package.json and package-lock.json - #960

Signed-off-by: Shishir <shishir.srik@gmail.com>

* Missing lint script added - #960

Signed-off-by: Shishir <shishir.srik@gmail.com>

* Removed color, added className and made record required in PlayButton.propTypes - #960
2021-04-06 10:02:44 -04:00

58 lines
1.5 KiB
JavaScript

import React from 'react'
import PropTypes from 'prop-types'
import PlayArrowIcon from '@material-ui/icons/PlayArrow'
import { IconButton } from '@material-ui/core'
import { useDispatch } from 'react-redux'
import { useDataProvider } from 'react-admin'
import { playTracks } from '../actions'
export const PlayButton = ({ record, size, className }) => {
let extractSongsData = function (response) {
const data = response.data.reduce(
(acc, cur) => ({ ...acc, [cur.id]: cur }),
{}
)
const ids = response.data.map((r) => r.id)
return { data, ids }
}
const dataProvider = useDataProvider()
const dispatch = useDispatch()
const playAlbum = (record) => {
dataProvider
.getList('albumSong', {
pagination: { page: 1, perPage: -1 },
sort: { field: 'discNumber, trackNumber', order: 'ASC' },
filter: { album_id: record.id, disc_number: record.discNumber },
})
.then((response) => {
let { data, ids } = extractSongsData(response)
dispatch(playTracks(data, ids))
})
}
return (
<IconButton
onClick={(e) => {
e.stopPropagation()
e.preventDefault()
playAlbum(record)
}}
aria-label="play"
className={className}
size={size}
>
<PlayArrowIcon fontSize={size} />
</IconButton>
)
}
PlayButton.propTypes = {
record: PropTypes.object.isRequired,
size: PropTypes.string,
className: PropTypes.string,
}
PlayButton.defaultProps = {
size: 'small',
}