From 96c0084c3b1c555c142e709c7c77a80cafb8c65d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Blin?=
 <sebastien.blin@savoirfairelinux.com>
Date: Mon, 5 Jul 2021 09:34:25 -0400
Subject: [PATCH] conversationsadapter: use convId from request

This fix notification's actions for the notification, finding the
correct convId.

GitLab: #455
Change-Id: I9b70f723eacd930f95c2eaf01ecd52b8c5d28313
---
 src/conversationsadapter.cpp | 13 ++++++++-----
 src/conversationsadapter.h   |  2 +-
 2 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/src/conversationsadapter.cpp b/src/conversationsadapter.cpp
index 2d7bf6b94..be4415ad7 100644
--- a/src/conversationsadapter.cpp
+++ b/src/conversationsadapter.cpp
@@ -221,17 +221,20 @@ ConversationsAdapter::onNewReadInteraction(const QString& accountId,
 }
 
 void
-ConversationsAdapter::onNewTrustRequest(const QString& accountId, const QString& peerUri)
+ConversationsAdapter::onNewTrustRequest(const QString& accountId, const QString& convId, const QString& peerUri)
 {
 #ifdef Q_OS_LINUX
     if (!QApplication::focusWindow() || accountId != lrcInstance_->getCurrentAccountId()) {
-        auto& convInfo = lrcInstance_->getConversationFromPeerUri(peerUri);
-        if (convInfo.uid.isEmpty())
-            return;
+        auto conv = convId;
+        if (conv.isEmpty()) {
+            auto& convInfo = lrcInstance_->getConversationFromPeerUri(peerUri);
+            if (convInfo.uid.isEmpty())
+                return;
+        }
         auto& accInfo = lrcInstance_->getAccountInfo(accountId);
         auto from = accInfo.contactModel->bestNameForContact(peerUri);
         auto contactPhoto = Utils::contactPhoto(lrcInstance_, peerUri, QSize(50, 50), accountId);
-        auto notifId = QString("%1;%2").arg(accountId).arg(convInfo.uid);
+        auto notifId = QString("%1;%2").arg(accountId).arg(conv);
         systemTray_->showNotification(notifId,
                                       tr("Trust request"),
                                       "New request from " + from,
diff --git a/src/conversationsadapter.h b/src/conversationsadapter.h
index 1f107c05d..00ea26e4d 100644
--- a/src/conversationsadapter.h
+++ b/src/conversationsadapter.h
@@ -70,7 +70,7 @@ private Q_SLOTS:
     void onNewReadInteraction(const QString& accountId,
                               const QString& convUid,
                               const QString& interactionId);
-    void onNewTrustRequest(const QString& accountId, const QString& peerUri);
+    void onNewTrustRequest(const QString& accountId, const QString& convId, const QString& peerUri);
     void onTrustRequestTreated(const QString& accountId, const QString& peerUri);
 
     // per-account slots
-- 
GitLab