diff --git a/app/src/main/java/eu/faircode/email/DaoMessage.java b/app/src/main/java/eu/faircode/email/DaoMessage.java index 8980adb068..2793629b47 100644 --- a/app/src/main/java/eu/faircode/email/DaoMessage.java +++ b/app/src/main/java/eu/faircode/email/DaoMessage.java @@ -465,8 +465,10 @@ public interface DaoMessage { " AND operation.name = '" + EntityOperation.ADD + "')") List getOrphans(long folder); - @Query("SELECT * FROM message WHERE NOT ui_snoozed IS NULL") - List getSnoozed(); + @Query("SELECT * FROM message" + + " WHERE (:folder IS NULL OR folder = :folder)" + + " AND NOT ui_snoozed IS NULL") + List getSnoozed(Long folder); @Query("SELECT id AS _id, subject AS suggestion FROM message" + " WHERE subject LIKE :query" + diff --git a/app/src/main/java/eu/faircode/email/ServiceSend.java b/app/src/main/java/eu/faircode/email/ServiceSend.java index fdb550cdd3..f867418c90 100644 --- a/app/src/main/java/eu/faircode/email/ServiceSend.java +++ b/app/src/main/java/eu/faircode/email/ServiceSend.java @@ -284,7 +284,7 @@ public class ServiceSend extends ServiceBase { switch (op.name) { case EntityOperation.SYNC: - db.folder().setFolderError(outbox.id, null); + onSync(outbox); break; case EntityOperation.SEND: @@ -344,6 +344,16 @@ public class ServiceSend extends ServiceBase { } } + private void onSync(EntityFolder outbox) { + DB db = DB.getInstance(this); + + db.folder().setFolderError(outbox.id, null); + + // Restore snooze timers + for (EntityMessage message : db.message().getSnoozed(outbox.id)) + EntityMessage.snooze(this, message.id, message.ui_snoozed); + } + private void onSend(EntityMessage message) throws MessagingException, IOException { DB db = DB.getInstance(this); @@ -545,6 +555,7 @@ public class ServiceSend extends ServiceBase { public void run() { try { DB db = DB.getInstance(context); + EntityFolder outbox = db.folder().getOutbox(); if (outbox != null) { int operations = db.operation().getOperations(outbox.id).size(); diff --git a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java index c9a3298ea5..60b986aa45 100644 --- a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java +++ b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java @@ -1770,7 +1770,7 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences db.message().clearNotifyingMessages(); // Restore snooze timers - for (EntityMessage message : db.message().getSnoozed()) + for (EntityMessage message : db.message().getSnoozed(null)) EntityMessage.snooze(context, message.id, message.ui_snoozed); db.setTransactionSuccessful(); diff --git a/app/src/main/java/eu/faircode/email/WorkerCleanup.java b/app/src/main/java/eu/faircode/email/WorkerCleanup.java index 8ded9492da..7cd087cf73 100644 --- a/app/src/main/java/eu/faircode/email/WorkerCleanup.java +++ b/app/src/main/java/eu/faircode/email/WorkerCleanup.java @@ -107,7 +107,7 @@ public class WorkerCleanup extends Worker { Log.i("Cleared message headers=" + headers); // Restore alarms - for (EntityMessage message : db.message().getSnoozed()) + for (EntityMessage message : db.message().getSnoozed(null)) EntityMessage.snooze(context, message.id, message.ui_snoozed); ServiceSynchronize.reschedule(context);