[bugfix/feat]: always fetch artist image for Navidrome (#317)

* [bugfix/feat]: always fetch artist image for Navidrome

* Add error fallback to library header image

---------

Co-authored-by: jeffvli <jeffvictorli@gmail.com>
This commit is contained in:
Kendall Garner 2023-10-22 22:46:48 +00:00 committed by GitHub
parent 74cab01013
commit 452ef783f2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 7 deletions

View file

@ -20,10 +20,6 @@ const getImageUrl = (args: { url: string | null }) => {
return null;
}
if (url?.match('eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9')) {
return null;
}
return url;
};
@ -186,7 +182,16 @@ const normalizeAlbumArtist = (
},
server: ServerListItem | null,
): AlbumArtist => {
const imageUrl = getImageUrl({ url: item?.largeImageUrl || null });
let imageUrl = getImageUrl({ url: item?.largeImageUrl || null });
if (!imageUrl) {
imageUrl = getCoverArtUrl({
baseUrl: server?.url,
coverArtId: `ar-${item.id}`,
credential: server?.credential,
size: 100,
});
}
return {
albumCount: item.albumCount,

View file

@ -1,5 +1,5 @@
import { Group } from '@mantine/core';
import { forwardRef, ReactNode, Ref } from 'react';
import { forwardRef, ReactNode, Ref, useState } from 'react';
import { Link } from 'react-router-dom';
import styles from './library-header.module.scss';
import { LibraryItem } from '/@/renderer/api/types';
@ -20,6 +20,12 @@ export const LibraryHeader = forwardRef(
{ imageUrl, imagePlaceholderUrl, background, title, item, children }: LibraryHeaderProps,
ref: Ref<HTMLDivElement>,
) => {
const [isImageError, setIsImageError] = useState<boolean | null>(false);
const onImageError = () => {
setIsImageError(true);
};
return (
<div
ref={ref}
@ -31,13 +37,14 @@ export const LibraryHeader = forwardRef(
/>
<div className={styles.backgroundOverlay} />
<div className={styles.imageSection}>
{imageUrl ? (
{imageUrl && !isImageError ? (
<img
alt="cover"
className={styles.image}
placeholder={imagePlaceholderUrl || 'var(--placeholder-bg)'}
src={imageUrl}
style={{ height: '' }}
onError={onImageError}
/>
) : (
<ItemImagePlaceholder itemType={item.type} />