"use client" import { keepPreviousData } from "@tanstack/react-query" import { useState } from "react" import { trpc } from "@/lib/trpc/client" import { ChevronRightIcon } from "@/components/Icons" import LoadingSpinner from "@/components/LoadingSpinner" import DesktopTable from "./Desktop" import MobileTable from "./Mobile" import styles from "../earnAndBurn.module.css" import { Transactions } from "@/types/components/myPages/myPage/earnAndBurn" function PaginationButton({ children, isActive, handleClick, disabled, }: React.PropsWithChildren<{ disabled: boolean isActive?: boolean handleClick: () => void }>) { return ( ) } function Pagination({ pageCount, isFetching, handlePageChange, currentPage, }: { pageCount: number isFetching: boolean handlePageChange: (page: number) => void currentPage: number }) { const isOnFirstPage = currentPage === 1 const isOnLastPage = currentPage === pageCount return (
{ handlePageChange(currentPage - 1) }} > {[...Array(pageCount)].map((_, idx) => ( { handlePageChange(idx + 1) }} > {idx + 1} ))} { handlePageChange(currentPage + 1) }} >
) } export default function TransactionTable({ initialJourneyTransactions, }: { initialJourneyTransactions: { data: { transactions: Transactions } meta: { totalPages: number } } }) { const limit = 5 const [page, setPage] = useState(1) const { data, isFetching, isLoading } = trpc.user.transaction.friendTransactions.useQuery( { limit, page, }, { // TODO: fix the initial data issues on page load // initialData: initialJourneyTransactions, placeholderData: keepPreviousData, } ) return isLoading ? ( ) : ( <> {data && data.meta.totalPages > 1 ? ( ) : null} ) }