From a670ba014cf7bfd9860971665c301cb7bbb327fc Mon Sep 17 00:00:00 2001 From: Marcel Date: Thu, 28 May 2026 10:36:38 +0200 Subject: [PATCH] feat(persons): add confirm dialog to provisional confirm action MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Confirming a provisional person was a one-click write — easy to fat-finger on a touchscreen and irreversible (the person disappears from the review list, with no obvious undo path). Mirror the destructive-delete pattern with a non-destructive confirm dialog (destructive: false) so the action requires a second deliberate click. New i18n keys (persons_review_confirm_confirm_title/text/button) added to all three locales (de, en, es). Co-Authored-By: Claude Opus 4.7 --- frontend/messages/de.json | 3 +++ frontend/messages/en.json | 3 +++ frontend/messages/es.json | 3 +++ frontend/src/lib/person/PersonReviewRow.svelte | 14 +++++++++++++- 4 files changed, 22 insertions(+), 1 deletion(-) diff --git a/frontend/messages/de.json b/frontend/messages/de.json index cd58592e..d791b094 100644 --- a/frontend/messages/de.json +++ b/frontend/messages/de.json @@ -155,6 +155,9 @@ "persons_review_delete_confirm_title": "Person löschen", "persons_review_delete_confirm_text": "Diese Person wird endgültig gelöscht. Dokumentverweise bleiben erhalten, verlieren aber diese Person.", "persons_review_delete_confirm_button": "Person löschen", + "persons_review_confirm_confirm_title": "Person bestätigen", + "persons_review_confirm_confirm_text": "Diese Person wird als bestätigt markiert und erscheint nicht mehr in der Prüfliste.", + "persons_review_confirm_confirm_button": "Bestätigen", "persons_review_merge_label": "Mit welcher Person zusammenführen?", "persons_field_first_name": "Vorname", "persons_field_last_name": "Nachname", diff --git a/frontend/messages/en.json b/frontend/messages/en.json index b0d66899..84b7cd3b 100644 --- a/frontend/messages/en.json +++ b/frontend/messages/en.json @@ -155,6 +155,9 @@ "persons_review_delete_confirm_title": "Delete person", "persons_review_delete_confirm_text": "This person will be permanently deleted. Document references are kept but lose this person.", "persons_review_delete_confirm_button": "Delete person", + "persons_review_confirm_confirm_title": "Confirm person", + "persons_review_confirm_confirm_text": "This person will be marked as confirmed and will no longer appear in the review list.", + "persons_review_confirm_confirm_button": "Confirm", "persons_review_merge_label": "Merge into which person?", "persons_field_first_name": "First name", "persons_field_last_name": "Last name", diff --git a/frontend/messages/es.json b/frontend/messages/es.json index dc1a4e0a..00a74688 100644 --- a/frontend/messages/es.json +++ b/frontend/messages/es.json @@ -155,6 +155,9 @@ "persons_review_delete_confirm_title": "Eliminar persona", "persons_review_delete_confirm_text": "Esta persona se eliminará de forma permanente. Las referencias de documentos se conservan pero pierden a esta persona.", "persons_review_delete_confirm_button": "Eliminar persona", + "persons_review_confirm_confirm_title": "Confirmar persona", + "persons_review_confirm_confirm_text": "Esta persona se marcará como confirmada y dejará de aparecer en la lista de revisión.", + "persons_review_confirm_confirm_button": "Confirmar", "persons_review_merge_label": "¿Fusionar con qué persona?", "persons_field_first_name": "Nombre", "persons_field_last_name": "Apellido", diff --git a/frontend/src/lib/person/PersonReviewRow.svelte b/frontend/src/lib/person/PersonReviewRow.svelte index 044ff966..cc748138 100644 --- a/frontend/src/lib/person/PersonReviewRow.svelte +++ b/frontend/src/lib/person/PersonReviewRow.svelte @@ -62,7 +62,19 @@ const deleteBtn = > {m.persons_review_action_rename()} -
+ { + const ok = await confirm({ + title: m.persons_review_confirm_confirm_title(), + body: m.persons_review_confirm_confirm_text(), + confirmLabel: m.persons_review_confirm_confirm_button(), + destructive: false + }); + if (!ok) cancel(); + }} + >