From 5512b1a483c1e07703c619f85b9fbe4e664a7f65 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Blin?=
 <sebastien.blin@savoirfairelinux.com>
Date: Wed, 3 Nov 2021 10:47:53 -0400
Subject: [PATCH] conversationmodel: continue to load on merge messages

This avoid to only load merge messages and fix the last interaction
detected

Change-Id: Ib8c3607924792ec25ad22c006fb369e6555aa877
---
 src/conversationmodel.cpp | 24 +++++++++++++++---------
 1 file changed, 15 insertions(+), 9 deletions(-)

diff --git a/src/conversationmodel.cpp b/src/conversationmodel.cpp
index f02fd365..c5b17cd0 100644
--- a/src/conversationmodel.cpp
+++ b/src/conversationmodel.cpp
@@ -2199,11 +2199,11 @@ ConversationModelPimpl::slotConversationLoaded(uint32_t requestId,
     if (accountId != linked.owner.id) {
         return;
     }
+
     try {
         auto& conversation = getConversationForUid(conversationId).get();
         auto size = messages.size();
         for (int i = size - 1; i >= 0; --i) {
-            // for (int i = 0; i < size; ++i) {
             auto message = messages[i];
             if (message["type"].isEmpty() || message["type"] == "application/update-profile") {
                 continue;
@@ -2258,6 +2258,15 @@ ConversationModelPimpl::slotConversationLoaded(uint32_t requestId,
                 break;
             }
         }
+        if (conversation.lastMessageUid.isEmpty() && !conversation.allMessagesLoaded) {
+            // In this case, we only have loaded merge commits. Load more messages
+            ConfigurationManager::instance().loadConversationMessages(linked.owner.id,
+                                                                      conversationId,
+                                                                      messages.rbegin()->value(
+                                                                          "id"),
+                                                                      2);
+            return;
+        }
         invalidateModel();
         emit linked.modelChanged();
         emit linked.newMessagesAvailable(linked.owner.id, conversationId);
@@ -2468,10 +2477,10 @@ ConversationModelPimpl::slotConversationReady(const QString& accountId,
         conversation.needsSyncing = false;
         Q_EMIT linked.conversationUpdated(conversationId);
         Q_EMIT linked.dataChanged(conversationIdx);
-        auto id = ConfigurationManager::instance().loadConversationMessages(linked.owner.id,
-                                                                            conversationId,
-                                                                            "",
-                                                                            0);
+        ConfigurationManager::instance().loadConversationMessages(linked.owner.id,
+                                                                  conversationId,
+                                                                  "",
+                                                                  0);
         auto& peers = peersForConversation(conversation);
         if (peers.size() == 1)
             emit linked.conversationReady(conversationId, peers.front());
@@ -2878,10 +2887,7 @@ ConversationModelPimpl::addSwarmConversation(const QString& convId)
         Q_EMIT linked.dataChanged(indexOf(conversation.uid));
     }
     emplaceBackConversation(std::move(conversation));
-    auto id = ConfigurationManager::instance().loadConversationMessages(linked.owner.id,
-                                                                        convId,
-                                                                        "",
-                                                                        1);
+    ConfigurationManager::instance().loadConversationMessages(linked.owner.id, convId, "", 1);
 }
 
 void
-- 
GitLab