From 70a64f0d897413466777ef58e4bc9c93fceda0e6 Mon Sep 17 00:00:00 2001 From: Melvin Keskin Date: Thu, 7 Apr 2022 17:35:08 +0200 Subject: PubSubManager: requestItem: Add StandardItemId enum for 'current' --- src/client/QXmppPubSubManager.h | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) (limited to 'src/client/QXmppPubSubManager.h') diff --git a/src/client/QXmppPubSubManager.h b/src/client/QXmppPubSubManager.h index c00064b4..d817c30c 100644 --- a/src/client/QXmppPubSubManager.h +++ b/src/client/QXmppPubSubManager.h @@ -1,4 +1,5 @@ // SPDX-FileCopyrightText: 2020 Linus Jahn +// SPDX-FileCopyrightText: 2022 Melvin Keskin // // SPDX-License-Identifier: LGPL-2.1-or-later @@ -24,6 +25,13 @@ class QXMPP_EXPORT QXmppPubSubManager : public QXmppClientExtension Q_OBJECT public: + /// + /// Pre-defined ID of a PubSub item + /// + enum StandardItemId { + Current ///< Item of a singleton node + }; + template struct Items { @@ -58,6 +66,8 @@ public: template QFuture> requestItem(const QString &jid, const QString &nodeName, const QString &itemId); template + QFuture> requestItem(const QString &jid, const QString &nodeName, StandardItemId itemId); + template QFuture> requestItems(const QString &jid, const QString &nodeName); template QFuture> requestItems(const QString &jid, const QString &nodeName, const QStringList &itemIds); @@ -70,6 +80,7 @@ public: template QFuture publishItems(const QString &jid, const QString &nodeName, const QVector &items, const QXmppPubSubPublishOptions &publishOptions); QFuture retractItem(const QString &jid, const QString &nodeName, const QString &itemId); + QFuture retractItem(const QString &jid, const QString &nodeName, StandardItemId itemId); QFuture purgeItems(const QString &jid, const QString &nodeName); QFuture requestSubscriptions(const QString &jid); QFuture requestSubscriptions(const QString &jid, const QString &nodeName); @@ -97,6 +108,7 @@ public: template QFuture publishPepItems(const QString &nodeName, const QVector &items); inline QFuture retractPepItem(const QString &nodeName, const QString &itemId) { return retractItem(client()->configuration().jidBare(), nodeName, itemId); } + inline QFuture retractPepItem(const QString &nodeName, StandardItemId itemId) { return retractItem(client()->configuration().jidBare(), nodeName, itemId); } inline QFuture purgePepItems(const QString &nodeName) { return purgeItems(client()->configuration().jidBare(), nodeName); } inline QFuture requestPepNodeConfiguration(const QString &nodeName) { return requestNodeConfiguration(client()->configuration().jidBare(), nodeName); } inline QFuture configurePepNode(const QString &nodeName, const QXmppPubSubNodeConfig &config) { return configureNode(client()->configuration().jidBare(), nodeName, config); } @@ -108,11 +120,11 @@ public: /// \endcond private: - /// \cond QFuture publishItem(QXmppPubSubIqBase &&iq); QFuture publishItems(QXmppPubSubIqBase &&iq); static QXmppPubSubIq<> requestItemsIq(const QString &jid, const QString &nodeName, const QStringList &itemIds); - /// \endcond + + static QString standardItemIdToString(StandardItemId itemId); // We may need a d-ptr in the future. void *d = nullptr; @@ -143,6 +155,26 @@ QFuture> QXmppPubSubManager::requestItem(const }); } +/// +/// Requests a specific item of an entity's node. +/// +/// The default value of itemId is used for singleton nodes (i.e., the node's +/// single item is requested). +/// +/// \param jid Jabber ID of the entity hosting the pubsub service. For PEP this +/// should be an account's bare JID +/// \param nodeName the name of the node to query +/// \param itemId the ID of the item to retrieve +/// \return +/// +template +QFuture> QXmppPubSubManager::requestItem(const QString &jid, + const QString &nodeName, + StandardItemId itemId) +{ + return requestItem(jid, nodeName, standardItemIdToString(itemId)); +} + /// /// Requests all items of an entity's node. /// -- cgit v1.2.3