feat(helpdesk): load vote summaries on ticket pages
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
parent
0fa636439a
commit
f869f4e4cc
2 changed files with 18 additions and 5 deletions
|
|
@ -7,6 +7,7 @@ import { TicketDetail } from "@/components/frontend/helpdesk/TicketDetail";
|
|||
import { hasPermission } from "@/utils/access-control/hasPermission";
|
||||
import { ArrowLeftIcon, LifeBuoyIcon } from "lucide-react";
|
||||
import Link from "next/link";
|
||||
import { getTicketVoteSummaries } from "@/lib/tickets/voteState";
|
||||
|
||||
export const metadata = {
|
||||
title: "Ticket — Polaris Task Force",
|
||||
|
|
@ -42,8 +43,11 @@ export default async function TicketPage({ params }: TicketPageProps) {
|
|||
notFound();
|
||||
}
|
||||
|
||||
const typedTicket = ticket as unknown as Ticket;
|
||||
const isStaff = await hasPermission(payload, user, "tickets:staff");
|
||||
const typedTicket = ticket as unknown as Ticket;
|
||||
const [isStaff, voteSummaries] = await Promise.all([
|
||||
hasPermission(payload, user, "tickets:staff"),
|
||||
getTicketVoteSummaries(payload, user.id, [typedTicket.id]),
|
||||
]);
|
||||
const assigneeOptions = isStaff
|
||||
? (
|
||||
await payload.find({
|
||||
|
|
@ -79,6 +83,7 @@ export default async function TicketPage({ params }: TicketPageProps) {
|
|||
currentUserId={user.id}
|
||||
isStaff={isStaff}
|
||||
assigneeOptions={assigneeOptions}
|
||||
voteSummary={voteSummaries[0] ?? { ticketId: typedTicket.id, voteCount: 0, voted: false }}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import type { Ticket } from "@/payload-types";
|
|||
import { TicketsView } from "@/components/frontend/helpdesk/TicketsView";
|
||||
import { hasPermission } from "@/utils/access-control/hasPermission";
|
||||
import { LifeBuoyIcon } from "lucide-react";
|
||||
import { getTicketVoteSummaries } from "@/lib/tickets/voteState";
|
||||
|
||||
export const metadata = {
|
||||
title: "Helpdesk — Polaris Task Force",
|
||||
|
|
@ -30,8 +31,15 @@ export default async function HelpdeskPage() {
|
|||
limit: 200,
|
||||
depth: 2,
|
||||
});
|
||||
const tickets = ticketsRes.docs as unknown as Ticket[];
|
||||
const isStaff = await hasPermission(payload, user, "tickets:staff");
|
||||
const tickets = ticketsRes.docs as unknown as Ticket[];
|
||||
const [isStaff, voteSummaries] = await Promise.all([
|
||||
hasPermission(payload, user, "tickets:staff"),
|
||||
getTicketVoteSummaries(
|
||||
payload,
|
||||
user.id,
|
||||
tickets.map((ticket) => ticket.id),
|
||||
),
|
||||
]);
|
||||
|
||||
return (
|
||||
<div className="flex flex-col gap-6 p-5">
|
||||
|
|
@ -43,7 +51,7 @@ export default async function HelpdeskPage() {
|
|||
<p className="text-sm text-muted-foreground">Submit and track support requests.</p>
|
||||
</div>
|
||||
|
||||
<TicketsView tickets={tickets} currentUserId={user.id} isStaff={isStaff} />
|
||||
<TicketsView tickets={tickets} voteSummaries={voteSummaries} isStaff={isStaff} />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue