From bac5992e429a18a63a59cb7f63a213d9a5f79ed0 Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Sun, 15 Jan 2017 11:51:17 +0100 Subject: finish of backlog only for one particular account --- .../messenger/services/MessageArchiveService.java | 2 +- .../messenger/services/NotificationService.java | 19 +++++++++++++++++-- 2 files changed, 18 insertions(+), 3 deletions(-) (limited to 'src/main/java/de/pixart/messenger/services') diff --git a/src/main/java/de/pixart/messenger/services/MessageArchiveService.java b/src/main/java/de/pixart/messenger/services/MessageArchiveService.java index 702e0d093..9e2c6febd 100644 --- a/src/main/java/de/pixart/messenger/services/MessageArchiveService.java +++ b/src/main/java/de/pixart/messenger/services/MessageArchiveService.java @@ -224,7 +224,7 @@ public class MessageArchiveService implements OnAdvancedStreamFeaturesLoaded { this.finalizeQuery(query, done); Log.d(Config.LOGTAG, query.getAccount().getJid().toBareJid() + ": finished mam after " + query.getTotalCount() + " messages. messages left=" + Boolean.toString(!done)); if (query.getWith() == null && query.getMessageCount() > 0) { - mXmppConnectionService.getNotificationService().finishBacklog(true); + mXmppConnectionService.getNotificationService().finishBacklog(true,query.getAccount()); } } else { final Query nextQuery; diff --git a/src/main/java/de/pixart/messenger/services/NotificationService.java b/src/main/java/de/pixart/messenger/services/NotificationService.java index 7987bf8c9..3cdc9a7ce 100644 --- a/src/main/java/de/pixart/messenger/services/NotificationService.java +++ b/src/main/java/de/pixart/messenger/services/NotificationService.java @@ -106,13 +106,28 @@ public class NotificationService { } } - public void finishBacklog(boolean notify) { + public void finishBacklog(boolean notify, Account account) { synchronized (notifications) { mXmppConnectionService.updateUnreadCountBadge(); - updateNotification(notify); + if (account == null || !notify) { + updateNotification(notify); + } else { + boolean hasPendingMessages = false; + for (ArrayList messages : notifications.values()) { + if (messages.size() > 0 && messages.get(0).getConversation().getAccount() == account) { + hasPendingMessages = true; + break; + } + } + updateNotification(hasPendingMessages); + } } } + public void finishBacklog(boolean notify) { + finishBacklog(notify, null); + } + private void pushToStack(final Message message) { final String conversationUuid = message.getConversationUuid(); if (notifications.containsKey(conversationUuid)) { -- cgit v1.2.3