From 495a4334dff6b1eb2dd2bc2d75dfd8ef219f5950 Mon Sep 17 00:00:00 2001
From: Nicolas Werner <nicolas.werner@hotmail.de>
Date: Wed, 8 Sep 2021 12:47:44 +0200
Subject: [PATCH] Fix day separator when loading older messages

fixes #632
---
 src/timeline/EventStore.cpp    |  3 +++
 src/timeline/TimelineModel.cpp | 19 +++++++------------
 2 files changed, 10 insertions(+), 12 deletions(-)

diff --git a/src/timeline/EventStore.cpp b/src/timeline/EventStore.cpp
index 8860bc759..881fd5bb7 100644
--- a/src/timeline/EventStore.cpp
+++ b/src/timeline/EventStore.cpp
@@ -71,11 +71,14 @@ EventStore::EventStore(std::string room_id, QObject *)
                           fetchMore();
                   else {
                           if (this->last != std::numeric_limits<uint64_t>::max()) {
+                                  auto oldFirst = this->first;
                                   emit beginInsertRows(toExternalIdx(newFirst),
                                                        toExternalIdx(this->first - 1));
                                   this->first = newFirst;
                                   emit endInsertRows();
                                   emit fetchedMore();
+                                  emit dataChanged(toExternalIdx(oldFirst),
+                                                   toExternalIdx(oldFirst));
                           } else {
                                   auto range = cache::client()->getTimelineRange(room_id_);
 
diff --git a/src/timeline/TimelineModel.cpp b/src/timeline/TimelineModel.cpp
index 1e369b46d..e5e9d9bf7 100644
--- a/src/timeline/TimelineModel.cpp
+++ b/src/timeline/TimelineModel.cpp
@@ -354,18 +354,13 @@ TimelineModel::TimelineModel(TimelineViewManager *manager, QString room_id, QObj
                 Qt::QueuedConnection);
         connect(this, &TimelineModel::addPendingMessageToStore, &events, &EventStore::addPending);
 
-        connect(
-          &events,
-          &EventStore::dataChanged,
-          this,
-          [this](int from, int to) {
-                  relatedEventCacheBuster++;
-                  nhlog::ui()->debug(
-                    "data changed {} to {}", events.size() - to - 1, events.size() - from - 1);
-                  emit dataChanged(index(events.size() - to - 1, 0),
-                                   index(events.size() - from - 1, 0));
-          },
-          Qt::QueuedConnection);
+        connect(&events, &EventStore::dataChanged, this, [this](int from, int to) {
+                relatedEventCacheBuster++;
+                nhlog::ui()->debug(
+                  "data changed {} to {}", events.size() - to - 1, events.size() - from - 1);
+                emit dataChanged(index(events.size() - to - 1, 0),
+                                 index(events.size() - from - 1, 0));
+        });
 
         connect(&events, &EventStore::beginInsertRows, this, [this](int from, int to) {
                 int first = events.size() - to;
-- 
GitLab