import { resizeImage } from '@/web/utils/common' import { cx } from '@emotion/css' import { useNavigate } from 'react-router-dom' import Image from './Image' import { prefetchAlbum } from '@/web/api/hooks/useAlbum' import { prefetchPlaylist } from '@/web/api/hooks/usePlaylist' const CoverRow = ({ albums, playlists, title, className, }: { title?: string className?: string albums?: Album[] playlists?: Playlist[] }) => { const navigate = useNavigate() const goTo = (id: number) => { if (albums) navigate(`/album/${id}`) if (playlists) navigate(`/playlist/${id}`) } const prefetch = (id: number) => { if (albums) prefetchAlbum({ id }) if (playlists) prefetchPlaylist({ id }) } return (
{/* Title */} {title && (

{title}

)} {/* Items */}
{albums?.map(album => ( goTo(album.id)} key={album.id} alt={album.name} src={resizeImage(album?.picUrl || '', 'md')} className='aspect-square rounded-24' onMouseOver={() => prefetch(album.id)} /> ))} {playlists?.map(playlist => ( goTo(playlist.id)} key={playlist.id} alt={playlist.name} src={resizeImage( playlist.coverImgUrl || playlist?.picUrl || '', 'md' )} className='aspect-square rounded-24' onMouseOver={() => prefetch(playlist.id)} /> ))}
) } export default CoverRow