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, Faction } from "@/payload-types"; import { hasIntelligenceQualification } from "@/utils/access-control/hasIntelligenceQualification"; import { ArrowRightIcon, CrosshairIcon } 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 (

Intelligence

Campaigns, missions, and faction intelligence for the theater of operations.

Campaigns Active and completed campaigns across all theaters. Missions Operation briefings, objectives, and schedules. Factions {factions.length} faction{factions.length !== 1 ? "s" : ""} tracked in the AO.
{campaigns.length > 0 && (

Active Campaigns

{campaigns.map((campaign) => ( ))}
)}
); }