diff --git a/src/contactmodel.cpp b/src/contactmodel.cpp index 2a716dcff86840e83a6df04300c892300ab0dd23..554310168a02cdc4782493ee6d3288602996c384 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 c53f000aa8f5aabd79fb813caac15d1da6fb252b..9df2a400dd7c37ccb0d21a7b1bd22e4ba641d039 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"]; }