'use client'; import { Swiper, SwiperSlide } from 'swiper/react'; import Loader from './Loader'; import MaterialsContext from '@/context/MaterialsContext'; import MoreBtn from './MoreBtn'; import { Autoplay, Navigation } from 'swiper'; import { Queries } from '@/api/queries'; import VideoItem from './VideoItem'; import { useContext } from 'react'; import { useInfiniteQuery } from '@tanstack/react-query'; import { v4 } from 'uuid'; interface IProps { isSlides?: boolean; isExtendable?: boolean; } const VideoList = ({ isSlides }: IProps) => { const { params } = useContext(MaterialsContext); const { search, ...noSearchParams } = params; const { data, isLoading, isFetchingNextPage, error, hasNextPage, fetchNextPage } = useInfiniteQuery({ queryKey: ['videos', 'infinite', params ? params : ''], queryFn: ({ pageParam = 1 }) => params.search !== '' ? Queries.getVideos('?' + String(new URLSearchParams({ ...params, page: pageParam }))) : Queries.getVideos( '?' + String(new URLSearchParams({ ...noSearchParams, page: pageParam })), ), getNextPageParam: (prevData) => prevData.meta.last_page > prevData.meta.current_page ? prevData.meta.current_page + 1 : null, keepPreviousData: true, }); if (isLoading) return ; if (error) return

{JSON.stringify(error)}

; return (
{isSlides ? (
{data ? ( data.pages.flatMap((data) => data.data).length > 0 ? ( data.pages .flatMap((data) => data.data) .map((item) => ( )) ) : (

No news for the given filters

) ) : null}
) : (
{data ? ( data.pages.flatMap((data) => data.data).length > 0 ? ( data.pages .flatMap((data) => data.data) .map((item) => ( )) ) : (

No news for the given filters

) ) : null}
fetchNextPage()} disabled={!hasNextPage} isFetching={isFetchingNextPage} />
)}
); }; export default VideoList;