diff --git a/src/api/contactmodel.h b/src/api/contactmodel.h index 9bceef8923e8ac9f567dc8d675351017a86e029e..9ce1042bfb1ab1003f8a5f446ec58b60d88194e4 100644 --- a/src/api/contactmodel.h +++ b/src/api/contactmodel.h @@ -125,7 +125,7 @@ Q_SIGNALS: /** * Connect this signal to know when this model was updated. */ - void modelUpdated(const QString& uri, bool needsSorted = true) const; + void modelUpdated(const QString& uri) const; /** * Connect this signal to know when a contact was added. * @param contactUri diff --git a/src/contactmodel.cpp b/src/contactmodel.cpp index b08ab5765007844dc7fe65b03c990ba15830319f..186373a69d7d23dde97dc0b14f44d6ef434dfb1b 100644 --- a/src/contactmodel.cpp +++ b/src/contactmodel.cpp @@ -737,7 +737,7 @@ ContactModelPimpl::fillWithJamiContacts() auto it = contacts.find(uri); if (it != contacts.end()) { it->isPresent = key == "Online"; - linked.modelUpdated(uri, false); + linked.modelUpdated(uri); } } break; @@ -762,7 +762,7 @@ ContactModelPimpl::slotNewBuddySubscription(const QString& accountId, } else return; } - emit linked.modelUpdated(contactUri, false); + emit linked.modelUpdated(contactUri); } void @@ -1200,29 +1200,27 @@ ContactModelPimpl::slotUserSearchEnded(const QString& accountId, searchResult.clear(); switch (status) { case 0: /* SUCCESS */ + for (auto& resultInfo : result) { + if (contacts.find(resultInfo.value("id")) != contacts.end()) { + continue; + } + profile::Info profileInfo; + profileInfo.uri = resultInfo.value("id"); + profileInfo.type = profile::Type::TEMPORARY; + profileInfo.avatar = resultInfo.value("profilePicture"); + profileInfo.alias = resultInfo.value("firstName") + " " + resultInfo.value("lastName"); + contact::Info contactInfo; + contactInfo.profileInfo = profileInfo; + contactInfo.registeredName = resultInfo.value("username"); + searchResult.insert(profileInfo.uri, contactInfo); + } + updateTemporaryMessage(""); break; case 3: /* ERROR */ updateTemporaryMessage("could not find contact matching search"); - emit linked.modelUpdated(query); - return; + break; default: - emit linked.modelUpdated(query); - return; - } - updateTemporaryMessage(""); - for (auto& resultInfo : result) { - if (contacts.find(resultInfo.value("id")) != contacts.end()) { - continue; - } - profile::Info profileInfo; - profileInfo.uri = resultInfo.value("id"); - profileInfo.type = profile::Type::TEMPORARY; - profileInfo.avatar = resultInfo.value("profilePicture"); - profileInfo.alias = resultInfo.value("firstName") + " " + resultInfo.value("lastName"); - contact::Info contactInfo; - contactInfo.profileInfo = profileInfo; - contactInfo.registeredName = resultInfo.value("username"); - searchResult.insert(profileInfo.uri, contactInfo); + break; } emit linked.modelUpdated(query); } diff --git a/src/conversationmodel.cpp b/src/conversationmodel.cpp index be31a18f0de155befd6e95b4e739a2f958069645..1dc70f618711bf2854ccd8557c76a990fa77c5f9 100644 --- a/src/conversationmodel.cpp +++ b/src/conversationmodel.cpp @@ -225,7 +225,7 @@ public Q_SLOTS: /** * Listen from contactModel when updated (like new alias, avatar, etc.) */ - void slotContactModelUpdated(const QString& uri, bool needsSorted); + void slotContactModelUpdated(const QString& uri); /** * Listen from contactModel when a new contact is added * @param uri @@ -1770,19 +1770,15 @@ ConversationModelPimpl::slotContactRemoved(const QString& uri) } void -ConversationModelPimpl::slotContactModelUpdated(const QString& uri, bool needsSorted) +ConversationModelPimpl::slotContactModelUpdated(const QString& uri) { - // presence updated - if (!needsSorted) { - try { - auto& conversation = getConversationForPeerUri(uri, true).get(); - invalidateModel(); - emit linked.conversationUpdated(conversation.uid); - Q_EMIT linked.dataChanged(indexOf(conversation.uid)); - } catch (std::out_of_range&) { - qDebug() << "contact updated for not existing conversation"; - } - return; + try { + auto& conversation = getConversationForPeerUri(uri, true).get(); + invalidateModel(); + emit linked.conversationUpdated(conversation.uid); + Q_EMIT linked.dataChanged(indexOf(conversation.uid)); + } catch (std::out_of_range&) { + qDebug() << "contact update attempted for inexistent conversation"; } if (currentFilter.isEmpty()) {