From a4524cd9afd5446d2f1e8a5bcdb88217e864fde5 Mon Sep 17 00:00:00 2001
From: Nicolas Werner <nicolas.werner@hotmail.de>
Date: Fri, 7 Oct 2022 11:11:07 +0200
Subject: [PATCH] Fix date separator

---
 resources/qml/MessageView.qml  | 14 +++++++-------
 src/timeline/TimelineModel.cpp |  2 +-
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/resources/qml/MessageView.qml b/resources/qml/MessageView.qml
index 202c3e3d6..f94fc4a96 100644
--- a/resources/qml/MessageView.qml
+++ b/resources/qml/MessageView.qml
@@ -406,7 +406,7 @@ Item {
             required property bool isEditable
             required property bool isEdited
             required property bool isStateEvent
-            property bool previousMessageIsStateEvent: chat.model.dataByIndex(index+1, Room.IsStateEvent)
+            property bool previousMessageIsStateEvent:  (index + 1) >= chat.count ? true : chat.model.dataByIndex(index+1, Room.IsStateEvent)
             required property string replyTo
             required property string threadId
             required property string userId
@@ -420,9 +420,9 @@ Item {
             required property int status
             required property int index
             required property int relatedEventCacheBuster
-            required property string day
-            property string previousMessageUserId: chat.model.dataByIndex(index+1, Room.UserId)
-            property string previousMessageDay: chat.model.dataByIndex(index+1, Room.Day)
+            required property var day
+            property string previousMessageUserId: (index + 1) >= chat.count ? "" : chat.model.dataByIndex(index+1, Room.UserId)
+            property var previousMessageDay:  (index + 1) >= chat.count ? 0 : chat.model.dataByIndex(index+1, Room.Day)
             required property string userName
             property bool scrolledToThis: eventId === room.scrollTarget && (y + height > chat.y + chat.contentY && y < chat.y + chat.height + chat.contentY)
 
@@ -436,8 +436,8 @@ Item {
                 property int parentWidth: parent.width
                 property string userId: wrapper.userId
                 property string previousMessageUserId: wrapper.previousMessageUserId
-                property string day: wrapper.day
-                property string previousMessageDay: wrapper.previousMessageDay
+                property var day: wrapper.day
+                property var previousMessageDay: wrapper.previousMessageDay
                 property bool previousMessageIsStateEvent: wrapper.previousMessageIsStateEvent
                 property bool isStateEvent: wrapper.isStateEvent
                 property bool isSender: wrapper.isSender
@@ -445,7 +445,7 @@ Item {
                 property date timestamp: wrapper.timestamp
 
                 z: 4
-                active: previousMessageUserId !== undefined && previousMessageUserId !== userId || previousMessageDay !== day || previousMessageIsStateEvent !== isStateEvent
+                active: previousMessageUserId !== userId || previousMessageDay !== day || previousMessageIsStateEvent !== isStateEvent
                 //asynchronous: true
                 sourceComponent: sectionHeader
                 visible: status == Loader.Ready
diff --git a/src/timeline/TimelineModel.cpp b/src/timeline/TimelineModel.cpp
index 3ce854a4e..0eec5caeb 100644
--- a/src/timeline/TimelineModel.cpp
+++ b/src/timeline/TimelineModel.cpp
@@ -549,7 +549,7 @@ TimelineModel::data(const mtx::events::collections::TimelineEvents &event, int r
     case Day: {
         QDateTime prevDate = origin_server_ts(event);
         prevDate.setTime(QTime());
-        return {prevDate.toMSecsSinceEpoch()};
+        return QVariant(prevDate.toMSecsSinceEpoch());
     }
     case Timestamp:
         return QVariant(origin_server_ts(event));
-- 
GitLab