From 06cdd66ae2a5a11073699cc0647764bd7e8718e5 Mon Sep 17 00:00:00 2001 From: M66B Date: Sun, 26 Apr 2020 15:52:13 +0200 Subject: [PATCH] Permanently delete similar messages --- .../eu/faircode/email/EntityOperation.java | 26 +++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/EntityOperation.java b/app/src/main/java/eu/faircode/email/EntityOperation.java index 18b620f174..23a5de40ff 100644 --- a/app/src/main/java/eu/faircode/email/EntityOperation.java +++ b/app/src/main/java/eu/faircode/email/EntityOperation.java @@ -299,10 +299,32 @@ public class EntityOperation { return; - } else if (DELETE.equals(name)) + } else if (DELETE.equals(name)) { db.message().setMessageUiHide(message.id, true); - else if (ATTACHMENT.equals(name)) + // Delete Gmail corresponding archive message + EntityFolder folder = db.folder().getFolder(message.folder); + if (folder != null && !EntityFolder.ARCHIVE.equals(folder.type)) { + boolean user = false; + boolean archive = false; + List similars = db.message().getMessagesBySimilarity(message.account, message.id, message.msgid); + for (EntityMessage similar : similars) + if (!similar.id.equals(message.id)) { + EntityFolder f = db.folder().getFolder(similar.folder); + if (f == null || EntityFolder.USER.equals(f.type)) + user = true; + if (f != null && EntityFolder.ARCHIVE.equals(f.type)) + archive = true; + } + if (archive && !user) { + for (EntityMessage similar : similars) + if (!similar.id.equals(message.id)) { + db.message().setMessageUiHide(similar.id, true); + queue(context, similar.account, similar.folder, similar.id, name, jargs); + } + } + } + } else if (ATTACHMENT.equals(name)) db.attachment().setProgress(jargs.getLong(0), 0); queue(context, message.account, message.folder, message.id, name, jargs);