import useUserLikedTracksIDs, { useMutationLikeATrack, } from '@/renderer/hooks/useUserLikedTracksIDs' import { player, state } from '@/renderer/store' import { resizeImage } from '@/renderer/utils/common' import ArtistInline from '../ArtistsInline' import Cover from '../Cover' import IconButton from '../IconButton' import SvgIcon from '../SvgIcon' import { State as PlayerState, Mode as PlayerMode, } from '@/renderer/utils/player' const PlayingTrack = () => { const playerSnapshot = useSnapshot(player) const track = useMemo(() => playerSnapshot.track, [playerSnapshot.track]) const navigate = useNavigate() const toAlbum = () => { const id = track?.al?.id if (!id) return navigate(`/album/${id}`) state.uiStates.showLyricPanel = false } const trackListSource = useMemo( () => playerSnapshot.trackListSource, [playerSnapshot.trackListSource] ) const toTrackListSource = () => { if (!trackListSource?.type) return navigate(`/${trackListSource.type}/${trackListSource.id}`) state.uiStates.showLyricPanel = false } return (
{track?.name}
{' '} -{' '} {track?.al.name}
) } const LikeButton = ({ track }: { track: Track | undefined | null }) => { const { data: userLikedSongs } = useUserLikedTracksIDs() const mutationLikeATrack = useMutationLikeATrack() return (
track?.id && mutationLikeATrack.mutate(track.id)} >
) } const Controls = () => { const playerSnapshot = useSnapshot(player) const state = useMemo(() => playerSnapshot.state, [playerSnapshot.state]) const track = useMemo(() => playerSnapshot.track, [playerSnapshot.track]) const mode = useMemo(() => playerSnapshot.mode, [playerSnapshot.mode]) return (
{mode === PlayerMode.PLAYLIST && ( track && player.prevTrack()} disabled={!track} > )} {mode === PlayerMode.FM && ( player.fmTrash()}> )} track && player.playOrPause()} disabled={!track} className='after:rounded-xl' > track && player.nextTrack()} disabled={!track}>
) } const Player = ({ className }: { className?: string }) => { const playerSnapshot = useSnapshot(player) const track = useMemo(() => playerSnapshot.track, [playerSnapshot.track]) return (
) } export default Player