From a72e41611d2e50f0ea633cd42deb7d4946ea85f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20P=C3=B6ttker?= Date: Fri, 25 Sep 2026 14:04:23 +0200 Subject: [PATCH] feat(mail): E-Mail ignorieren, wenn im Import-Wizard alles ignoriert wird MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Stehen im Wizard alle Dokumente auf „Ignorieren“ (durch die Duplikatprüfung oder vom Benutzer gewählt), gibt es nichts zu importieren. „Weiter“ markiert die E-Mail dann als ignoriert, informiert den Benutzer und schließt den Wizard. Co-Authored-By: Claude Opus 5.5 (1M context) --- .../src/components/MailImportWizard.tsx | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/paperless-frontend/src/components/MailImportWizard.tsx b/paperless-frontend/src/components/MailImportWizard.tsx index ca2685a..55d948b 100644 --- a/paperless-frontend/src/components/MailImportWizard.tsx +++ b/paperless-frontend/src/components/MailImportWizard.tsx @@ -5,6 +5,7 @@ import { } from 'antd'; import type { ColumnsType } from 'antd/es/table'; import { emailImportApi, type AttachmentImportData } from '../api/email-import'; +import { emailsApi } from '../api/emails'; import { paperlessApi, type PaperlessCorrespondent } from '../api/paperless'; import dayjs from 'dayjs'; import { @@ -328,8 +329,32 @@ export default function MailImportWizard({ visible, onClose, onSuccess, email, a setCurrentStep(currentStep - 1); }; + // Alle Dokumente stehen auf "Ignorieren" (Duplikat oder vom Benutzer + // gewählt): Es gibt nichts zu importieren, die E-Mail wird ignoriert. + const ignoreEmail = async () => { + setLoading(true); + try { + await emailsApi.ignore(email.Id); + message.info( + importData.every(i => i.isDuplicate) + ? 'Alle Dokumente dieser E-Mail sind bereits vorhanden – die E-Mail wird als ignoriert markiert.' + : 'Alle Dokumente stehen auf „Ignorieren“ – die E-Mail wird als ignoriert markiert.' + ); + (onSuccess ?? onClose)(); + } catch (e) { + const err = e as { response?: { data?: { message?: string } }; message?: string }; + message.error(`E-Mail konnte nicht als ignoriert markiert werden: ${err.response?.data?.message ?? err.message}`); + } finally { + setLoading(false); + } + }; + const nextStep = async () => { if (currentStep === 0) { + if (importData.length > 0 && importData.every(i => i.type === 'IGNORE')) { + await ignoreEmail(); + return; + } await loadBelegnummern(); } else if (currentStep === 1) { // Vor dem Abrufen der Belegnummern erneut prüfen, damit für ein