import config from "@payload-config"; import { headers as nextHeaders } from "next/headers"; import { getPayload } from "payload"; import { BookOpenIcon } from "lucide-react"; import type { WikiPage as WikiPageDocument } from "@/payload-types"; import { WikiIndex, type WikiIndexPage } from "@/components/frontend/wiki/WikiIndex"; import { hasIntelligenceQualification } from "@/utils/access-control/hasIntelligenceQualification"; export const metadata = { title: "Wiki: Polaris Task Force", }; function relationName(relation: WikiPageDocument["lastEditor"]): string { if (typeof relation === "object" && relation !== null) { return ( relation.payloadDisplayName || relation.displayName || relation.username || "Unknown editor" ); } return typeof relation === "number" ? `User #${relation}` : "Unknown editor"; } export default async function WikiPage() { const headers = await nextHeaders(); const payload = await getPayload({ config }); const { user } = await payload.auth({ headers, canSetHeaders: false, }); const [pagesResult, isModerator] = await Promise.all([ payload.find({ collection: "wiki-pages", sort: "-updatedAt", limit: 200, depth: 1, overrideAccess: true, }), hasIntelligenceQualification(payload, user), ]); const pages: WikiIndexPage[] = pagesResult.docs.map((page) => ({ id: page.id, title: page.title, slug: page.slug, category: page.category, tags: page.tags ?? [], updatedAt: page.updatedAt, lastEditorName: relationName(page.lastEditor), })); return (
A shared field guide for campaigns, characters, places, and the stories around them.