'use client' import { useState, useTransition } from 'react' import { caseText } from '@/lib/i18n/cases' import { actionErrorsText, clearanceText, commonText } from '@/lib/i18n/common' import { documentText } from '@/lib/i18n/documents' import { finalizeDocumentAction, reclassifyDocumentAction, retractDocumentAction, } from '../actions' /** * Ausfertigen, Zurückziehen, Umklassifizieren. * * Wie beim Fall bewusst **nicht** optimistisch: alle drei sind folgenreich. * Das Ausfertigen fragt nach, das Zurückziehen verlangt eine Begründung - es * gibt kein Löschen, der Grabstein bleibt stehen. */ export function DocumentActions({ documentNumber, classification, canFinalize, canRetract, canReclassify, levels, }: { documentNumber: string classification: number canFinalize: boolean canRetract: boolean canReclassify: boolean levels: { level: number; name: string }[] }) { const [reason, setReason] = useState('') const [retracting, setRetracting] = useState(false) const [nextLevel, setNextLevel] = useState(classification) const [levelReason, setLevelReason] = useState('') const [error, setError] = useState(null) const [pending, startTransition] = useTransition() if (!canFinalize && !canRetract && !canReclassify) return null const lowering = nextLevel < classification function run(action: () => Promise<{ ok: boolean; error?: string }>) { setError(null) startTransition(async () => { const result = await action() if (!result.ok) setError(result.error ?? actionErrorsText.default!) else setRetracting(false) }) } return (
{canFinalize ? (
) : null} {canReclassify ? (

{documentText.reclassify}

{lowering ? (