From 5243b92e102007441885413e919c8645a797f969 Mon Sep 17 00:00:00 2001 From: M66B Date: Sun, 19 May 2019 08:26:47 +0200 Subject: [PATCH] Updated widget/badge count on change only --- app/src/main/java/eu/faircode/email/Core.java | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/Core.java b/app/src/main/java/eu/faircode/email/Core.java index 07be8d8e12..5a587b6d15 100644 --- a/app/src/main/java/eu/faircode/email/Core.java +++ b/app/src/main/java/eu/faircode/email/Core.java @@ -1709,21 +1709,26 @@ class Core { static void notifyMessages(Context context, Map> groupNotifying, List messages) { Log.i("Notify messages=" + messages.size()); + NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); boolean badge = prefs.getBoolean("badge", true); - Widget.update(context, messages.size()); - try { - ShortcutBadger.applyCount(context, badge ? messages.size() : 0); - } catch (Throwable ex) { - Log.e(ex); + // Update widget/badge count + int lastUnseen = 0; + for (String group : groupNotifying.keySet()) + lastUnseen += groupNotifying.get(group).size(); + if (messages.size() != lastUnseen) { + Widget.update(context, messages.size()); + try { + ShortcutBadger.applyCount(context, badge ? messages.size() : 0); + } catch (Throwable ex) { + Log.e(ex); + } } - NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); - - Map> groupMessages = new HashMap<>(); - // Current + Map> groupMessages = new HashMap<>(); for (TupleMessageEx message : messages) { // Check if notification channel enabled if (Build.VERSION.SDK_INT > Build.VERSION_CODES.O &&