From 3c63f4bfe384a0d575c9198d496903c8e640ab55 Mon Sep 17 00:00:00 2001 From: M66B Date: Wed, 20 Mar 2019 14:52:51 +0000 Subject: [PATCH] Batch notify new messages --- .../main/java/eu/faircode/email/DaoFolder.java | 5 +++++ .../eu/faircode/email/ServiceSynchronize.java | 15 ++++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/eu/faircode/email/DaoFolder.java b/app/src/main/java/eu/faircode/email/DaoFolder.java index 6d1b2dd1d8..0c3bdaa716 100644 --- a/app/src/main/java/eu/faircode/email/DaoFolder.java +++ b/app/src/main/java/eu/faircode/email/DaoFolder.java @@ -89,6 +89,11 @@ public interface DaoFolder { " AND folder.type = '" + EntityFolder.DRAFTS + "'") LiveData livePrimaryDrafts(); + @Query("SELECT COUNT(id) FROM folder" + + " WHERE sync_state = 'syncing'" + + " AND folder.type <> '" + EntityFolder.OUTBOX + "'") + LiveData liveSynchronizing(); + @Query("SELECT folder.*" + ", account.name AS accountName, account.color AS accountColor, account.state AS accountState" + ", COUNT(message.id) AS messages" + diff --git a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java index d3b6b20644..66c520c8d4 100644 --- a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java +++ b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java @@ -128,7 +128,20 @@ public class ServiceSynchronize extends LifecycleService { } }); - db.message().liveUnseenNotify().observe(this, new Observer>() { + final TwoStateOwner cowner = new TwoStateOwner(this); + + db.folder().liveSynchronizing().observe(this, new Observer() { + @Override + public void onChanged(Integer count) { + Log.i("Synchronizing folders=" + count); + if (count == 0) + cowner.start(); + else + cowner.stop(); + } + }); + + db.message().liveUnseenNotify().observe(cowner, new Observer>() { @Override public void onChanged(List messages) { Core.notifyMessages(ServiceSynchronize.this, messages);