import { player } from '@/web/store' import { css, cx } from '@emotion/css' import { useSnapshot } from 'valtio' import Image from '@/web/components/New/Image' import Icon from '@/web/components/Icon' import useCoverColor from '@/web/hooks/useCoverColor' import { resizeImage } from '@/web/utils/common' import { motion, PanInfo, useMotionValue } from 'framer-motion' import { useLockBodyScroll } from 'react-use' import { useState } from 'react' import useUserLikedTracksIDs, { useMutationLikeATrack, } from '@/web/api/hooks/useUserLikedTracksIDs' import PlayingNextMobile from './PlayingNextMobile' const LikeButton = () => { const { track } = useSnapshot(player) const { data: likedIDs } = useUserLikedTracksIDs() const isLiked = !!likedIDs?.ids?.find(id => id === track?.id) const likeATrack = useMutationLikeATrack() return ( ) } const PlayerMobile = () => { const { track, state } = useSnapshot(player) const bgColor = useCoverColor(track?.al?.picUrl ?? '') const [locked, setLocked] = useState(false) useLockBodyScroll(locked) const onDragEnd = ( event: MouseEvent | TouchEvent | PointerEvent, info: PanInfo ) => { console.log(JSON.stringify(info)) const { x, y } = info.offset const offset = 100 if (y > -100) { if (x > offset) player.prevTrack() if (x < -offset) player.nextTrack() } setLocked(false) } return (
{/* Cover */}
{/* Track info */}
setLocked(true)} onDragEnd={onDragEnd} className='flex items-center flex-grow h-full ' >
{track?.name}
{track?.ar?.map(a => a.name).join(', ')}
{/* Like */} {/* Play or pause */}
) } export default PlayerMobile