From 8dda44b562996389000ce1b16168040f72340dbb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Blin?=
 <sebastien.blin@savoirfairelinux.com>
Date: Fri, 27 Jan 2023 16:41:36 -0500
Subject: [PATCH] misc: fix "Can't find contact..." warning

Scenario, create a swarm with self.
As a warning, it will show "Can't find contact YOUR_ID  this is a
bug, please report" because your account is not in your contacts.

Change-Id: I6f49f8fa77132daf00396b62da9ded470df49f98
---
 src/app/conversationlistmodelbase.cpp | 20 ++++++++++++++++++--
 src/libclient/contactmodel.cpp        |  2 +-
 2 files changed, 19 insertions(+), 3 deletions(-)

diff --git a/src/app/conversationlistmodelbase.cpp b/src/app/conversationlistmodelbase.cpp
index 82c0bb1e2..645c741d1 100644
--- a/src/app/conversationlistmodelbase.cpp
+++ b/src/app/conversationlistmodelbase.cpp
@@ -173,10 +173,26 @@ ConversationListModelBase::dataForItem(item_t item, int role) const
 
     if (item.isCoreDialog()) {
         auto peerUriList = model_->peersForConversation(item.uid);
-        if (peerUriList.isEmpty()) {
+        if (peerUriList.isEmpty())
             return {};
-        }
         auto peerUri = peerUriList.at(0);
+        if (peerUri == lrcInstance_->getCurrentAccountInfo().profileInfo.uri) {
+            // Conversation alone with self
+            switch (role) {
+            case Role::BestId:
+                return QVariant(lrcInstance_->accountModel().bestIdForAccount(peerUri));
+            case Role::Alias:
+                return QVariant(lrcInstance_->getCurrentAccountInfo().profileInfo.alias);
+            case Role::RegisteredName:
+                return QVariant(lrcInstance_->getCurrentAccountInfo().registeredName);
+            case Role::URI:
+                return QVariant(peerUri);
+            case Role::IsBanned:
+                return QVariant(false);
+            case Role::ContactType:
+                return QVariant(static_cast<int>(lrcInstance_->getCurrentAccountInfo().profileInfo.type));
+            }
+        }
         ContactModel* contactModel;
         contact::Info contact {};
         contactModel = lrcInstance_->getCurrentAccountInfo().contactModel.get();
diff --git a/src/libclient/contactmodel.cpp b/src/libclient/contactmodel.cpp
index 7e84c1ca7..068abfcca 100644
--- a/src/libclient/contactmodel.cpp
+++ b/src/libclient/contactmodel.cpp
@@ -777,7 +777,7 @@ ContactModelPimpl::slotNewBuddySubscription(const QString& accountId,
 void
 ContactModelPimpl::slotContactAdded(const QString& accountId,
                                     const QString& contactUri,
-                                    bool confirmed)
+                                    bool)
 {
     if (accountId != linked.owner.id)
         return;
-- 
GitLab