QXmpp  Version: 1.10.4
QXmppMovedManager.h
1 // SPDX-FileCopyrightText: 2024 Filipe Azevedo <pasnox@gmail.com>
2 //
3 // SPDX-License-Identifier: LGPL-2.1-or-later
4 
5 #ifndef QXMPPMOVEDMANAGER_H
6 #define QXMPPMOVEDMANAGER_H
7 
8 #include "QXmppClientExtension.h"
9 #include "QXmppSendResult.h"
10 #include "QXmppTask.h"
11 
12 class QXmppPresence;
13 struct QXmppError;
14 class QXmppMovedManagerPrivate;
15 
16 class QXMPP_EXPORT QXmppMovedManager : public QXmppClientExtension
17 {
18  Q_OBJECT
19  Q_PROPERTY(bool supportedByServer READ supportedByServer NOTIFY supportedByServerChanged)
20 
21 public:
22  using Result = std::variant<QXmpp::Success, QXmppError>;
23 
24  explicit QXmppMovedManager();
25  ~QXmppMovedManager() override;
26 
27  QStringList discoveryFeatures() const override;
28 
29  bool supportedByServer() const;
30  Q_SIGNAL void supportedByServerChanged();
31 
32  QXmppTask<Result> publishStatement(const QString &newBareJid);
33  QXmppTask<Result> verifyStatement(const QString &oldBareJid, const QString &newBareJid);
34 
35  QXmppTask<QXmpp::SendResult> notifyContact(const QString &contactBareJid, const QString &oldBareJid, bool sensitive = true, const QString &reason = {});
36 
37 protected:
39  void onRegistered(QXmppClient *client) override;
40  void onUnregistered(QXmppClient *client) override;
42 
43 private:
44  QXmppTask<QXmppPresence> processSubscriptionRequest(QXmppPresence presence);
45  void handleDiscoInfo(const QXmppDiscoveryIq &iq);
46  Result movedJidsMatch(const QString &newBareJid, const QString &pepBareJid) const;
47 
48  void setSupportedByServer(bool supportedByServer);
49  void resetCachedData();
50 
51  const std::unique_ptr<QXmppMovedManagerPrivate> d;
52 
53  friend class QXmppRosterManager;
54  friend class tst_QXmppMovedManager;
55 };
56 
57 #endif // QXMPPMOVEDMANAGER_H
virtual void onRegistered(QXmppClient *client)
Definition: QXmppClientExtension.cpp:85
virtual void onUnregistered(QXmppClient *client)
Definition: QXmppClientExtension.cpp:95
Definition: QXmppError.h:17
Definition: QXmppTask.h:61
Definition: QXmppDiscoveryIq.h:17
The QXmppRosterManager class provides access to a connected client&#39;s roster.
Definition: QXmppRosterManager.h:83
The QXmppPresence class represents an XMPP presence stanza.
Definition: QXmppPresence.h:21
virtual QStringList discoveryFeatures() const
Definition: QXmppClientExtension.cpp:22
std::variant< QXmpp::Success, QXmppError > Result
Definition: QXmppMovedManager.h:22
The QXmppClientExtension class is the base class for QXmppClient extensions.
Definition: QXmppClientExtension.h:31
Main class for starting and managing connections to XMPP servers.
Definition: QXmppClient.h:61
Definition: QXmppMovedManager.h:16