diff --git a/src/app/(frontend)/helpdesk/[id]/page.tsx b/src/app/(frontend)/helpdesk/[id]/page.tsx index ca104fd..58ab8e6 100644 --- a/src/app/(frontend)/helpdesk/[id]/page.tsx +++ b/src/app/(frontend)/helpdesk/[id]/page.tsx @@ -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 }} /> ); diff --git a/src/app/(frontend)/helpdesk/page.tsx b/src/app/(frontend)/helpdesk/page.tsx index 0fc1981..4e1bdbb 100644 --- a/src/app/(frontend)/helpdesk/page.tsx +++ b/src/app/(frontend)/helpdesk/page.tsx @@ -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 (
@@ -43,7 +51,7 @@ export default async function HelpdeskPage() {

Submit and track support requests.

- + ); }