import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; import { Heart, Play, Plus } from "lucide-react"; import { useState } from "react"; import { Link, useParams } from "react-router-dom"; import { tracksApi } from "../lib/api"; import { formatDate, formatDuration } from "../lib/format"; import { usePlayer } from "../store/player"; import { AddToPlaylistModal } from "../components/AddToPlaylistModal"; import { ArtistLinks } from "../components/ArtistLinks"; import { Comments } from "../components/Comments"; import { Cover } from "../components/Cover"; import { LyricsView } from "../components/LyricsView"; import { ShareButton } from "../components/ShareButton"; export function TrackPage() { const { id = "" } = useParams(); const playNow = usePlayer((s) => s.playNow); const addToQueue = usePlayer((s) => s.addToQueue); const qc = useQueryClient(); const [addOpen, setAddOpen] = useState(false); const { data, isLoading } = useQuery({ queryKey: ["track", id], queryFn: () => tracksApi.get(id), enabled: Boolean(id), }); const like = useMutation({ mutationFn: () => (data?.liked ? tracksApi.unlike(id) : tracksApi.like(id)), onSuccess: () => { void qc.invalidateQueries({ queryKey: ["track", id] }); void qc.invalidateQueries({ queryKey: ["library"] }); }, }); if (isLoading) return

Загрузка...

; if (!data) return

Трек не найден.

; const { track } = data; return (
Трек

{track.title}

{track.album && ( <> {" · "} {track.album.title} )}

{formatDuration(track.durationMs)} {track.releaseDate && ` · ${formatDate(track.releaseDate)}`} {` · ${track.playCount} прослушиваний`}

Добавил в библиотеку:{" "} {track.uploadedBy ? ( {track.uploadedBy.displayName || track.uploadedBy.username} ) : ( "неизвестно" )}

Скачать

Текст песни

setAddOpen(false)} />
); }