import { forwardRef, Fragment, Ref } from 'react'; import { Group, Stack } from '@mantine/core'; import { useParams } from 'react-router'; import { Badge, Text } from '/@/renderer/components'; import { usePlaylistDetail } from '/@/renderer/features/playlists/queries/playlist-detail-query'; import { LibraryHeader } from '/@/renderer/features/shared'; import { AppRoute } from '/@/renderer/router/routes'; import { formatDurationString } from '/@/renderer/utils'; import { LibraryItem } from '/@/renderer/api/types'; import { useCurrentServer } from '../../../store/auth.store'; interface PlaylistDetailHeaderProps { background: string; imagePlaceholderUrl?: string | null; imageUrl?: string | null; } export const PlaylistDetailHeader = forwardRef( ( { background, imageUrl, imagePlaceholderUrl }: PlaylistDetailHeaderProps, ref: Ref, ) => { const { playlistId } = useParams() as { playlistId: string }; const server = useCurrentServer(); const detailQuery = usePlaylistDetail({ query: { id: playlistId }, serverId: server?.id }); const metadataItems = [ { id: 'songCount', secondary: false, value: `${detailQuery?.data?.songCount || 0} songs`, }, { id: 'duration', secondary: true, value: detailQuery?.data?.duration && formatDurationString(detailQuery.data.duration), }, ]; const isSmartPlaylist = detailQuery?.data?.rules; return ( {metadataItems.map((item, index) => ( {index > 0 && } {item.value} ))} {isSmartPlaylist && ( <> Smart Playlist )} {detailQuery?.data?.description} ); }, );