diff --git a/app/src/main/java/eu/faircode/email/Core.java b/app/src/main/java/eu/faircode/email/Core.java index 34da4ab243..b6c4e23d44 100644 --- a/app/src/main/java/eu/faircode/email/Core.java +++ b/app/src/main/java/eu/faircode/email/Core.java @@ -485,11 +485,7 @@ class Core { db.operation().deleteOperation(op.id); // Cleanup messages - if (message != null && - (ex instanceof MessageRemovedException || - ex instanceof MessageRemovedIOException || - ex.getCause() instanceof MessageRemovedException || - ex.getCause() instanceof MessageRemovedIOException)) + if (message != null && MessageHelper.isRemoved(ex)) db.message().deleteMessage(message.id); db.setTransactionSuccessful(); diff --git a/app/src/main/java/eu/faircode/email/MessageHelper.java b/app/src/main/java/eu/faircode/email/MessageHelper.java index 11ece5d842..7c071dd362 100644 --- a/app/src/main/java/eu/faircode/email/MessageHelper.java +++ b/app/src/main/java/eu/faircode/email/MessageHelper.java @@ -2389,6 +2389,16 @@ public class MessageHelper { return email; } + static boolean isRemoved(Throwable ex) { + while (ex != null) { + if (ex instanceof MessageRemovedException || + ex instanceof MessageRemovedIOException) + return true; + ex = ex.getCause(); + } + return false; + } + static boolean equalEmail(Address a1, Address a2) { String email1 = ((InternetAddress) a1).getAddress(); String email2 = ((InternetAddress) a2).getAddress();