Prüfung / Lint, Typen, Tests (push) Canceled after 0s
Prüfung / Images bauen (pdf) (push) Canceled after 0s
Prüfung / Images bauen (web) (push) Canceled after 0s
Prüfung / Images bauen (worker) (push) Canceled after 0s
Images / bauen (pdf, docker/pdf.Dockerfile) (push) Canceled after 0s
Images / bauen (web, docker/web.Dockerfile) (push) Canceled after 0s
Images / bauen (worker, docker/worker.Dockerfile) (push) Canceled after 0s
375 Vorkommen in 210 Dateien. Betrifft Kommentare, Oberflaechentexte und die README; an keiner Stelle Bedeutung, nur Zeichensetzung.
29 lines
908 B
TypeScript
29 lines
908 B
TypeScript
'use server'
|
|
|
|
import { revalidatePath } from 'next/cache'
|
|
import { z } from 'zod'
|
|
import { db } from '@/lib/db'
|
|
import { requireUser } from '@/lib/auth/current'
|
|
import { de } from '@/lib/i18n/de'
|
|
|
|
export type ActionResult = { ok: true } | { ok: false; error: string }
|
|
|
|
const schema = z.object({ notifyMode: z.enum(['ALL', 'OWN_CASES', 'MENTIONS', 'OFF']) })
|
|
|
|
/** Jeder stellt nur für sich selbst ein - die Kennung kommt aus der Sitzung. */
|
|
export async function saveNotifyModeAction(
|
|
_prev: ActionResult | null,
|
|
formData: FormData,
|
|
): Promise<ActionResult> {
|
|
const user = await requireUser()
|
|
const parsed = schema.safeParse(Object.fromEntries(formData))
|
|
if (!parsed.success) return { ok: false, error: de.actionErrors.default! }
|
|
|
|
await db.user.update({
|
|
where: { id: user.id },
|
|
data: { notifyMode: parsed.data.notifyMode },
|
|
})
|
|
revalidatePath('/einstellungen')
|
|
return { ok: true }
|
|
}
|