// Squawk messenger. // Copyright (C) 2019 Yury Gubich <blue@macaw.me> // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see <http://www.gnu.org/licenses/>. #ifndef CORE_OMEMOHANDLER_H #define CORE_OMEMOHANDLER_H #include <QXmppOmemoStorage.h> #include <cache.h> Q_DECLARE_METATYPE(QXmppOmemoStorage::OwnDevice); Q_DECLARE_METATYPE(QXmppOmemoStorage::Device); namespace Core { class Account; class OmemoHandler : public QXmppOmemoStorage { public: typedef std::pair<QDateTime, QByteArray> SignedPreKeyPair; OmemoHandler(Account* account); ~OmemoHandler() override; QXmppTask<OmemoData> allData() override; QXmppTask<void> setOwnDevice(const std::optional<OwnDevice> &device) override; QXmppTask<void> addSignedPreKeyPair(uint32_t keyId, const QXmppOmemoStorage::SignedPreKeyPair &keyPair) override; QXmppTask<void> removeSignedPreKeyPair(uint32_t keyId) override; QXmppTask<void> addPreKeyPairs(const QHash<uint32_t, QByteArray> &keyPairs) override; QXmppTask<void> removePreKeyPair(uint32_t keyId) override; QXmppTask<void> addDevice(const QString &jid, uint32_t deviceId, const Device &device) override; QXmppTask<void> removeDevice(const QString &jid, uint32_t deviceId) override; QXmppTask<void> removeDevices(const QString &jid) override; QXmppTask<void> resetAll() override; bool hasOwnDevice(); private: Account* acc; std::optional<OwnDevice> ownDevice; DataBase db; DataBase::Cache<QString, QVariant>* meta; DataBase::Cache<QString, QHash<uint32_t, Device>>* devices; DataBase::Cache<uint32_t, QByteArray>* preKeyPairs; DataBase::Cache<uint32_t, SignedPreKeyPair>* signedPreKeyPairs; }; } QDataStream& operator << (QDataStream &out, const QXmppOmemoStorage::Device& device); QDataStream& operator >> (QDataStream &in, QXmppOmemoStorage::Device& device); QDataStream& operator << (QDataStream &out, const QXmppOmemoStorage::OwnDevice& device); QDataStream& operator >> (QDataStream &in, QXmppOmemoStorage::OwnDevice& device); #endif // CORE_OMEMOHANDLER_H