diff --git a/src/omemo/QXmppOmemoManager_p.cpp b/src/omemo/QXmppOmemoManager_p.cpp index 9d3796a63..f23e1fa52 100644 --- a/src/omemo/QXmppOmemoManager_p.cpp +++ b/src/omemo/QXmppOmemoManager_p.cpp @@ -3140,13 +3140,7 @@ QXmppTask ManagerPrivate::resetOwnDevice() if (isDeviceElementDeleted) { deleteDeviceBundle([=, this](bool isDeviceBundleDeleted) mutable { if (isDeviceBundleDeleted) { - ownDevice = {}; - preKeyPairs.clear(); - signedPreKeyPairs.clear(); - deviceBundle = {}; - devices.clear(); - - Q_EMIT q->allDevicesRemoved(); + resetCachedData(); } interface.finish(std::move(isDeviceBundleDeleted)); @@ -3171,6 +3165,7 @@ QXmppTask QXmppOmemoManagerPrivate::resetOwnDeviceLocally() future.then(q, [this, interface]() mutable { auto future = omemoStorage->resetAll(); future.then(q, [this, interface]() mutable { + resetCachedData(); interface.finish(); }); }); @@ -3190,13 +3185,7 @@ QXmppTask ManagerPrivate::resetAll() if (isDevicesNodeDeleted) { deleteNode(ns_omemo_2_bundles.toString(), [this, interface](bool isBundlesNodeDeleted) mutable { if (isBundlesNodeDeleted) { - ownDevice = {}; - preKeyPairs.clear(); - signedPreKeyPairs.clear(); - deviceBundle = {}; - devices.clear(); - - Q_EMIT q->allDevicesRemoved(); + resetCachedData(); } interface.finish(std::move(isBundlesNodeDeleted)); @@ -3210,6 +3199,20 @@ QXmppTask ManagerPrivate::resetAll() return interface.task(); } +// +// Resets all cached OMEMO data. +// +void ManagerPrivate::resetCachedData() +{ + ownDevice = {}; + preKeyPairs.clear(); + signedPreKeyPairs.clear(); + deviceBundle = {}; + devices.clear(); + + Q_EMIT q->allDevicesRemoved(); +} + // // Builds a new session for a new received device if that is enabled. // diff --git a/src/omemo/QXmppOmemoManager_p.h b/src/omemo/QXmppOmemoManager_p.h index b9fc81a06..06015345c 100644 --- a/src/omemo/QXmppOmemoManager_p.h +++ b/src/omemo/QXmppOmemoManager_p.h @@ -319,6 +319,7 @@ class QXmppOmemoManagerPrivate QXmppTask resetOwnDevice(); QXmppTask resetOwnDeviceLocally(); QXmppTask resetAll(); + void resetCachedData(); QXmppTask buildSessionForNewDevice(const QString &jid, uint32_t deviceId, QXmppOmemoStorage::Device &device); QXmppTask buildSessionWithDeviceBundle(const QString &jid, uint32_t deviceId, QXmppOmemoStorage::Device &device);