diff --git a/src/conversationmodel.cpp b/src/conversationmodel.cpp index a8a137f88f1518ed9d901cfb771a0e558db7a3a7..d806757bb57feb9061f6ed9d77a40393d389422c 100644 --- a/src/conversationmodel.cpp +++ b/src/conversationmodel.cpp @@ -1016,9 +1016,12 @@ ConversationModel::title(const QString& conversationId) const return {}; } auto& conversation = conversationOpt->get(); - if (conversation.isLegacy()) { + if (conversation.isCoreDialog()) { + auto peer = pimpl_->peersForConversation(conversation); + if (peer.isEmpty()) + return {}; // In this case, we can just display contact name - return owner.contactModel->bestNameForContact(conversation.participants.at(0)); + return owner.contactModel->bestNameForContact(peer.at(0)); } // In this case, it depends if we have infos from daemon (TODO conferencesInfo() support) // NOTE: Do not call any daemon method there as title() is called a lot for drawing @@ -2358,16 +2361,10 @@ ConversationModelPimpl::slotConversationReady(const QString& accountId, // remove non swarm conversation that was added from slotContactAdded const VectorMapStringString& members = ConfigurationManager::instance() .getConversationMembers(accountId, conversationId); - const auto& accountURI = linked.owner.profileInfo.uri; VectorString participants; // it means conversation with one participant. In this case we could have non swarm conversation bool shouldRemoveNonSwarmConversation = members.size() == 2; for (const auto& member : members) { - // this check should be removed once all usage of participants replaced by - // peersForConversation. We should have ourself in participants list - if (member["uri"] == accountURI) { - continue; - } participants.append(member["uri"]); if (shouldRemoveNonSwarmConversation) { try { @@ -2496,12 +2493,9 @@ ConversationModelPimpl::slotConversationMemberEvent(const QString& accountId, const VectorMapStringString& members = ConfigurationManager::instance().getConversationMembers(linked.owner.id, conversationId); VectorString uris; - auto accountURI = linked.owner.profileInfo.uri; for (auto& member : members) { - if (member["uri"] != accountURI) { - uris.append(member["uri"]); - } + uris.append(member["uri"]); } conversation.participants = uris; invalidateModel(); @@ -2618,7 +2612,7 @@ ConversationModelPimpl::addConversationRequest(const MapStringString& convReques conversation::Info conversation; conversation.uid = convId; conversation.accountId = linked.owner.id; - conversation.participants = {peer}; + conversation.participants = {linked.owner.profileInfo.uri, peer}; conversation.mode = mode; conversation.isRequest = true; emplaceBackConversation(std::move(conversation)); @@ -2727,11 +2721,9 @@ ConversationModelPimpl::addSwarmConversation(const QString& convId) // this check should be removed once all usage of participants replaced by // peersForConversation. We should have ourself in participants list // Note: if members.size() == 1, it's a conv with self so we're also the peer - if (member["uri"] != accountURI || members.size() == 1) { - participants.append(member["uri"]); - if (mode == conversation::Mode::ONE_TO_ONE) { - otherMember = member["uri"]; - } + participants.append(member["uri"]); + if (mode == conversation::Mode::ONE_TO_ONE && member["uri"] != accountURI) { + otherMember = member["uri"]; } } conversation::Info conversation; @@ -2741,8 +2733,7 @@ ConversationModelPimpl::addSwarmConversation(const QString& convId) conversation.mode = mode; if (mode == conversation::Mode::ONE_TO_ONE && !otherMember.isEmpty()) { try { - conversation.confId = linked.owner.callModel->getConferenceFromURI(otherMember) - .id; + conversation.confId = linked.owner.callModel->getConferenceFromURI(otherMember).id; } catch (...) { conversation.confId = ""; }