"use server"; import { revalidatePath } from "next/cache"; import { moduleGuard } from "@/server/action-guard"; import { ctxFromGuard } from "@/server/services/context"; import { setPreferences } from "@/server/services/notifications/preferences"; const guard = moduleGuard("notifications"); export type PreferencesState = { status: "idle" | "saved" | "error" }; /** Save the current user's e-mail opt-outs (checked boxes = e-mail on). */ export async function saveNotificationPreferences(_prev: PreferencesState, formData: FormData): Promise { const g = await guard("notification:read"); try { await setPreferences(ctxFromGuard(g), { emailOn: formData.getAll("emailOn").map(String) }); } catch (err) { console.error("[notifications] saving preferences failed:", (err as Error).message); return { status: "error" }; } revalidatePath("/account"); return { status: "saved" }; }