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