squawk/qomemo/qxmpp_omemo_manager.h

65 lines
1.5 KiB
C
Raw Permalink Normal View History

/*
* Created by victoria on 2021-05-12.
*/
#pragma once
#include "device_service.h"
#include "qomemo.h"
2021-05-12 21:32:13 +00:00
#include "variant/omemo_base.h"
2021-07-22 20:01:30 +00:00
#include <memory>
#include <QXmppClientExtension.h>
2021-07-22 17:45:39 +00:00
namespace Signal {
class Context;
}
namespace QXmpp::Omemo {
2021-05-13 14:54:37 +00:00
class Manager : public QXmppClientExtension {
Q_OBJECT;
2021-05-13 14:54:37 +00:00
public:
Manager();
~Manager() override = default;
2021-05-13 14:54:37 +00:00
bool handleStanza(const QDomElement &stanza) override;
2021-07-22 17:45:39 +00:00
bool handleDeviceList(const QDomElement& stanza);
bool handleMissingDeviceList(const QDomElement& stanza);
2021-07-22 20:01:30 +00:00
bool handleEncryptedMessage(const QDomElement& stanza);
2021-07-22 17:45:39 +00:00
QSharedPointer<DeviceService> getDeviceService();
Bundle generateAndSaveBundle(int deviceId);
2021-05-13 14:54:37 +00:00
public slots:
void fetchOwnDevices();
2021-07-22 17:45:39 +00:00
void publishDeviceList(const QXmpp::Omemo::DeviceList& deviceList);
void generateDeviceListForSelf();
void generateDeviceForSelfIfNeeded(const QXmpp::Omemo::DeviceList &currentList);
void publishBundle(int deviceId, const QXmpp::Omemo::Bundle& bundle);
2021-05-13 14:54:37 +00:00
signals:
void deviceListReceived(const QString &jid, const QXmpp::Omemo::DeviceList &list);
2021-07-22 17:45:39 +00:00
void deviceListNotFound(const QString &jid);
2021-05-13 14:54:37 +00:00
protected:
void setClient(QXmppClient *client) override;
2021-05-13 14:54:37 +00:00
private:
2021-07-22 17:45:39 +00:00
QSharedPointer<DeviceService> deviceService;
2021-05-13 14:54:37 +00:00
QScopedPointer<Variant::Base> omemoVariant;
2021-07-22 20:01:30 +00:00
std::shared_ptr<Signal::Context> signalContext;
2021-05-13 14:54:37 +00:00
};
} // namespace QXmpp::Omemo