diff --git a/app/src/main/java/eu/faircode/email/Core.java b/app/src/main/java/eu/faircode/email/Core.java index 07936df72c..3abfab876c 100644 --- a/app/src/main/java/eu/faircode/email/Core.java +++ b/app/src/main/java/eu/faircode/email/Core.java @@ -133,17 +133,13 @@ class Core { Log.i(folder.name + " start process"); DB db = DB.getInstance(context); - List ops = db.operation().getOperations(folder.id); - - List processed = new ArrayList<>(); - Log.i(folder.name + " pending operations=" + ops.size()); - for (int i = 0; i < ops.size() && state.isRunning() && state.isRecoverable(); i++) { - EntityOperation op = ops.get(i); - if (processed.contains(op.id)) { - Log.i(folder.name + " already processed op=" + op.id + "/" + op.name); - continue; - } + while (state.isRunning() && state.isRecoverable()) { + List ops = db.operation().getOperations(folder.id); + Log.i(folder.name + " pending operations=" + ops.size()); + if (ops.size() == 0) + break; + EntityOperation op = ops.get(0); try { Log.i(folder.name + " start op=" + op.id + "/" + op.name + @@ -170,7 +166,7 @@ class Core { // Process similar operations boolean skip = false; - for (int j = i + 1; j < ops.size(); j++) { + for (int j = 1; j < ops.size(); j++) { EntityOperation next = ops.get(j); switch (op.name) { @@ -198,10 +194,8 @@ class Core { // Same target if (jargs.getLong(0) == jnext.getLong(0)) { EntityMessage m = db.message().getMessage(next.message); - if (m != null && m.uid != null) { - processed.add(next.id); + if (m != null && m.uid != null) similar.put(next, m); - } } } break;