From 1aca12fdfdcbb334e279583de0d70d611d22af6a Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Sat, 27 Aug 2016 15:25:37 +0200 Subject: mark conversation as read when swiping a notification with quick reply away --- .../pixart/messenger/services/NotificationService.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'src/main/java/de/pixart/messenger/services/NotificationService.java') diff --git a/src/main/java/de/pixart/messenger/services/NotificationService.java b/src/main/java/de/pixart/messenger/services/NotificationService.java index 92876205c..ce151931a 100644 --- a/src/main/java/de/pixart/messenger/services/NotificationService.java +++ b/src/main/java/de/pixart/messenger/services/NotificationService.java @@ -176,6 +176,9 @@ public class NotificationService { public void clear() { synchronized (notifications) { + for(ArrayList messages : notifications.values()) { + markAsReadIfHasDirectReply(messages); + } notifications.clear(); updateNotification(false); } @@ -183,6 +186,7 @@ public class NotificationService { public void clear(final Conversation conversation) { synchronized (notifications) { + markAsReadIfHasDirectReply(conversation); notifications.remove(conversation.getUuid()); final NotificationManager nm = (NotificationManager) mXmppConnectionService.getSystemService(Context.NOTIFICATION_SERVICE); nm.cancel(conversation.getUuid(), NOTIFICATION_ID); @@ -190,6 +194,19 @@ public class NotificationService { } } + private void markAsReadIfHasDirectReply(final Conversation conversation) { + markAsReadIfHasDirectReply(notifications.get(conversation.getUuid())); + } + + private void markAsReadIfHasDirectReply(final ArrayList messages) { + if (messages != null && messages.size() > 0) { + Message last = messages.get(messages.size() - 1); + if (last.getStatus() != Message.STATUS_RECEIVED) { + mXmppConnectionService.markRead(last.getConversation(), false); + } + } + } + private void setNotificationColor(final Builder mBuilder) { mBuilder.setColor(mXmppConnectionService.getResources().getColor(R.color.primary)); } -- cgit v1.2.3