'use client'; import { useTranslations } from 'next-intl'; import { useState } from 'react'; import { type CustomModule, deleteCustomModule } from '@/lib/custom-modules-api'; import { customModuleErrorText } from './custom-module-form-modal'; interface DeleteCustomModuleDialogProps { mod: CustomModule; /** Gemeinsamer Eintrag (verschwindet fuer alle) oder persoenlicher (nur fuer den Besitzer). */ shared?: boolean; onClose: () => void; onDeleted: () => void; } /** * Rueckfrage vor dem Loeschen eines eigenen Moduls (quick-260929-9wc, * Vorbild `DeleteGroupDialog`). Bleibt bei einem Fehler offen und zeigt ihn — * ein stilles Scheitern wuerde ein Loeschen vortaeuschen. Der Text nennt, fuer * wen der Eintrag verschwindet (quick-260929-dzu: gemeinsam = alle, persoenlich * = nur der Besitzer). */ export function DeleteCustomModuleDialog({ mod, shared = false, onClose, onDeleted, }: DeleteCustomModuleDialogProps) { const t = useTranslations('customModules.form'); const tCommon = useTranslations('common'); const [deleting, setDeleting] = useState(false); const [error, setError] = useState(null); const handleDelete = async () => { setDeleting(true); setError(null); try { await deleteCustomModule(mod.id); onDeleted(); onClose(); } catch (err) { setError(customModuleErrorText(err, t, 'deleteError')); } finally { setDeleting(false); } }; return (

{t('deleteConfirm.title')}

{t(shared ? 'deleteConfirm.bodyShared' : 'deleteConfirm.bodyPersonal', { name: mod.name, })}

{error && (
{error}
)}
); }