keep conversation bold (unread) after responding to a call. fixes #3926

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/entities/Conversation.java | 17 ++
1 file changed, 14 insertions(+), 3 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/entities/Conversation.java 🔗

@@ -550,7 +550,15 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl
     }
 
     public boolean isRead() {
-        return (this.messages.size() == 0) || this.messages.get(this.messages.size() - 1).isRead();
+        synchronized (this.messages) {
+            for(final Message message : Lists.reverse(this.messages)) {
+                if (message.isRead() && message.getType() == Message.TYPE_RTP_SESSION) {
+                    continue;
+                }
+                return message.isRead();
+            }
+            return true;
+        }
     }
 
     public List<Message> markRead(String upToUuid) {
@@ -1010,8 +1018,11 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl
     public int unreadCount() {
         synchronized (this.messages) {
             int count = 0;
-            for (int i = this.messages.size() - 1; i >= 0; --i) {
-                if (this.messages.get(i).isRead()) {
+            for(final Message message : Lists.reverse(this.messages)) {
+                if (message.isRead()) {
+                    if (message.getType() == Message.TYPE_RTP_SESSION) {
+                        continue;
+                    }
                     return count;
                 }
                 ++count;