use ItemImage in library header

This commit is contained in:
jeffvli
2025-12-30 16:17:37 -08:00
parent 4e213ea79e
commit 7aeadb531f
5 changed files with 31 additions and 18 deletions
@@ -91,12 +91,6 @@ export const AlbumDetailHeader = forwardRef<HTMLDivElement>((_props, ref) => {
const releaseYear = detailQuery?.data?.releaseYear; const releaseYear = detailQuery?.data?.releaseYear;
const releaseDate = detailQuery?.data?.releaseDate; const releaseDate = detailQuery?.data?.releaseDate;
const imageUrl = useItemImageUrl({
id: detailQuery?.data?.imageId || undefined,
itemType: LibraryItem.ALBUM,
type: 'header',
});
const metadataItems = useMemo(() => { const metadataItems = useMemo(() => {
const items: Array<{ id: string; value: React.ReactNode | string | undefined }> = []; const items: Array<{ id: string; value: React.ReactNode | string | undefined }> = [];
@@ -192,9 +186,10 @@ export const AlbumDetailHeader = forwardRef<HTMLDivElement>((_props, ref) => {
return ( return (
<Stack ref={ref}> <Stack ref={ref}>
<LibraryHeader <LibraryHeader
imageUrl={imageUrl}
item={{ item={{
children: headerItem, children: headerItem,
imageId: detailQuery?.data?.imageId,
imageUrl: detailQuery?.data?.imageUrl,
route: AppRoute.LIBRARY_ALBUMS, route: AppRoute.LIBRARY_ALBUMS,
type: LibraryItem.ALBUM, type: LibraryItem.ALBUM,
}} }}
@@ -126,7 +126,12 @@ const DummyAlbumDetailRoute = () => {
<Stack> <Stack>
<LibraryHeader <LibraryHeader
imageUrl={imageUrl} imageUrl={imageUrl}
item={{ route: AppRoute.LIBRARY_SONGS, type: LibraryItem.SONG }} item={{
imageId: detailQuery?.data?.imageId,
imageUrl: detailQuery?.data?.imageUrl,
route: AppRoute.LIBRARY_SONGS,
type: LibraryItem.SONG,
}}
loading={!background || colorId !== albumId} loading={!background || colorId !== albumId}
title={detailQuery?.data?.name || ''} title={detailQuery?.data?.name || ''}
> >
@@ -141,7 +141,12 @@ export const AlbumArtistDetailHeader = forwardRef((_props, ref: Ref<HTMLDivEleme
return ( return (
<LibraryHeader <LibraryHeader
imageUrl={selectedImageUrl} imageUrl={selectedImageUrl}
item={{ route: AppRoute.LIBRARY_ALBUM_ARTISTS, type: LibraryItem.ALBUM_ARTIST }} item={{
imageId: detailQuery.data?.imageId,
imageUrl: detailQuery.data?.imageUrl,
route: AppRoute.LIBRARY_ALBUM_ARTISTS,
type: LibraryItem.ALBUM_ARTIST,
}}
ref={ref} ref={ref}
title={detailQuery.data?.name || ''} title={detailQuery.data?.name || ''}
> >
@@ -94,7 +94,12 @@ export const PlaylistDetailSongListHeader = ({
) : ( ) : (
<LibraryHeader <LibraryHeader
imageUrl={imageUrl} imageUrl={imageUrl}
item={{ route: AppRoute.PLAYLISTS, type: LibraryItem.PLAYLIST }} item={{
imageId: detailQuery?.data?.imageId,
imageUrl: detailQuery?.data?.imageUrl,
route: AppRoute.PLAYLISTS,
type: LibraryItem.PLAYLIST,
}}
title={detailQuery?.data?.name} title={detailQuery?.data?.name}
> >
<LibraryHeaderMenu <LibraryHeaderMenu
@@ -6,6 +6,7 @@ import { Link } from 'react-router';
import styles from './library-header.module.css'; import styles from './library-header.module.css';
import { ItemImage } from '/@/renderer/components/item-image/item-image';
import { useIsPlayerFetching } from '/@/renderer/features/player/context/player-context'; import { useIsPlayerFetching } from '/@/renderer/features/player/context/player-context';
import { import {
PlayLastTextButton, PlayLastTextButton,
@@ -22,7 +23,6 @@ import { Button } from '/@/shared/components/button/button';
import { Center } from '/@/shared/components/center/center'; import { Center } from '/@/shared/components/center/center';
import { Group } from '/@/shared/components/group/group'; import { Group } from '/@/shared/components/group/group';
import { Icon } from '/@/shared/components/icon/icon'; import { Icon } from '/@/shared/components/icon/icon';
import { Image } from '/@/shared/components/image/image';
import { Rating } from '/@/shared/components/rating/rating'; import { Rating } from '/@/shared/components/rating/rating';
import { Spinner } from '/@/shared/components/spinner/spinner'; import { Spinner } from '/@/shared/components/spinner/spinner';
import { Text } from '/@/shared/components/text/text'; import { Text } from '/@/shared/components/text/text';
@@ -34,7 +34,13 @@ interface LibraryHeaderProps {
containerClassName?: string; containerClassName?: string;
imagePlaceholderUrl?: null | string; imagePlaceholderUrl?: null | string;
imageUrl?: null | string; imageUrl?: null | string;
item: { children?: ReactNode; route: string; type?: LibraryItem }; item: {
children?: ReactNode;
imageId?: null | string;
imageUrl?: null | string;
route: string;
type?: LibraryItem;
};
loading?: boolean; loading?: boolean;
title: string; title: string;
} }
@@ -110,12 +116,9 @@ export const LibraryHeader = forwardRef(
tabIndex={0} tabIndex={0}
> >
{!isImageError && ( {!isImageError && (
<Image <ItemImage
alt="cover" id={item.imageId}
className={styles.image} itemType={item.type as LibraryItem}
containerClassName={styles.image}
key={imageUrl}
loading="eager"
onError={onImageError} onError={onImageError}
src={imageUrl || ''} src={imageUrl || ''}
/> />