/* eslint-disable react/react-in-jsx-scope */ import { useQuery } from '@apollo/client'; import { useEffect, useState } from 'react'; import { Link } from 'react-router-dom'; import { Button, Card, Flex, NoResults } from '@/components'; import { lastMintsPaginatedDocument, totalTokensDocument } from '@/graphclient'; import { FleekERC721 } from '@/integrations/ethereum/contracts'; const pageSize = 10; //Set this size to test pagination export const NFAList = () => { const [pageNumber, setPageNumber] = useState(1); const [totalPages, setTotalPages] = useState(0); const { data: totalTokens, loading: loadingTotalTokens, error: errorTotalTokens, } = useQuery(totalTokensDocument); const { data: dataMintedTokens, loading: loadingMintedTokens, error: errorMintedTokens, } = useQuery(lastMintsPaginatedDocument, { variables: { //first page is 0 pageSize, skip: pageNumber > 0 ? (pageNumber - 1) * pageSize : pageNumber, }, }); useEffect(() => { if (totalTokens && totalTokens.tokens.length > 0) { setTotalPages(Math.ceil(totalTokens.tokens.length / pageSize)); } }, [totalTokens]); if (loadingMintedTokens || loadingTotalTokens) return
Loading...
; //TODO handle loading if (errorMintedTokens || errorTotalTokens) return
Error
; //TODO handle error const handlePreviousPage = () => { if (pageNumber > 1) { setPageNumber((prevState) => prevState - 1); } }; const handleNextPage = () => { if (pageNumber + 1 <= totalPages) setPageNumber((prevState) => prevState + 1); }; return ( {/* TODO this will be remove when we have pagination component */} items per page: {pageSize} page: {pageNumber}/{totalPages}
{dataMintedTokens && dataMintedTokens.newMints.length > 0 ? ( dataMintedTokens.newMints.map((mint) => ( Open NFA on Opensea Create AP )) ) : ( )}
); };