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