"use client"; import { getData } from "./api/api-utils"; import { endpoints } from "./api/config"; import { useEffect, useState, useCallback } from "react"; import { usePathname, useRouter } from "next/navigation"; import { CardList } from "./components/CardList/CardList"; import { useSearchParams } from "next/navigation"; export default function Home() { const router = useRouter(); const pathname = usePathname(); const [list, setList] = useState(); const [releases, setReleases] = useState(); const [page, setPage] = useState(0); const searchParams = useSearchParams(); const createQueryString = useCallback( (name, value) => { const params = new URLSearchParams(searchParams.toString()); params.set(name, value); return params.toString(); }, [searchParams] ); useEffect(() => { setList(searchParams.get("list") || "last"); }, []); async function getReleases() { const data = await getData(`${endpoints.index[list]}`); setReleases(data.content); } async function getPage() { const data = await getData(`${endpoints.index[list]}?page=${page}`); setReleases([...releases, ...data.content]); } useEffect(() => { router.push(pathname + "?" + createQueryString("list", list)); setReleases(null); setPage(0); if (list) { getReleases(); } }, [list]); useEffect(() => { if (list && releases) { getPage(); } }, [page]); return ( <>
{releases ? : }
); }