in src/features/reporting-page/reporting-page.tsx [38:89]
async function ReportingContent(props: ChatReportingProps) {
let pageNumber = props.page < 0 ? 0 : props.page;
let nextPage = pageNumber + 1;
let previousPage = pageNumber - 1;
const chatHistoryResponse = await FindAllChatThreadsForAdmin(
SEARCH_PAGE_SIZE,
props.page * SEARCH_PAGE_SIZE
);
if (chatHistoryResponse.status !== "OK") {
return <DisplayError errors={chatHistoryResponse.errors} />;
}
const chatThreads = chatHistoryResponse.response;
const hasMoreResults = chatThreads.length === SEARCH_PAGE_SIZE;
return (
<div className="container max-w-4xl py-3">
<Table>
<TableHeader>
<TableRow>
<TableHead>Conversation</TableHead>
<TableHead className="w-[200px]">User</TableHead>
<TableHead className="w-[100px]">Date</TableHead>
</TableRow>
</TableHeader>
<TableBody>
{chatThreads &&
chatThreads.map((chatThread) => (
<ChatThreadRow key={chatThread.id} {...chatThread} />
))}
</TableBody>
</Table>
<div className="flex gap-2 p-2 justify-end">
{previousPage >= 0 && (
<Button asChild size={"icon"} variant={"outline"}>
<Link href={"/reporting?pageNumber=" + previousPage}>
<ChevronLeft />
</Link>
</Button>
)}
{hasMoreResults && (
<Button asChild size={"icon"} variant={"outline"}>
<Link href={"/reporting?pageNumber=" + nextPage}>
<ChevronRight />
</Link>
</Button>
)}
</div>
</div>
);
}