aboutsummaryrefslogtreecommitdiff
path: root/src/omemo/QXmppOmemoManager.cpp
diff options
context:
space:
mode:
authorMelvin Keskin <melvo@olomono.de>2023-04-05 20:06:25 +0200
committerLinus Jahn <lnj@kaidan.im>2023-04-07 16:01:23 +0200
commit9d08a60b851804bb818868b82b8ec43c784d29aa (patch)
tree8094f5e1c461b41be457da2971996dbffe26ea3a /src/omemo/QXmppOmemoManager.cpp
parent40680cdc07a0afc5ca2a3fcf1da466d0a909f5c1 (diff)
downloadqxmpp-9d08a60b851804bb818868b82b8ec43c784d29aa.tar.gz
OmemoManager: Emit 'deviceChanged()' for all changed devices
Diffstat (limited to 'src/omemo/QXmppOmemoManager.cpp')
-rw-r--r--src/omemo/QXmppOmemoManager.cpp12
1 files changed, 9 insertions, 3 deletions
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<QString, uint32_t> 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());
+ }
});
}