import { player } from '@/web/store' import { resizeImage } from '@/web/utils/common' import Icon from './Icon' import ArtistInline from './ArtistsInline' import { State as PlayerState, Mode as PlayerMode } from '@/web/utils/player' import useCoverColor from '../hooks/useCoverColor' import { cx } from '@emotion/css' import { useNavigate } from 'react-router-dom' import { useSnapshot } from 'valtio' import { useMemo } from 'react' const MediaControls = () => { const classes = 'btn-pressed-animation btn-hover-animation mr-1 cursor-default rounded-lg p-1.5 transition duration-200 after:bg-white/10' const playerSnapshot = useSnapshot(player) const state = useMemo(() => playerSnapshot.state, [playerSnapshot.state]) const playOrPause = () => { if (playerSnapshot.mode === PlayerMode.FM) { player.playOrPause() } else { player.playFM() } } return (
) } const FMCard = () => { const navigate = useNavigate() const { track } = useSnapshot(player) const coverUrl = useMemo( () => resizeImage(track?.al?.picUrl ?? '', 'md'), [track?.al?.picUrl] ) const bgColor = useCoverColor(track?.al?.picUrl ?? '') return (
{coverUrl ? ( track?.al?.id && navigate(`/album/${track.al.id}`)} className='rounded-lg shadow-2xl' src={coverUrl} /> ) : (
)}
{/* Track info */}
{track ? (
{track?.name}
) : (
PLACEHOLDER12345
)} {track ? ( ) : (
PLACEHOLDER
)}
{track ? :
} {/* FM logo */}
私人FM
) } export default FMCard