diff options
| author | Xavier Del Campo Romero <xavi92@disroot.org> | 2026-02-03 15:59:29 +0100 |
|---|---|---|
| committer | Xavier Del Campo Romero <xavi92@disroot.org> | 2026-02-03 16:26:52 +0100 |
| commit | fdb64c59865e4db76addfb8222f6421443e25240 (patch) | |
| tree | 0de2bad9f758c69b7fb9ba2670653c8515a3a70d /omemo_db.cpp | |
| parent | 207176de48d5e44c8d3e6318b526db5d772dd008 (diff) | |
Import files from xxcc
Diffstat (limited to 'omemo_db.cpp')
| -rw-r--r-- | omemo_db.cpp | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/omemo_db.cpp b/omemo_db.cpp new file mode 100644 index 0000000..c1949c0 --- /dev/null +++ b/omemo_db.cpp @@ -0,0 +1,93 @@ +#include "omemo_db.h" +#include <QXmppConfiguration.h> +#include <QXmppFutureUtils_p.h> +#include <QString> +#include <iostream> +#include <optional> + +static const QString service = "xxcc", key_namespace = "omemo"; + +OmemoDb::OmemoDb(const JidDb &db) : + db(db) +{ +} + +QXmppTask<QXmppOmemoStorage::OmemoData> OmemoDb::allData() +{ + QXmppOmemoStorage::OmemoData ret; + QHash<QString, QHash<uint32_t, Device>> devices; + + for (const auto &d : db.omemoDevices()) + ret.devices.insert(d.jid, d.devices); + + ret.ownDevice = db.omemoOwnDevice(); + ret.preKeyPairs = db.preKeyPairs(); + ret.signedPreKeyPairs = db.signedPreKeyPairs(); + return QXmpp::Private::makeReadyTask(QXmppOmemoStorage::OmemoData(ret)); +} + +QXmppTask<void> OmemoDb::setOwnDevice(const std::optional<OwnDevice> &device) +{ + if (device.has_value() && db.store(device.value())) + std::cerr << "db.store failed" << std::endl; + + return QXmpp::Private::makeReadyTask(); +} + +QXmppTask<void> OmemoDb::addSignedPreKeyPair(const uint32_t keyId, + const SignedPreKeyPair &keyPair) +{ + if (db.store(keyId, keyPair)) + std::cerr << "db.store failed" << std::endl; + + return QXmpp::Private::makeReadyTask(); +} + +QXmppTask<void> OmemoDb::removeSignedPreKeyPair(uint32_t keyId) +{ + db.removeSignedPreKeyPair(keyId); + return QXmpp::Private::makeReadyTask(); +} + +QXmppTask<void> OmemoDb::addPreKeyPairs( + const QHash<uint32_t, QByteArray> &keyPairs) +{ + if (db.store(keyPairs)) + std::cerr << "db.store failed" << std::endl; + + return QXmpp::Private::makeReadyTask(); +} + +QXmppTask<void> OmemoDb::removePreKeyPair(const uint32_t keyId) +{ + db.removePreKeyPair(keyId); + return QXmpp::Private::makeReadyTask(); +} + +QXmppTask<void> OmemoDb::addDevice(const QString &jid, + const uint32_t deviceId, const Device &d) +{ + if (db.store(jid, deviceId, d)) + std::cerr << "db.store failed" << std::endl; + + return QXmpp::Private::makeReadyTask(); +} + +QXmppTask<void> OmemoDb::removeDevice(const QString &jid, + const uint32_t deviceId) +{ + db.removeOmemoDevice(jid, deviceId); + return QXmpp::Private::makeReadyTask(); +} + +QXmppTask<void> OmemoDb::removeDevices(const QString &jid) +{ + db.removeOmemoDevices(jid); + return QXmpp::Private::makeReadyTask(); +} + +QXmppTask<void> OmemoDb::resetAll() +{ + db.removeOmemo(); + return QXmpp::Private::makeReadyTask(); +} |
