diff --git a/ui/src/playlist/PlaylistSongs.jsx b/ui/src/playlist/PlaylistSongs.jsx index 8f231e6a4..9c614a8dc 100644 --- a/ui/src/playlist/PlaylistSongs.jsx +++ b/ui/src/playlist/PlaylistSongs.jsx @@ -57,7 +57,10 @@ AlbumOrChannelLinkField.defaultProps = { addLabel: true, sortBy: 'album' } const PodcastAwareArtistField = (props) => { const record = props.record - if (record?.genre === 'Podcast' && !record?.artist) { + const isPodcast = record?.genre === 'Podcast' + const hasNoRealArtist = + !record?.artist || record?.artist === '[Unknown Artist]' + if (isPodcast && hasNoRealArtist) { return - } return diff --git a/ui/src/podcast/PodcastGridView.jsx b/ui/src/podcast/PodcastGridView.jsx index 7de199af9..ff5bd27b7 100644 --- a/ui/src/podcast/PodcastGridView.jsx +++ b/ui/src/podcast/PodcastGridView.jsx @@ -42,6 +42,11 @@ const useStyles = makeStyles((theme) => ({ }, })) +const buildSrcSet = (images) => { + if (!images || images.length === 0) return undefined + return images.map((img) => `${img.url} ${img.width}w`).join(', ') +} + const getColsForWidth = (width) => { if (width === 'xs') return 2 if (width === 'sm') return 3 @@ -67,7 +72,13 @@ const PodcastGridView = ({ width, ...props }) => {
{record.imageUrl ? ( - {record.title} + {record.title} ) : (
diff --git a/ui/src/podcast/PodcastList.jsx b/ui/src/podcast/PodcastList.jsx index 144ef5b1c..d67984827 100644 --- a/ui/src/podcast/PodcastList.jsx +++ b/ui/src/podcast/PodcastList.jsx @@ -42,11 +42,18 @@ const PodcastFilter = (props) => ( ) +const bestImageUrl = (record, targetWidth) => { + if (!record.images || record.images.length === 0) return record.imageUrl + const sorted = [...record.images].sort((a, b) => a.width - b.width) + const best = sorted.find((img) => img.width >= targetWidth) || sorted[sorted.length - 1] + return best ? best.url : record.imageUrl +} + const CoverArtField = ({ record }) => { if (!record) return null if (record.imageUrl) { return ( - + ) } return ( diff --git a/ui/src/podcast/PodcastShow.jsx b/ui/src/podcast/PodcastShow.jsx index 1fbcaee89..6f98b4d5a 100644 --- a/ui/src/podcast/PodcastShow.jsx +++ b/ui/src/podcast/PodcastShow.jsx @@ -88,6 +88,11 @@ const useStyles = makeStyles((theme) => ({ tableWrapper: { marginTop: theme.spacing(2), overflowX: 'auto' }, })) +const buildSrcSet = (images) => { + if (!images || images.length === 0) return undefined + return images.map((img) => `${img.url} ${img.width}w`).join(', ') +} + const formatDuration = (seconds) => { if (!seconds) return '' const h = Math.floor(seconds / 3600) @@ -153,6 +158,8 @@ const PodcastShow = (props) => { {record.imageUrl ? ( {record.title}