import config from "@payload-config"; import { getPayload } from "payload"; import { headers as nextHeaders } from "next/headers"; import { redirect } from "next/navigation"; import Link from "next/link"; import type { Campaign, Mission, Faction } from "@/payload-types"; import { hasIntelligenceQualification } from "@/utils/access-control/hasIntelligenceQualification"; import { CrosshairIcon, ArrowRightIcon } from "lucide-react"; import { Item, ItemContent, ItemDescription, ItemHeader, ItemTitle, } from "@/components/ui/item"; import { CampaignCard } from "@/components/frontend/intelligence/CampaignCard"; export const metadata = { title: "Intelligence — Polaris Task Force", }; export default async function IntelligenceOverviewPage() { const payload = await getPayload({ config }); const headers = await nextHeaders(); const { user } = await payload.auth({ headers, canSetHeaders: false }); if (!user || !(await hasIntelligenceQualification(payload, user))) { redirect("/"); } const [campaignsRes, factionsRes] = await Promise.all([ payload .find({ collection: "campaigns", where: { status: { equals: "inProgress" } }, limit: 10, sort: "-createdAt", }) .catch(() => ({ docs: [] })), payload.find({ collection: "factions", limit: 100, select: { name: true, type: true }, }), ]); const campaigns = campaignsRes.docs as Campaign[]; const factions = factionsRes.docs as Faction[]; return (
Campaigns, missions, and faction intelligence for the theater of operations.