diff --git a/src/pages/manage/users/invites.tsx b/src/pages/manage/users/invites.tsx index 120cff6c6..5151d9932 100644 --- a/src/pages/manage/users/invites.tsx +++ b/src/pages/manage/users/invites.tsx @@ -5,16 +5,34 @@ import dayjs from 'dayjs'; import Head from 'next/head'; import { useState } from 'react'; import { MainLayout } from '~/components/layout/admin/main-admin.layout'; -import { modals as applicationModals } from '~/modals/modals'; import { api } from '~/utils/api'; const ManageUserInvitesPage = () => { - const { data, isFetched, fetchPreviousPage, fetchNextPage } = - api.registrationTokens.getAllInvites.useInfiniteQuery({ - limit: 10, - }); + const { data, fetchPreviousPage, fetchNextPage, hasNextPage, hasPreviousPage } = + api.registrationTokens.getAllInvites.useInfiniteQuery( + { + limit: 10, + }, + { + getNextPageParam: (lastPage) => lastPage.nextCursor, + } + ); - const [activePage, _] = useState(0); + const [activePage, setActivePage] = useState(0); + + const handleFetchNextPage = async () => { + await fetchNextPage(); + setActivePage((prev) => prev + 1); + }; + + const handleFetchPreviousPage = async () => { + await fetchPreviousPage(); + setActivePage((prev) => prev - 1); + }; + + const currentPage = data?.pages[activePage]; + + console.log(data?.pages); return ( @@ -44,7 +62,10 @@ const ManageUserInvitesPage = () => { - {data && ( + {activePage} + {currentPage ? 'current page is defined' : 'current page is not defined'} + + {data && currentPage && ( <> @@ -55,7 +76,7 @@ const ManageUserInvitesPage = () => { - {data.pages[activePage].registrationTokens.map((token, index) => ( + {currentPage.registrationTokens.map((token, index) => ( ))} - {data.pages[activePage].registrationTokens.length === 0 && ( + {currentPage.registrationTokens.length === 0 && (
{token.id} @@ -68,21 +89,25 @@ const ManageUserInvitesPage = () => { )} - { - modals.openContextModal({ - modal: 'deleteRegistrationTokenModal', - title: Delete registration token, - innerProps: { - tokenId: token.id, - } - }) - }} color="red" variant="light"> + { + modals.openContextModal({ + modal: 'deleteRegistrationTokenModal', + title: Delete registration token, + innerProps: { + tokenId: token.id, + }, + }); + }} + color="red" + variant="light" + >
@@ -94,10 +119,10 @@ const ManageUserInvitesPage = () => {
)} diff --git a/src/server/api/routers/registrationTokens.ts b/src/server/api/routers/registrationTokens.ts index 97b6bcc5e..e03dcc895 100644 --- a/src/server/api/routers/registrationTokens.ts +++ b/src/server/api/routers/registrationTokens.ts @@ -26,12 +26,15 @@ export const inviteRouter = createTRPCRouter({ nextCursor = nextItem!.id; } + const countRegistrationTokens = await ctx.prisma.registrationToken.count(); + return { registrationTokens: registrationTokens.map((token) => ({ id: token.id, expires: token.expires, })), nextCursor, + countPages: Math.ceil(countRegistrationTokens / limit) }; }), createRegistrationToken: publicProcedure