import usePlaylist from '@/web/api/hooks/usePlaylist'
import useUser from '@/web/api/hooks/useUser'
import useUserPlaylists, {
useMutationLikeAPlaylist,
} from '@/web/api/hooks/useUserPlaylists'
import TrackListHeader from '@/web/components/TrackListHeader'
import player from '@/web/states/player'
import { formatDate } from '@/web/utils/common'
import { useMemo } from 'react'
import { useParams } from 'react-router-dom'
const Header = () => {
const params = useParams()
const { data: playlistRaw, isLoading } = usePlaylist({
id: Number(params.id),
})
const { data: user } = useUser()
const { data: userLikedPlaylists } = useUserPlaylists()
const playlist = playlistRaw?.playlist
// For
const cover = playlist?.coverImgUrl || playlist?.picUrl
// For
const title = playlist?.name
const creatorName = playlist?.creator?.nickname
const creatorLink = undefined // TODO: 链接到用户页面
const description = playlist?.description || ''
const extraInfo = useMemo(() => {
return (
<>
Updated at {formatDate(playlist?.updateTime || 0, 'en')} ·{' '}
{playlist?.trackCount} tracks
>
)
}, [playlist])
// For
const isLiked = useMemo(() => {
const id = Number(params.id)
if (!id) return false
return !!userLikedPlaylists?.playlist.find(p => p.id === id)
}, [params.id, userLikedPlaylists?.playlist])
const onPlay = async (trackID: number | null = null) => {
await player.playPlaylist(playlist?.id, trackID)
}
const likeAPlaylist = useMutationLikeAPlaylist()
const onLike = async () => {
likeAPlaylist.mutateAsync(playlist?.id || Number(params.id))
}
return (
)
}
export default Header