summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/timeline2/TimelineModel.cpp21
-rw-r--r--src/timeline2/TimelineModel.h6
2 files changed, 22 insertions, 5 deletions
diff --git a/src/timeline2/TimelineModel.cpp b/src/timeline2/TimelineModel.cpp
index db9ce555..83d1e417 100644
--- a/src/timeline2/TimelineModel.cpp
+++ b/src/timeline2/TimelineModel.cpp
@@ -585,6 +585,27 @@ TimelineModel::fetchHistory()
 }
 
 void
+TimelineModel::setCurrentIndex(int index)
+{
+        auto oldIndex = idToIndex(currentId);
+        currentId = indexToId(index);
+        emit currentIndexChanged(index);
+
+        if (oldIndex < index) {
+                http::client()->read_event(room_id_.toStdString(),
+                                           currentId.toStdString(),
+                                           [this](mtx::http::RequestErr err) {
+                                                   if (err) {
+                                                           nhlog::net()->warn(
+                                                             "failed to read_event ({}, {})",
+                                                             room_id_.toStdString(),
+                                                             currentId.toStdString());
+                                                   }
+                                           });
+        }
+}
+
+void
 TimelineModel::addBackwardsEvents(const mtx::responses::Messages &msgs)
 {
         std::vector<QString> ids = internalAddEvents(msgs.chunk);
diff --git a/src/timeline2/TimelineModel.h b/src/timeline2/TimelineModel.h
index 9b861010..10f3c490 100644
--- a/src/timeline2/TimelineModel.h
+++ b/src/timeline2/TimelineModel.h
@@ -162,11 +162,7 @@ public:
 
 public slots:
         void fetchHistory();
-        void setCurrentIndex(int index)
-        {
-                currentId = indexToId(index);
-                emit currentIndexChanged(index);
-        }
+        void setCurrentIndex(int index);
         int currentIndex() const { return idToIndex(currentId); }
         void markEventsAsRead(const std::vector<QString> &event_ids);