2026-03-16 02:39:48 -08:00
|
|
|
import { useRecordContext } from 'react-admin'
|
|
|
|
|
import { Avatar } from '@material-ui/core'
|
|
|
|
|
import { makeStyles } from '@material-ui/core/styles'
|
|
|
|
|
import clsx from 'clsx'
|
2026-03-22 10:54:28 -08:00
|
|
|
import { COVER_ART_SIZE } from '../consts'
|
2026-03-16 02:39:48 -08:00
|
|
|
import subsonic from '../subsonic'
|
|
|
|
|
|
|
|
|
|
const useStyles = makeStyles({
|
|
|
|
|
avatar: {
|
|
|
|
|
width: '55px',
|
|
|
|
|
height: '55px',
|
|
|
|
|
},
|
|
|
|
|
square: {
|
|
|
|
|
borderRadius: '4px',
|
|
|
|
|
},
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
export const CoverArtAvatar = ({
|
|
|
|
|
record: recordProp,
|
|
|
|
|
variant = 'circular',
|
|
|
|
|
}) => {
|
|
|
|
|
const classes = useStyles()
|
|
|
|
|
const recordContext = useRecordContext()
|
|
|
|
|
const record = recordProp || recordContext
|
|
|
|
|
if (!record) return null
|
|
|
|
|
const square = variant !== 'circular'
|
|
|
|
|
return (
|
|
|
|
|
<Avatar
|
2026-03-22 10:54:28 -08:00
|
|
|
src={subsonic.getCoverArtUrl(record, COVER_ART_SIZE, square)}
|
2026-03-16 02:39:48 -08:00
|
|
|
variant={variant}
|
|
|
|
|
className={clsx(classes.avatar, square && classes.square)}
|
|
|
|
|
alt={record.name}
|
|
|
|
|
/>
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
CoverArtAvatar.defaultProps = { label: '', sortable: false }
|