From 1b409ad7abde0ce8afabb49319ee52ccd4776de3 Mon Sep 17 00:00:00 2001 From: M66B Date: Tue, 21 May 2019 14:29:45 +0200 Subject: [PATCH] Fixed resetting notification count --- app/src/main/java/eu/faircode/email/Core.java | 18 ++++++++++++++---- .../eu/faircode/email/ServiceSynchronize.java | 9 +-------- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/Core.java b/app/src/main/java/eu/faircode/email/Core.java index 5a587b6d15..0cc98b5835 100644 --- a/app/src/main/java/eu/faircode/email/Core.java +++ b/app/src/main/java/eu/faircode/email/Core.java @@ -112,6 +112,8 @@ import me.leolin.shortcutbadger.ShortcutBadger; import static android.os.Process.THREAD_PRIORITY_BACKGROUND; class Core { + private static int lastUnseen = -1; + private static final int MAX_NOTIFICATION_COUNT = 10; // per group private static final int SYNC_BATCH_SIZE = 20; private static final int DOWNLOAD_BATCH_SIZE = 20; @@ -1706,6 +1708,16 @@ class Core { db.message().setMessageSize(message.id, size); } + static void notifyReset(Context context) { + lastUnseen = -1; + Widget.update(context, -1); + try { + ShortcutBadger.removeCount(context); + } catch (Throwable ex) { + Log.e(ex); + } + } + static void notifyMessages(Context context, Map> groupNotifying, List messages) { Log.i("Notify messages=" + messages.size()); @@ -1715,10 +1727,8 @@ class Core { boolean badge = prefs.getBoolean("badge", true); // Update widget/badge count - int lastUnseen = 0; - for (String group : groupNotifying.keySet()) - lastUnseen += groupNotifying.get(group).size(); - if (messages.size() != lastUnseen) { + if (lastUnseen < 0 || messages.size() != lastUnseen) { + lastUnseen = messages.size(); Widget.update(context, messages.size()); try { ShortcutBadger.applyCount(context, badge ? messages.size() : 0); diff --git a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java index 6ca36d031f..f08d5691fe 100644 --- a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java +++ b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java @@ -84,8 +84,6 @@ import javax.mail.event.MessageCountEvent; import javax.mail.event.StoreEvent; import javax.mail.event.StoreListener; -import me.leolin.shortcutbadger.ShortcutBadger; - import static android.os.Process.THREAD_PRIORITY_BACKGROUND; public class ServiceSynchronize extends LifecycleService { @@ -168,12 +166,7 @@ public class ServiceSynchronize extends LifecycleService { ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); cm.unregisterNetworkCallback(networkCallback); - Widget.update(this, -1); - try { - ShortcutBadger.applyCount(this, 0); - } catch (Throwable ex) { - Log.e(ex); - } + Core.notifyReset(this); WorkerCleanup.cancel(this);