diff options
| author | Melvin Keskin <melvo@olomono.de> | 2023-04-05 20:06:25 +0200 |
|---|---|---|
| committer | Linus Jahn <lnj@kaidan.im> | 2023-04-07 16:01:23 +0200 |
| commit | 9d08a60b851804bb818868b82b8ec43c784d29aa (patch) | |
| tree | 8094f5e1c461b41be457da2971996dbffe26ea3a /src/omemo/QXmppOmemoManager.cpp | |
| parent | 40680cdc07a0afc5ca2a3fcf1da466d0a909f5c1 (diff) | |
| download | qxmpp-9d08a60b851804bb818868b82b8ec43c784d29aa.tar.gz | |
OmemoManager: Emit 'deviceChanged()' for all changed devices
Diffstat (limited to 'src/omemo/QXmppOmemoManager.cpp')
| -rw-r--r-- | src/omemo/QXmppOmemoManager.cpp | 12 |
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()); + } }); } |
