import { useState } from "react"; import { usePaginatedQuery } from "blitz"; import getPayments from "../queries/get-payments"; const itemsPerPage = 5; export default function usePaymentsHistory() { const [skip, setSkip] = useState(0); const [{ payments, hasMore, nextPage, count }] = usePaginatedQuery(getPayments, { skip, take: itemsPerPage }); const totalPages = Math.ceil(count / itemsPerPage); const pagesNumber = Array(totalPages) .fill(-1) .map((_, i) => i + 1); const currentPage = Math.floor((skip / count) * totalPages) + 1; const lastPage = pagesNumber[pagesNumber.length - 1]; const hasPreviousPage = skip > 0; const hasNextPage = hasMore && !!nextPage; const goToPreviousPage = () => hasPreviousPage && setSkip(skip - itemsPerPage); const goToNextPage = () => hasNextPage && setSkip(nextPage.skip); const setPage = (pageNumber: number) => setSkip((pageNumber - 1) * itemsPerPage); return { payments, count, skip, pagesNumber, currentPage, lastPage, hasPreviousPage, hasNextPage, goToPreviousPage, goToNextPage, setPage, }; }