From b292b4ccd12c6bd06349429dd2cb1cf199790a65 Mon Sep 17 00:00:00 2001
From: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
Date: Thu, 23 Jan 2020 16:25:05 -0500
Subject: [PATCH] conversations: fix time-group sequence break

Change-Id: If745fbeacf582d8331ee64809eee0d7a42410045
---
 .../main/java/cx/ring/adapters/ConversationAdapter.java    | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/ring-android/app/src/main/java/cx/ring/adapters/ConversationAdapter.java b/ring-android/app/src/main/java/cx/ring/adapters/ConversationAdapter.java
index 3ec9e81f8..97e73bc07 100644
--- a/ring-android/app/src/main/java/cx/ring/adapters/ConversationAdapter.java
+++ b/ring-android/app/src/main/java/cx/ring/adapters/ConversationAdapter.java
@@ -939,7 +939,7 @@ public class ConversationAdapter extends RecyclerView.Adapter<ConversationViewHo
             }
             Interaction nextMsg = getNextMessageFromPosition(i);
             if (nextMsg != null) {
-                if (isSeqBreak(msg, nextMsg)) {
+                if (isSeqBreak(msg, nextMsg) || hasPermanentTimeString(nextMsg, i + 1)) {
                     return SequenceType.SINGLE;
                 } else {
                     return SequenceType.FIRST;
@@ -958,12 +958,13 @@ public class ConversationAdapter extends RecyclerView.Adapter<ConversationViewHo
         Interaction prevMsg = getPreviousMessageFromPosition(i);
         Interaction nextMsg = getNextMessageFromPosition(i);
         if (prevMsg != null && nextMsg != null) {
-            if (((isSeqBreak(msg, prevMsg) || isTimeShown) && !isSeqBreak(msg, nextMsg))) {
+            boolean nextMsgHasTime = hasPermanentTimeString(nextMsg, i + 1);
+            if (((isSeqBreak(msg, prevMsg) || isTimeShown) && !(isSeqBreak(msg, nextMsg) || nextMsgHasTime))) {
                 return SequenceType.FIRST;
             } else if (!isSeqBreak(msg, prevMsg) && !isTimeShown && isSeqBreak(msg, nextMsg)) {
                 return SequenceType.LAST;
             } else if (!isSeqBreak(msg, prevMsg) && !isTimeShown && !isSeqBreak(msg, nextMsg)) {
-                return SequenceType.MIDDLE;
+                return nextMsgHasTime ? SequenceType.LAST : SequenceType.MIDDLE;
             }
         }
         return SequenceType.SINGLE;
-- 
GitLab