mirror of
https://github.com/jeffvli/feishin.git
synced 2026-05-10 04:30:25 +02:00
use ItemImage in library header
This commit is contained in:
@@ -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 || ''}
|
||||||
/>
|
/>
|
||||||
|
|||||||
Reference in New Issue
Block a user