From 9d08a60b851804bb818868b82b8ec43c784d29aa Mon Sep 17 00:00:00 2001 From: Melvin Keskin Date: Wed, 5 Apr 2023 20:06:25 +0200 Subject: OmemoManager: Emit 'deviceChanged()' for all changed devices --- src/omemo/QXmppOmemoManager.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'src/omemo/QXmppOmemoManager.cpp') diff --git a/src/omemo/QXmppOmemoManager.cpp b/src/omemo/QXmppOmemoManager.cpp index 43ac3f1b..f9172d3b 100644 --- a/src/omemo/QXmppOmemoManager.cpp +++ b/src/omemo/QXmppOmemoManager.cpp @@ -1248,19 +1248,25 @@ void Manager::setClient(QXmppClient *client) Q_EMIT trustLevelsChanged(modifiedOmemoKeys); } + QMultiHash modifiedDevices; + for (auto itr = modifiedOmemoKeys.cbegin(); itr != modifiedOmemoKeys.cend(); ++itr) { const auto &keyOwnerJid = itr.key(); const auto &keyId = itr.value(); - // Emit 'deviceChanged()' only if there is a device with the key. + // Ensure to emit 'deviceChanged()' later only if there is a device with the key. const auto &devices = d->devices.value(keyOwnerJid); for (auto devicesItr = devices.cbegin(); devicesItr != devices.cend(); ++devicesItr) { if (devicesItr->keyId == keyId) { - Q_EMIT deviceChanged(keyOwnerJid, devicesItr.key()); - return; + modifiedDevices.insert(keyOwnerJid, devicesItr.key()); + break; } } } + + for (auto modifiedDevicesItr = modifiedDevices.cbegin(); modifiedDevicesItr != modifiedDevices.cend(); ++modifiedDevicesItr) { + Q_EMIT deviceChanged(modifiedDevicesItr.key(), modifiedDevicesItr.value()); + } }); } -- cgit v1.2.3