diff options
| author | Linus Jahn <lnj@kaidan.im> | 2022-03-03 17:04:06 +0100 |
|---|---|---|
| committer | Linus Jahn <lnj@kaidan.im> | 2022-03-03 18:09:24 +0100 |
| commit | 7f1255bd4d940a47d5997c02c4ab2312ca5ca5e1 (patch) | |
| tree | e16a739d99c4792965a0656f800c5b23619a638c /src/client/QXmppUserTuneManager.cpp | |
| parent | 476553b5ef6b41912f7b10b29814e30678bd6563 (diff) | |
UserTuneManager: Make use of PEP helpers
Diffstat (limited to 'src/client/QXmppUserTuneManager.cpp')
| -rw-r--r-- | src/client/QXmppUserTuneManager.cpp | 34 |
1 files changed, 3 insertions, 31 deletions
diff --git a/src/client/QXmppUserTuneManager.cpp b/src/client/QXmppUserTuneManager.cpp index 25b4e011..7dcc7f7a 100644 --- a/src/client/QXmppUserTuneManager.cpp +++ b/src/client/QXmppUserTuneManager.cpp @@ -5,9 +5,7 @@ #include "QXmppUserTuneManager.h" #include "QXmppConstants_p.h" -#include "QXmppFutureUtils_p.h" -#include "QXmppPubSubEvent.h" -#include "QXmppPubSubManager.h" +#include "QXmppPep_p.h" #include "QXmppTuneItem.h" using namespace QXmpp::Private; @@ -75,20 +73,7 @@ QStringList QXmppUserTuneManager::discoveryFeatures() const auto QXmppUserTuneManager::request(const QString &jid) -> QFuture<GetResult> { - using PubSub = QXmppPubSubManager; - using Error = QXmppStanza::Error; - - return chain<GetResult>(pubSub()->requestItems<Item>(jid, ns_tune), this, - [](PubSub::ItemsResult<Item> &&result) -> GetResult { - if (const auto items = std::get_if<PubSub::Items<Item>>(&result)) { - if (!items->items.isEmpty()) { - return items->items.takeFirst(); - } - return Error(Error::Cancel, Error::ItemNotFound, QStringLiteral("No tune available.")); - } else { - return std::get<Error>(result); - } - }); + return Pep::request<Item>(pubSub(), jid, ns_tune, this); } /// @@ -105,19 +90,6 @@ auto QXmppUserTuneManager::publish(const QXmppTuneItem &item) /// \cond bool QXmppUserTuneManager::handlePubSubEvent(const QDomElement &element, const QString &pubSubService, const QString &nodeName) { - if (nodeName == ns_tune && QXmppPubSubEvent<Item>::isPubSubEvent(element)) { - QXmppPubSubEvent<Item> event; - event.parse(element); - - if (event.eventType() == QXmppPubSubEventBase::Items) { - if (!event.items().isEmpty()) { - emit itemReceived(pubSubService, event.items().constFirst()); - } else { - emit itemReceived(pubSubService, {}); - } - return true; - } - } - return false; + return Pep::handlePubSubEvent<Item>(element, pubSubService, nodeName, ns_tune, this, &QXmppUserTuneManager::itemReceived); } /// \endcond |
