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