import { useInfiniteQuery, useQuery } from '@tanstack/react-query' import { Link, useParams } from 'react-router-dom' import { getChannel, getFeed } from '../api/client' import Icon from '../components/Icon' import VideoCard from '../components/VideoCard' function ChannelVideos() { const { channelId } = useParams<{ channelId: string }>() const id = Number(channelId) const valid = Number.isInteger(id) && id > 0 const channelQuery = useQuery({ queryKey: ['channel', id], queryFn: () => getChannel(id), enabled: valid }) const feedQuery = useInfiniteQuery({ queryKey: ['feed', 'channel', id], queryFn: ({ pageParam }) => getFeed({ channelId: id, cursor: pageParam }), initialPageParam: undefined as string | undefined, getNextPageParam: (lastPage) => lastPage.next_cursor ?? undefined, enabled: valid }) const items = feedQuery.data?.pages.flatMap((page) => page.items) ?? [] return
Каналы

Видео канала

{channelQuery.data?.title ?? 'Канал'}

Последние ролики из твоих подписок.

{(channelQuery.isError || feedQuery.isError || !valid) &&

Не удалось открыть канал

К списку каналов
} {feedQuery.isLoading &&
{Array.from({ length: 6 }, (_, index) =>
)}
} {!feedQuery.isLoading && !feedQuery.isError && items.length > 0 &&
    {items.map((video) => )}
} {!feedQuery.isLoading && !feedQuery.isError && items.length === 0 &&

Пока нет видео

Обнови ленту, чтобы получить новые ролики канала.

} {feedQuery.hasNextPage && }
} export default ChannelVideos