import { useParams, useNavigate } from 'react-router'; import { useTranslation } from 'react-i18next'; import { ScrollArea, IconButton, Button } from '@olly/modern-sk'; import { useGetPlaylistQuery, useGetPlaylistTracksQuery, } from '../../api/endpoints/playlists'; import { TrackRow } from '../../components/track/TrackRow'; import { LoadingSkeleton } from '../../components/common/LoadingSkeleton'; import { ErrorState } from '../../components/common/ErrorState'; import { EmptyState } from '../../components/common/EmptyState'; import { useAppDispatch } from '../../hooks/useAppDispatch'; import { setQueue } from '../../store/slices/queue'; import { formatDuration } from '../../lib/format'; export function PlaylistDetailPage() { const { t } = useTranslation(); const { playlistId } = useParams<{ playlistId: string }>(); const navigate = useNavigate(); const dispatch = useAppDispatch(); const playlistQuery = useGetPlaylistQuery(playlistId ?? '', { skip: !playlistId, }); const tracksQuery = useGetPlaylistTracksQuery(playlistId ?? '', { skip: !playlistId, }); if (playlistQuery.isLoading) { return (
{t('playlist.type')}
{playlist.description}
)}{playlist && `${playlist.trackCount} · ${formatDuration(playlist.totalDurationMs)}`}