diff --git a/src/conversationmodel.cpp b/src/conversationmodel.cpp index 88100f393b0a59baf46a3491dee7c3d067e7abb7..41db5debeefb274fa15a428565485deecc33fc74 100644 --- a/src/conversationmodel.cpp +++ b/src/conversationmodel.cpp @@ -2819,13 +2819,14 @@ ConversationModelPimpl::slotContactRemoved(const QString& uri) void ConversationModelPimpl::slotContactModelUpdated(const QString& uri) { - 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"; + // Update presence for all conversations with this peer + for (auto& conversation : conversations) { + auto members = peersForConversation(conversation); + if (members.indexOf(uri) != -1) { + invalidateModel(); + emit linked.conversationUpdated(conversation.uid); + Q_EMIT linked.dataChanged(indexOf(conversation.uid)); + } } if (currentFilter.isEmpty()) {