import clsx from 'clsx'; import { memo, MouseEvent } from 'react'; import styles from './mobile-fullscreen-player.module.css'; import { ActionIcon } from '/@/shared/components/action-icon/action-icon'; import { Group } from '/@/shared/components/group/group'; import { Rating } from '/@/shared/components/rating/rating'; import { Separator } from '/@/shared/components/separator/separator'; import { TextTitle } from '/@/shared/components/text-title/text-title'; import { Text } from '/@/shared/components/text/text'; import { PlaybackSelectors } from '/@/shared/constants/playback-selectors'; import { QueueSong } from '/@/shared/types/domain-types'; interface MobileFullscreenPlayerMetadataProps { currentSong?: QueueSong; onToggleFavorite: (e: MouseEvent) => void; onUpdateRating: (rating: number) => void; radioArtist?: string; radioStationName?: string; radioTitle?: string; showRating?: boolean; } export const MobileFullscreenPlayerMetadata = memo( ({ currentSong, onToggleFavorite, onUpdateRating, radioArtist, radioStationName, radioTitle, showRating, }: MobileFullscreenPlayerMetadataProps) => { const isRadio = radioTitle !== undefined || radioStationName !== undefined; const title = isRadio ? radioTitle || radioStationName || 'Radio' : currentSong?.name; const artistsDisplay = isRadio ? radioArtist || radioStationName || '—' : currentSong?.artists?.map((a) => a.name).join(', '); const album = isRadio ? radioStationName || '—' : currentSong?.album; const container = currentSong?.container; const year = currentSong?.releaseYear; const isFavorite = currentSong?.userFavorite; const rating = currentSong?.userRating; const hasMetadata = !isRadio && (container || year); return (
{title || '—'}
{artistsDisplay || '—'} {album || '—'} {hasMetadata && ( {container && {container}} {year && ( <> {container && } {year} )} )} {!isRadio && ( {showRating && ( )} )}
); }, ); MobileFullscreenPlayerMetadata.displayName = 'MobileFullscreenPlayerMetadata';