aboutsummaryrefslogtreecommitdiff
path: root/src/client/QXmppRosterManager.h
diff options
context:
space:
mode:
authorLinus Jahn <lnj@kaidan.im>2021-07-05 15:25:54 +0200
committerLinus Jahn <lnj@kaidan.im>2021-07-05 18:07:28 +0200
commitf79990e13fffd36a5d2aa4153ef06b48c0eeebe4 (patch)
treeb3519ead4994bb35aff38d20f367317defee5238 /src/client/QXmppRosterManager.h
parent28aad17d6d928ee0a983d7032ae0f11fbc71bb06 (diff)
downloadqxmpp-f79990e13fffd36a5d2aa4153ef06b48c0eeebe4.tar.gz
RosterManager: Add QFuture-based requests
Diffstat (limited to 'src/client/QXmppRosterManager.h')
-rw-r--r--src/client/QXmppRosterManager.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/client/QXmppRosterManager.h b/src/client/QXmppRosterManager.h
index 81f0538a..09c32ea0 100644
--- a/src/client/QXmppRosterManager.h
+++ b/src/client/QXmppRosterManager.h
@@ -30,10 +30,14 @@
#include "QXmppPresence.h"
#include "QXmppRosterIq.h"
+#include <variant>
+
#include <QMap>
#include <QObject>
#include <QStringList>
+template<typename T>
+class QFuture;
class QXmppRosterManagerPrivate;
///
@@ -71,6 +75,9 @@ class QXMPP_EXPORT QXmppRosterManager : public QXmppClientExtension
Q_OBJECT
public:
+ /// Empty result containing QXmpp::Success or a QXmppStanza::Error
+ using Result = std::variant<QXmpp::Success, QXmppStanza::Error>;
+
QXmppRosterManager(QXmppClient *stream);
~QXmppRosterManager() override;
@@ -84,6 +91,12 @@ public:
QXmppPresence getPresence(const QString &bareJid,
const QString &resource) const;
+ QFuture<Result> addRosterItem(const QString &bareJid, const QString &name = {}, const QSet<QString> &groups = {});
+ QFuture<Result> removeRosterItem(const QString &bareJid);
+ QFuture<Result> renameRosterItem(const QString &bareJid, const QString &name);
+ QFuture<QXmpp::PacketState> subscribeTo(const QString &bareJid, const QString &reason = {});
+ QFuture<QXmpp::PacketState> unsubscribeFrom(const QString &bareJid, const QString &reason = {});
+
/// \cond
bool handleStanza(const QDomElement &element) override;
/// \endcond