From b5c54696cefcb122f9fa2cd7b45f5411cbf93eaa Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Blin?=
 <sebastien.blin@savoirfairelinux.com>
Date: Mon, 18 Jul 2022 14:45:29 -0400
Subject: [PATCH] swarmdetailspanel: update on changes + fix chatviewheader

Change-Id: Ieeb6811101f7c1dadc2b9d07fdac93cc4fe68dd4
---
 src/app/currentconversation.cpp               | 15 ++++++++++++++
 src/app/currentconversation.h                 |  1 +
 src/app/mainview/MainView.qml                 |  2 --
 src/app/mainview/components/ChatView.qml      |  6 ------
 .../mainview/components/ChatViewHeader.qml    | 20 +++++++++++--------
 .../mainview/components/SwarmDetailsPanel.qml |  6 ++++--
 6 files changed, 32 insertions(+), 18 deletions(-)

diff --git a/src/app/currentconversation.cpp b/src/app/currentconversation.cpp
index 5de28c6bb..f54858502 100644
--- a/src/app/currentconversation.cpp
+++ b/src/app/currentconversation.cpp
@@ -116,6 +116,16 @@ CurrentConversation::onConversationUpdated(const QString& convId)
     updateData();
 }
 
+void
+CurrentConversation::onProfileUpdated(const QString& convId)
+{
+    // filter for our currently set id
+    if (id_ != convId)
+        return;
+    set_title(lrcInstance_->getCurrentConversationModel()->title(convId));
+    set_description(lrcInstance_->getCurrentConversationModel()->description(convId));
+}
+
 void
 CurrentConversation::connectModel()
 {
@@ -128,4 +138,9 @@ CurrentConversation::connectModel()
             this,
             &CurrentConversation::onConversationUpdated,
             Qt::UniqueConnection);
+    connect(lrcInstance_->getCurrentConversationModel(),
+            &ConversationModel::profileUpdated,
+            this,
+            &CurrentConversation::onProfileUpdated,
+            Qt::UniqueConnection);
 }
diff --git a/src/app/currentconversation.h b/src/app/currentconversation.h
index 6aa85f3d4..7483c107c 100644
--- a/src/app/currentconversation.h
+++ b/src/app/currentconversation.h
@@ -57,6 +57,7 @@ public:
 private Q_SLOTS:
     void updateData();
     void onConversationUpdated(const QString& convId);
+    void onProfileUpdated(const QString& convId);
 
 private:
     LRCInstance* lrcInstance_;
diff --git a/src/app/mainview/MainView.qml b/src/app/mainview/MainView.qml
index a14a26117..50d71c49b 100644
--- a/src/app/mainview/MainView.qml
+++ b/src/app/mainview/MainView.qml
@@ -182,8 +182,6 @@ Rectangle {
         var item = ConversationsAdapter.getConvInfoMap(convId)
         if (item.convId === undefined)
             return
-        chatView.headerUserAliasLabelText = item.title
-        chatView.headerUserUserNameLabelText = item.description
         if (item.callStackViewShouldShow) {
             if (inSettingsView) {
                 toggleSettingsView()
diff --git a/src/app/mainview/components/ChatView.qml b/src/app/mainview/components/ChatView.qml
index 1cca05915..e79c5d369 100644
--- a/src/app/mainview/components/ChatView.qml
+++ b/src/app/mainview/components/ChatView.qml
@@ -32,9 +32,6 @@ import "../js/pluginhandlerpickercreation.js" as PluginHandlerPickerCreation
 Rectangle {
     id: root
 
-    property string headerUserAliasLabelText: ""
-    property string headerUserUserNameLabelText: ""
-
     property bool allMessagesLoaded
 
     signal needToHideConversationInCall
@@ -63,9 +60,6 @@ Rectangle {
             Layout.maximumHeight: JamiTheme.chatViewHeaderPreferredHeight
             Layout.minimumWidth: JamiTheme.chatViewHeaderMinimumWidth
 
-            userAliasLabelText: headerUserAliasLabelText
-            userUserNameLabelText: headerUserUserNameLabelText
-
             DropArea {
                 anchors.fill: parent
                 onDropped: chatViewFooter.setFilePathsToSend(drop.urls)
diff --git a/src/app/mainview/components/ChatViewHeader.qml b/src/app/mainview/components/ChatViewHeader.qml
index 8f80044d4..502d5b6b7 100644
--- a/src/app/mainview/components/ChatViewHeader.qml
+++ b/src/app/mainview/components/ChatViewHeader.qml
@@ -29,15 +29,19 @@ import "../../commoncomponents"
 Rectangle {
     id: root
 
-    property string userAliasLabelText
-    property string userUserNameLabelText
-
     signal backClicked
     signal needToHideConversationInCall
     signal addToConversationClicked
     signal pluginSelector
     signal showDetailsClicked
 
+    Connections {
+        target: CurrentConversation
+        enabled: true
+        function onTitleChanged() { title.eText = CurrentConversation.title }
+        function onDescriptionChanged() { description.eText = CurrentConversation.description }
+    }
+
     property bool interactionButtonsVisibility: {
         if (CurrentConversation.inCall)
             return false
@@ -109,7 +113,7 @@ Rectangle {
                 spacing: 0
 
                 ElidedTextLabel {
-                    id: userAliasLabel
+                    id: title
 
                     Layout.alignment: Qt.AlignVCenter | Qt.AlignLeft
 
@@ -118,23 +122,23 @@ Rectangle {
                     horizontalAlignment: Text.AlignLeft
                     verticalAlignment: Text.AlignVCenter
 
-                    eText: userAliasLabelText
+                    eText: CurrentConversation.title
                     maxWidth: userNameOrIdRect.width
                 }
 
                 ElidedTextLabel {
-                    id: userUserNameLabel
+                    id: description
 
                     Layout.alignment: Qt.AlignVCenter | Qt.AlignLeft
 
                     visible: text.length &&
-                             userAliasLabelText != userUserNameLabelText
+                             CurrentConversation.title != CurrentConversation.description
                     font.pointSize: JamiTheme.textFontSize
                     color: JamiTheme.faddedLastInteractionFontColor
 
                     horizontalAlignment: Text.AlignLeft
                     verticalAlignment: Text.AlignVCenter
-                    eText: userUserNameLabelText
+                    eText: CurrentConversation.description
                     maxWidth: userNameOrIdRect.width
                 }
             }
diff --git a/src/app/mainview/components/SwarmDetailsPanel.qml b/src/app/mainview/components/SwarmDetailsPanel.qml
index f8035af9a..4836a1aef 100644
--- a/src/app/mainview/components/SwarmDetailsPanel.qml
+++ b/src/app/mainview/components/SwarmDetailsPanel.qml
@@ -93,7 +93,8 @@ Rectangle {
                         JamiTheme.chatviewTextColorDark
 
                 onEditingFinished: {
-                    ConversationsAdapter.updateConversationTitle(LRCInstance.selectedConvUid, titleLine.text)
+                    if (text !== CurrentConversation.title)
+                        ConversationsAdapter.updateConversationTitle(LRCInstance.selectedConvUid, text)
                 }
             }
 
@@ -132,7 +133,8 @@ Rectangle {
                         JamiTheme.chatviewTextColorDark
 
                 onEditingFinished: {
-                    ConversationsAdapter.updateConversationDescription(LRCInstance.selectedConvUid, descriptionLine.text)
+                    if (text !== CurrentConversation.description)
+                        ConversationsAdapter.updateConversationDescription(LRCInstance.selectedConvUid, text)
                 }
             }
 
-- 
GitLab