From 4a25228e404da5cf56d1012726bfe6126baee0bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Blin?= <sebastien.blin@savoirfairelinux.com> Date: Tue, 9 Nov 2021 14:52:31 -0500 Subject: [PATCH] messagesadapter: use conversation.typers to build current typing status Change-Id: I9d38c2a9938bed02ed48f7a141ef0b53b423e1e4 GitLab: #589 --- src/messagesadapter.cpp | 26 +++++++++++++++++++------- src/messagesadapter.h | 2 ++ 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/messagesadapter.cpp b/src/messagesadapter.cpp index 479aff2e7..25f912183 100644 --- a/src/messagesadapter.cpp +++ b/src/messagesadapter.cpp @@ -54,7 +54,10 @@ MessagesAdapter::MessagesAdapter(AppSettingsManager* settingsManager, const auto& conversation = lrcInstance_->getConversationFromConvUid(convId); filteredMsgListModel_->setSourceModel(conversation.interactions.get()); set_messageListModel(QVariant::fromValue(filteredMsgListModel_)); - set_currentConvComposingList({}); + if (!conversation.typers.empty()) + set_currentConvComposingList(conversationTypersUrlToName(conversation.typers)); + else + set_currentConvComposingList({}); }); connect(previewEngine_, &PreviewEngine::infoReady, this, &MessagesAdapter::onPreviewInfoReady); @@ -434,15 +437,24 @@ MessagesAdapter::onComposingStatusChanged(const QString& convId, const QString& contactUri, bool isComposing) { + Q_UNUSED(contactUri) if (lrcInstance_->get_selectedConvUid() == convId) { - auto name = lrcInstance_->getCurrentContactModel()->bestNameForContact(contactUri); - if (isComposing) - currentConvComposingList_.append(name); - else - currentConvComposingList_.removeOne(name); + const QString& accId = lrcInstance_->get_currentAccountId(); + auto& conversation = lrcInstance_->getConversationFromConvUid(convId, accId); + set_currentConvComposingList(conversationTypersUrlToName(conversation.typers)); + } +} - Q_EMIT currentConvComposingListChanged(); +QList<QString> +MessagesAdapter::conversationTypersUrlToName(const QSet<QString>& typersSet) +{ + QList<QString> nameList; + for (const auto& id : typersSet) { + auto name = lrcInstance_->getCurrentContactModel()->bestNameForContact(id); + nameList.append(name); } + + return nameList; } bool diff --git a/src/messagesadapter.h b/src/messagesadapter.h index e6717ef4c..bfa4e6279 100644 --- a/src/messagesadapter.h +++ b/src/messagesadapter.h @@ -129,6 +129,8 @@ private Q_SLOTS: bool isComposing); private: + QList<QString> conversationTypersUrlToName(const QSet<QString>& typersSet); + AppSettingsManager* settingsManager_; PreviewEngine* previewEngine_; FilteredMsgListModel* filteredMsgListModel_; -- GitLab