From 2274409b62ffbca65e25b5cf1e0037b7f5e1dc0e Mon Sep 17 00:00:00 2001 From: M66B Date: Sun, 4 Aug 2019 15:21:21 +0200 Subject: [PATCH] Keep volatile record of notifications --- app/src/main/java/eu/faircode/email/Core.java | 13 ++++++++----- .../java/eu/faircode/email/ServiceSynchronize.java | 3 ++- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/Core.java b/app/src/main/java/eu/faircode/email/Core.java index db00154777..9846fb57a4 100644 --- a/app/src/main/java/eu/faircode/email/Core.java +++ b/app/src/main/java/eu/faircode/email/Core.java @@ -1919,7 +1919,7 @@ class Core { } } - static void notifyMessages(Context context, List messages) { + static void notifyMessages(Context context, List messages, Map> groupNotifying) { if (messages == null) messages = new ArrayList<>(); Log.i("Notify messages=" + messages.size()); @@ -1934,7 +1934,6 @@ class Core { // Current int unseen = 0; - final Map> groupNotifying = new HashMap<>(); Map> groupMessages = new HashMap<>(); for (TupleMessageEx message : messages) { if (!(message.ui_seen || message.ui_ignored || message.ui_hide != 0)) @@ -1981,7 +1980,7 @@ class Core { List notifications = getNotificationUnseen(context, group, groupMessages.get(group)); final List add = new ArrayList<>(); - final List remove = groupNotifying.get(group); + final List remove = new ArrayList<>(groupNotifying.get(group)); for (Notification notification : notifications) { Long id = notification.extras.getLong("id", 0); @@ -2023,10 +2022,14 @@ class Core { if (remove.size() + add.size() > 0) { DB db = DB.getInstance(context); - for (long id : remove) + for (long id : remove) { + groupNotifying.get(group).remove(id); db.message().setMessageNotifying(Math.abs(id), 0); - for (long id : add) + } + for (long id : add) { + groupNotifying.get(group).add(id); db.message().setMessageNotifying(Math.abs(id), (int) Math.signum(id)); + } } } } diff --git a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java index b4cbd82082..08a57da28b 100644 --- a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java +++ b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java @@ -168,6 +168,7 @@ public class ServiceSynchronize extends ServiceBase { }); db.message().liveUnseenNotify().observe(cowner, new Observer>() { + private Map> groupNotifying = new HashMap<>(); private ExecutorService executor = Executors.newSingleThreadExecutor(Helper.backgroundThreadFactory); @@ -177,7 +178,7 @@ public class ServiceSynchronize extends ServiceBase { @Override public void run() { try { - Core.notifyMessages(ServiceSynchronize.this, messages); + Core.notifyMessages(ServiceSynchronize.this, messages, groupNotifying); } catch (SecurityException ex) { Log.w(ex); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(ServiceSynchronize.this);