From 519ced58f71b0de28ece6ffe18da9d848565ad7e Mon Sep 17 00:00:00 2001 From: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com> Date: Mon, 2 Aug 2021 13:22:01 -0400 Subject: [PATCH] chatview: don't call printHistory Use updateHistory instead. This prevents "Contact added" message duplication. We also clear the unread messages at this point which will prevent an uncleared unread first message when adding a new conversation. Gitlab: #482 Change-Id: I927e15dfe945aa3f2f33db3fb91739522db5ea9b --- src/messagesadapter.cpp | 30 ++++++++++-------------------- src/messagesadapter.h | 1 - 2 files changed, 10 insertions(+), 21 deletions(-) diff --git a/src/messagesadapter.cpp b/src/messagesadapter.cpp index 9e9843fa2..32b406607 100644 --- a/src/messagesadapter.cpp +++ b/src/messagesadapter.cpp @@ -102,7 +102,6 @@ MessagesAdapter::onInteractionStatusUpdated(const QString& convUid, const lrc::api::interaction::Info& interaction) { auto currentConversationModel = lrcInstance_->getCurrentConversationModel(); - currentConversationModel->clearUnreadInteractions(convUid); updateInteraction(*currentConversationModel, interactionId, interaction); } @@ -206,16 +205,16 @@ MessagesAdapter::slotMessagesCleared() { auto* convModel = lrcInstance_->getCurrentConversationModel(); - auto convOpt = convModel->getConversationForUid(lrcInstance_->get_selectedConvUid()); - if (!convOpt) + auto optConv = convModel->getConversationForUid(lrcInstance_->get_selectedConvUid()); + if (!optConv) return; - if (convOpt->get().isSwarm() && !convOpt->get().allMessagesLoaded) { - convModel->loadConversationMessages(convOpt->get().uid, 20); + if (optConv->get().isSwarm() && !optConv->get().allMessagesLoaded) { + convModel->loadConversationMessages(optConv->get().uid, 20); } else { - printHistory(*convModel, convOpt->get().interactions); + updateHistory(*convModel, optConv->get().interactions, optConv->get().allMessagesLoaded); Utils::oneShotConnect(qmlObj_, SIGNAL(messagesLoaded()), this, SLOT(slotMessagesLoaded())); } - setConversationProfileData(convOpt->get()); + setConversationProfileData(optConv->get()); } void @@ -457,31 +456,22 @@ MessagesAdapter::setDisplayLinks() QMetaObject::invokeMethod(qmlObj_, "webViewRunJavaScript", Q_ARG(QVariant, s)); } -void -MessagesAdapter::printHistory(lrc::api::ConversationModel& conversationModel, - MessagesList interactions) -{ - auto interactionsStr = interactionsToJsonArrayObject(conversationModel, - lrcInstance_->get_selectedConvUid(), - interactions) - .toUtf8(); - QString s = QString::fromLatin1("printHistory(%1);").arg(interactionsStr.constData()); - QMetaObject::invokeMethod(qmlObj_, "webViewRunJavaScript", Q_ARG(QVariant, s)); -} - void MessagesAdapter::updateHistory(lrc::api::ConversationModel& conversationModel, MessagesList interactions, bool allLoaded) { + auto conversationId = lrcInstance_->get_selectedConvUid(); auto interactionsStr = interactionsToJsonArrayObject(conversationModel, - lrcInstance_->get_selectedConvUid(), + conversationId, interactions) .toUtf8(); QString s = QString::fromLatin1("updateHistory(%1, %2);") .arg(interactionsStr.constData()) .arg(allLoaded); QMetaObject::invokeMethod(qmlObj_, "webViewRunJavaScript", Q_ARG(QVariant, s)); + auto* convModel = lrcInstance_->getCurrentConversationModel(); + conversationModel.clearUnreadInteractions(conversationId); } void diff --git a/src/messagesadapter.h b/src/messagesadapter.h index f8651c468..06c674de7 100644 --- a/src/messagesadapter.h +++ b/src/messagesadapter.h @@ -71,7 +71,6 @@ protected: void setMessagesVisibility(bool visible); void setIsSwarm(bool isSwarm); void clearChatView(); - void printHistory(ConversationModel& conversationModel, MessagesList interactions); void updateHistory(ConversationModel& conversationModel, MessagesList interactions, bool allLoaded); -- GitLab