import config from "@payload-config"; import { headers as nextHeaders } from "next/headers"; import { redirect } from "next/navigation"; import { getPayload } from "payload"; 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", }; function HelpdeskDisabled() { return (

Helpdesk

The Helpdesk is currently disabled by a unit admin.

); } export default async function HelpdeskPage() { const headers = await nextHeaders(); const payload = await getPayload({ config }); const { user } = await payload.auth({ headers, canSetHeaders: false, }); if (!user) { const pathname = headers.get("x-invoke-path") || "/helpdesk"; redirect(`/login?returnTo=${encodeURIComponent(pathname)}`); } const { helpdeskEnabled } = await payload.findGlobal({ slug: "game-rules" }); if (!helpdeskEnabled) { return ; } const ticketsRes = await payload.find({ collection: "tickets", sort: "-updatedAt", limit: 200, depth: 2, }); 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 (

Helpdesk

Submit and track support requests.

); }