'use client' import { useState, useTransition } from 'react' import { settingsText } from '@/lib/i18n/admin' import { caseText } from '@/lib/i18n/cases' import { savePolicy } from './actions' const POLICIES = ['APPEND_ONLY', 'GRACE_WINDOW', 'OPEN'] as const /** * Nicht optimistisch: die Richtlinie wirkt sofort für alle Akten. * Bestätigungsdialog, Wartezustand am Knopf, klare Rückmeldung. * Siehe docs/09-performance-und-ux.md. */ export function PolicyForm({ initial, }: { initial: { entryEditPolicy: string; entryEditGraceMinutes: number; entryEditMarkGrace: boolean } }) { const [policy, setPolicy] = useState(initial.entryEditPolicy) const [grace, setGrace] = useState(initial.entryEditGraceMinutes) const [mark, setMark] = useState(initial.entryEditMarkGrace) const [saved, setSaved] = useState(false) const [error, setError] = useState(null) const [pending, startTransition] = useTransition() function submit() { if (!confirm(settingsText.confirm)) return setError(null) startTransition(async () => { const result = await savePolicy({ entryEditPolicy: policy, entryEditGraceMinutes: grace, entryEditMarkGrace: mark, }) if (result.ok) setSaved(true) else setError(result.error) }) } return (
{settingsText.policy}
{POLICIES.map((value) => ( ))}
{saved ? ( {settingsText.saved} ) : null} {error ? {error} : null}
) }