import { useSuspenseQuery } from '@tanstack/react-query'; import clsx from 'clsx'; import formatDuration from 'format-duration'; import { motion } from 'motion/react'; import { Fragment, Suspense } from 'react'; import styles from './expanded-album-list-item.module.css'; import { ItemListStateItem } from '/@/renderer/components/item-list/helpers/item-list-state'; import { albumQueries } from '/@/renderer/features/albums/api/album-api'; import { useFastAverageColor } from '/@/renderer/hooks'; import { Group } from '/@/shared/components/group/group'; import { ScrollArea } from '/@/shared/components/scroll-area/scroll-area'; import { Separator } from '/@/shared/components/separator/separator'; import { Spinner } from '/@/shared/components/spinner/spinner'; import { Table } from '/@/shared/components/table/table'; import { TextTitle } from '/@/shared/components/text-title/text-title'; import { Text } from '/@/shared/components/text/text'; interface ExpandedAlbumListItemProps { item: ItemListStateItem; } export const ExpandedAlbumListItem = ({ item }: ExpandedAlbumListItemProps) => { const { data, isLoading } = useSuspenseQuery( albumQueries.detail({ query: { id: item.id }, serverId: item._serverId, }), ); const color = useFastAverageColor({ algorithm: 'sqrt', id: item.id, src: data?.imageUrl, srcLoaded: true, }); if (color.isLoading) { return null; } return ( {isLoading && (
)}
{data?.name} {data?.albumArtists.map((artist, index) => ( {artist.name} {index < data?.albumArtists.length - 1 && } ))}
{data?.songs?.map((song) => ( {song.discNumber} - {song.trackNumber} {song.name} {formatDuration(song.duration)} ))}
); };