import persistedUiStates from '@/web/states/persistedUiStates' import player from '@/web/states/player' import { ease } from '@/web/utils/const' import { cx, css } from '@emotion/css' import { MotionConfig, motion } from 'framer-motion' import { useSnapshot } from 'valtio' import Icon from '../../Icon' import { State as PlayerState } from '@/web/utils/player' import useUserLikedTracksIDs, { useMutationLikeATrack, } from '@/web/api/hooks/useUserLikedTracksIDs' const LikeButton = () => { const { track } = useSnapshot(player) const { data: likedIDs } = useUserLikedTracksIDs() const isLiked = !!likedIDs?.ids?.find(id => id === track?.id) const likeATrack = useMutationLikeATrack() const { minimizePlayer: mini } = useSnapshot(persistedUiStates) return ( track?.id && likeATrack.mutateAsync(track.id)} className='text-black/90 transition-colors duration-400 dark:text-white/40 hover:dark:text-white/90' > ) } const Controls = () => { const { state, track } = useSnapshot(player) const { minimizePlayer: mini } = useSnapshot(persistedUiStates) return ( {/* Minimize */} { persistedUiStates.minimizePlayer = !mini }} > {/* Media controls */}
track && player.prevTrack()} disabled={!track} className='rounded-full bg-black/10 p-2.5 transition-colors duration-400 dark:bg-white/10 hover:dark:bg-white/20' > track && player.playOrPause()} className='rounded-full bg-black/10 p-2.5 transition-colors duration-400 dark:bg-white/10 hover:dark:bg-white/20' > track && player.nextTrack()} disabled={!track} className='rounded-full bg-black/10 p-2.5 transition-colors duration-400 dark:bg-white/10 hover:dark:bg-white/20' >
{/* Like */}
) } export default Controls