From 80fc042208fdb1015e1528fc05d7331519baf417 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Blin?=
 <sebastien.blin@savoirfairelinux.com>
Date: Thu, 7 Apr 2022 13:53:17 -0400
Subject: [PATCH] contactmodel: show avatars for search results

For JAMS accounts, the search results does have avatars. So they
must be shown

Change-Id: I296128ef112f88afb1505d8cf639dcc36732567d
---
 src/contactmodel.cpp      | 11 ++++++++++-
 src/conversationmodel.cpp |  7 +++++++
 2 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/src/contactmodel.cpp b/src/contactmodel.cpp
index 2a716dcf..55431016 100644
--- a/src/contactmodel.cpp
+++ b/src/contactmodel.cpp
@@ -530,7 +530,7 @@ ContactModel::bestNameForContact(const QString& contactUri) const
             return bestIdFromContactInfo(contact);
         }
         return alias;
-    } catch(const std::out_of_range&) {
+    } catch (const std::out_of_range&) {
     }
     return contactUri;
 }
@@ -538,6 +538,15 @@ ContactModel::bestNameForContact(const QString& contactUri) const
 QString
 ContactModel::avatar(const QString& uri) const
 {
+    {
+        std::lock_guard<std::mutex> lk(pimpl_->contactsMtx_);
+        // For search results it's loaded and not in storage yet.
+        if (pimpl_->searchResult.contains(uri)) {
+            auto contact = pimpl_->searchResult.value(uri);
+            return contact.profileInfo.avatar;
+        }
+    }
+    // Else search in storage
     return storage::avatar(owner.id, uri);
 }
 
diff --git a/src/conversationmodel.cpp b/src/conversationmodel.cpp
index c53f000a..9df2a400 100644
--- a/src/conversationmodel.cpp
+++ b/src/conversationmodel.cpp
@@ -1101,6 +1101,13 @@ ConversationModel::avatar(const QString& conversationId) const
         return {};
     }
     auto& conversation = conversationOpt->get();
+    if (conversation.isCoreDialog()) {
+        auto peer = pimpl_->peersForConversation(conversation);
+        if (peer.isEmpty())
+            return {};
+        // In this case, we can just display contact name
+        return owner.contactModel->avatar(peer.at(0));
+    }
     return conversation.infos["avatar"];
 }
 
-- 
GitLab