From 3118a6eb483b42a7b6a064358ee4324b4707f250 Mon Sep 17 00:00:00 2001 From: M66B Date: Sat, 24 Dec 2022 09:28:55 +0100 Subject: [PATCH] Added fail-safe --- .../eu/faircode/email/WorkerDailyRules.java | 51 ++++++++++--------- 1 file changed, 27 insertions(+), 24 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/WorkerDailyRules.java b/app/src/main/java/eu/faircode/email/WorkerDailyRules.java index f7d4a2c287..527ad1d2c4 100644 --- a/app/src/main/java/eu/faircode/email/WorkerDailyRules.java +++ b/app/src/main/java/eu/faircode/email/WorkerDailyRules.java @@ -68,33 +68,36 @@ public class WorkerDailyRules extends Worker { int count = 0; List mids = db.message().getMessageIdsByFolder(folder.id); - for (long mid : mids) { - EntityMessage message = db.message().getMessage(mid); - if (message == null) - continue; - count++; + for (long mid : mids) + try { + EntityMessage message = db.message().getMessage(mid); + if (message == null) + continue; + count++; - boolean needsHeaders = EntityRule.needsHeaders(message, rules); - boolean needsBody = EntityRule.needsBody(message, rules); + boolean needsHeaders = EntityRule.needsHeaders(message, rules); + boolean needsBody = EntityRule.needsBody(message, rules); - if (needsHeaders && message.headers == null) { - EntityOperation.queue(context, message, EntityOperation.HEADERS); - continue; - } - - if (needsBody && !message.content) { - EntityOperation.queue(context, message, EntityOperation.BODY); - continue; - } - - for (EntityRule rule : rules) - if (rule.daily && - rule.matches(context, message, null, null)) { - rule.execute(context, message); - if (rule.stop) - break; + if (needsHeaders && message.headers == null) { + EntityOperation.queue(context, message, EntityOperation.HEADERS); + continue; } - } + + if (needsBody && !message.content) { + EntityOperation.queue(context, message, EntityOperation.BODY); + continue; + } + + for (EntityRule rule : rules) + if (rule.daily && + rule.matches(context, message, null, null)) { + rule.execute(context, message); + if (rule.stop) + break; + } + } catch (Throwable ex) { + Log.e(ex); + } EntityLog.log(context, EntityLog.Type.Rules, folder, "Executed " + count + " rules for " + account.name + "/" + folder.name);