import { connection } from "next/server"; import * as z from "zod"; import { AdminAuthorizationError, requireAdmin } from "@/lib/auth/server"; import { updateAdminPresence } from "@/lib/presence"; const inputSchema = z.strictObject({ tabId: z.string().uuid(), guideId: z.string().uuid().nullable(), section: z.string().trim().min(1).max(100).nullable(), active: z.boolean().default(true), }); export async function POST(request: Request) { await connection(); try { const admin = await requireAdmin(); const parsed = inputSchema.safeParse(await request.json().catch(() => null)); if (!parsed.success) return Response.json({ error: "invalid-presence" }, { status: 400 }); return Response.json(await updateAdminPresence({ ...parsed.data, memberId: `${admin.session.id}:${parsed.data.tabId}`, user: admin.user, }), { headers: { "Cache-Control": "no-store" } }); } catch (cause) { if (cause instanceof AdminAuthorizationError) { return Response.json({ error: "unauthorized" }, { status: 401 }); } return Response.json({ error: "presence-unavailable" }, { status: 503, headers: { "Cache-Control": "no-store" }, }); } }