import useLyric from '@/web/api/hooks/useLyric' import usePlaylist from '@/web/api/hooks/usePlaylist' import useUserPlaylists from '@/web/api/hooks/useUserPlaylists' import player from '@/web/states/player' import { sample, chunk, sampleSize } from 'lodash-es' import { css, cx } from '@emotion/css' import { useState, useEffect, useMemo, useCallback, memo } from 'react' import toast from 'react-hot-toast' import { useNavigate } from 'react-router-dom' import Icon from '@/web/components/Icon' import { lyricParser } from '@/web/utils/lyric' import Image from '@/web/components/Image' import { resizeImage } from '@/web/utils/common' import { breakpoint as bp } from '@/web/utils/const' import useUser from '@/web/api/hooks/useUser' import { useTranslation } from 'react-i18next' const Lyrics = ({ tracksIDs }: { tracksIDs: number[] }) => { const { t } = useTranslation() const [id, setId] = useState(0) const { data: user } = useUser() useEffect(() => { if (id === 0) { setId(sample(tracksIDs) || 0) } }, [id, tracksIDs]) const { data: lyric } = useLyric({ id }) const lyricLines = useMemo(() => { if (!lyric?.lrc?.lyric) return [] const parsedLyrics = lyricParser(lyric) const lines = parsedLyrics.lyric.map(line => line.content) return sample(chunk(lines, 4)) ?? [] }, [lyric]) return (