From 29fe930597ba38ba5606eadc0b0e5b18a1f064c4 Mon Sep 17 00:00:00 2001 From: M66B Date: Thu, 20 Nov 2025 22:53:59 +0100 Subject: [PATCH] Prevent deletion of Gmail drafts --- app/src/main/java/eu/faircode/email/Core.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/Core.java b/app/src/main/java/eu/faircode/email/Core.java index abf2825597..0b843aa191 100644 --- a/app/src/main/java/eu/faircode/email/Core.java +++ b/app/src/main/java/eu/faircode/email/Core.java @@ -1866,6 +1866,7 @@ class Core { try { if (perform_expunge && account.isGmail() && gmail_delete_all) { EntityFolder trash = db.folder().getFolderByType(account.id, EntityFolder.TRASH); + EntityFolder drafts = db.folder().getFolderByType(account.id, EntityFolder.DRAFTS); if (trash != null) { Map folders = new HashMap<>(); EntityFolder archive = db.folder().getFolderByType(account.id, EntityFolder.ARCHIVE); @@ -1873,9 +1874,12 @@ class Core { folders.put(archive.name, archive.id); List uids = new ArrayList<>(); - for (EntityMessage message : messages) - if (message.uid != null) + for (EntityMessage message : new ArrayList(messages)) + if (message.uid != null && + (drafts == null || !Objects.equals(message.folder, drafts.id))) { uids.add(message.uid); + messages.remove(message); + } IMAPFolder itrash = (IMAPFolder) istore.getFolder(trash.name); Message[] imessages = ifolder.getMessagesByUID(Helper.toLongArray(uids)); @@ -1920,7 +1924,8 @@ class Core { for (long fid : folders.values()) EntityOperation.sync(context, fid, false); - return; + if (messages.isEmpty()) + return; } }