From d4b0b34f3a03ed1f8be54031c86f2a9e72632f2f Mon Sep 17 00:00:00 2001 From: M66B Date: Fri, 10 May 2019 15:44:36 +0200 Subject: [PATCH] Filter Bugsnag reports --- .../java/eu/faircode/email/ApplicationEx.java | 33 +++++++++++++++---- 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/ApplicationEx.java b/app/src/main/java/eu/faircode/email/ApplicationEx.java index 8724c76287..cc00ff3202 100644 --- a/app/src/main/java/eu/faircode/email/ApplicationEx.java +++ b/app/src/main/java/eu/faircode/email/ApplicationEx.java @@ -61,6 +61,8 @@ import java.util.Date; import java.util.List; import java.util.Locale; +import javax.mail.MessagingException; + public class ApplicationEx extends Application { private Thread.UncaughtExceptionHandler prev = null; @@ -152,13 +154,17 @@ public class ApplicationEx extends Application { config.setDetectAnrs(false); List ignore = new ArrayList<>(); + + ignore.add("com.sun.mail.util.MailConnectException"); + ignore.add("javax.mail.AuthenticationFailedException"); + + ignore.add("javax.mail.StoreClosedException"); + ignore.add("javax.mail.FolderClosedException"); + ignore.add("javax.mail.ReadOnlyFolderException"); + ignore.add("javax.mail.MessageRemovedException"); - if (!BuildConfig.BETA_RELEASE) { - ignore.add("javax.mail.FolderClosedException"); - ignore.add("javax.mail.StoreClosedException"); - ignore.add("com.sun.mail.util.MailConnectException"); - ignore.add("javax.mail.internet.AddressException"); - } + ignore.add("javax.mail.internet.AddressException"); + config.setIgnoreClasses(ignore.toArray(new String[0])); final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); @@ -166,6 +172,21 @@ public class ApplicationEx extends Application { config.beforeSend(new BeforeSend() { @Override public boolean run(@NonNull Report report) { + Error error = report.getError(); + if (error != null) { + Throwable ex = error.getException(); + + if (ex instanceof IllegalStateException && + ("Not connected".equals(ex.getMessage()) || + "This operation is not allowed on a closed folder".equals(ex.getMessage()))) + return false; + + if (ex instanceof MessagingException && + ("connection failure".equals(ex.getMessage()) || + "failed to create new store connection".equals(ex.getMessage()))) + return false; + } + return prefs.getBoolean("crash_reports", false); // opt-in } });