import type { Metadata } from "next"; import config from "@payload-config"; import { getPayload } from "payload"; import { headers as nextHeaders } from "next/headers"; import { redirect } from "next/navigation"; import { Crosshair } from "lucide-react"; import type { AimTrainerStats } from "@/app/(frontend)/qualification/actions"; import { AimTrainerArena } from "@/components/frontend/qualification/AimTrainerArena"; export const metadata: Metadata = { title: "Qualification Course: Polaris Task Force", description: "Complete a timed qualification course to sharpen your marksmanship and earn XP.", }; export default async function QualificationPage() { const headers = await nextHeaders(); const payloadConfig = await config; const payload = await getPayload({ config: payloadConfig }); const { user } = await payload.auth({ headers, canSetHeaders: false }); if (!user) { redirect(`/login?returnTo=${encodeURIComponent("/qualification")}`); } const profileRes = await payload.find({ collection: "profiles", where: { user: { equals: user.id as number } }, limit: 1, depth: 0, overrideAccess: true, select: { progression: { minigames: true, }, }, }); const aimTrainer = profileRes.docs[0]?.progression?.minigames?.aimTrainer ?? {}; const stats: AimTrainerStats = { gamesPlayed: aimTrainer.gamesPlayed ?? 0, bestScore: aimTrainer.bestScore ?? 0, recruitBestScore: aimTrainer.recruitBestScore ?? 0, veteranBestScore: aimTrainer.veteranBestScore ?? 0, eliteBestScore: aimTrainer.eliteBestScore ?? 0, recruitBestAccuracy: aimTrainer.recruitBestAccuracy ?? 0, veteranBestAccuracy: aimTrainer.veteranBestAccuracy ?? 0, eliteBestAccuracy: aimTrainer.eliteBestAccuracy ?? 0, aimTrainerXp: aimTrainer.xpEarned ?? 0, xpEarned: 0, score: 0, accuracy: 0, }; return (
Acquire targets, place your shots, and qualify under pressure.