"use server"; import config from "@payload-config"; import { getPayload } from "payload"; import type { AttendanceResponse } from "@/lib/attendance"; import { setMissionAttendance as setAttendance } from "@/lib/attendance"; export interface ActionResult { success: boolean; error?: string; data?: T; } async function authenticate() { const payloadConfig = await config; const payload = await getPayload({ config: payloadConfig }); const { headers } = await import("next/headers"); const hdrs = await headers(); const { user } = await payload.auth({ headers: hdrs, canSetHeaders: false }); if (!user) { throw new Error("Unauthorized"); } return { payload, user }; } export async function setMissionAttendance(input: { missionId: number; response: AttendanceResponse; }): Promise { try { const { payload, user } = await authenticate(); const userId = user.id as number; await setAttendance(payload, { missionId: input.missionId, userId, response: input.response, }); return { success: true }; } catch (error) { const message = error instanceof Error ? error.message : "Unknown error"; return message === "Unauthorized" ? { success: false, error: "You must be logged in." } : { success: false, error: message }; } }