import PrimaryButton from "@/components/button/PrimaryButton"; import TextInput from "@/components/input/TextInput"; import Pagination from "@/components/pagination/Pagination"; import { useGetGamesCount } from "@/hooks/GameHooks"; import { useEffect, useState } from "react"; import { useDebouncedCallback } from "use-debounce"; import { GamesLoader } from "./GamesLoader"; import GameModal from "./modals/GameModal"; export default function AdminGamesTab(){ const [ displayCreateGameModal, setDisplayCreateGameModal ] = useState(false); const [ page, setPage ] = useState(1); const [ totalPages, setTotalPages ] = useState(1); const [ searchTerm, setSearchTerm ] = useState(""); const [ sentSearchTerm, setSentSearchTerm ] = useState(); const pageSize = 10; const modalId = crypto.randomUUID().replace("-", ""); const gamesCountQuery = useGetGamesCount(sentSearchTerm); const updateSearchTerm = useDebouncedCallback((newSearchTerm: string) => { setSentSearchTerm(newSearchTerm.length ? newSearchTerm : undefined); }, 1000); useEffect(() => { updateSearchTerm(searchTerm ?? ""); }, [ searchTerm, updateSearchTerm ]); useEffect(() => { if(gamesCountQuery.status === "success"){ setTotalPages(Math.ceil(gamesCountQuery.data / pageSize)); } }, [ gamesCountQuery ]); return ( <>
 
{/* Add Game Button */}
setDisplayCreateGameModal(true)} > Create Game setDisplayCreateGameModal(false)} game={undefined} />
{/* Game Search Box */}
setSearchTerm(e.target.value)} placeholder="Search" />
{/* Game List */} {/* Pagination */}
); }