Restore delay send alarms

This commit is contained in:
M66B
2020-04-02 21:13:27 +02:00
parent c93ac65b0c
commit 9fa208930f
4 changed files with 18 additions and 5 deletions

View File

@@ -465,8 +465,10 @@ public interface DaoMessage {
" AND operation.name = '" + EntityOperation.ADD + "')")
List<EntityMessage> getOrphans(long folder);
@Query("SELECT * FROM message WHERE NOT ui_snoozed IS NULL")
List<EntityMessage> getSnoozed();
@Query("SELECT * FROM message" +
" WHERE (:folder IS NULL OR folder = :folder)" +
" AND NOT ui_snoozed IS NULL")
List<EntityMessage> getSnoozed(Long folder);
@Query("SELECT id AS _id, subject AS suggestion FROM message" +
" WHERE subject LIKE :query" +

View File

@@ -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();

View File

@@ -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();

View File

@@ -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);