aboutsummaryrefslogtreecommitdiff
path: root/src/client/QXmppUserTuneManager.cpp
diff options
context:
space:
mode:
authorLinus Jahn <lnj@kaidan.im>2022-03-03 17:04:06 +0100
committerLinus Jahn <lnj@kaidan.im>2022-03-03 18:09:24 +0100
commit7f1255bd4d940a47d5997c02c4ab2312ca5ca5e1 (patch)
treee16a739d99c4792965a0656f800c5b23619a638c /src/client/QXmppUserTuneManager.cpp
parent476553b5ef6b41912f7b10b29814e30678bd6563 (diff)
UserTuneManager: Make use of PEP helpers
Diffstat (limited to 'src/client/QXmppUserTuneManager.cpp')
-rw-r--r--src/client/QXmppUserTuneManager.cpp34
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