diff options
| author | Linus Jahn <lnj@kaidan.im> | 2022-03-03 16:40:38 +0100 |
|---|---|---|
| committer | Linus Jahn <lnj@kaidan.im> | 2022-03-03 18:09:24 +0100 |
| commit | 476553b5ef6b41912f7b10b29814e30678bd6563 (patch) | |
| tree | 8e8c4ffa92cea95e49832d2a142755d8e58874ec /src/client/QXmppUserTuneManager.cpp | |
| parent | 0f12fdbecb361e80d87fa1f00b98a4fc8ab55996 (diff) | |
| download | qxmpp-476553b5ef6b41912f7b10b29814e30678bd6563.tar.gz | |
UserTuneManager: Refactoring
Diffstat (limited to 'src/client/QXmppUserTuneManager.cpp')
| -rw-r--r-- | src/client/QXmppUserTuneManager.cpp | 36 |
1 files changed, 22 insertions, 14 deletions
diff --git a/src/client/QXmppUserTuneManager.cpp b/src/client/QXmppUserTuneManager.cpp index 6cde4e90..25b4e011 100644 --- a/src/client/QXmppUserTuneManager.cpp +++ b/src/client/QXmppUserTuneManager.cpp @@ -32,7 +32,13 @@ using namespace QXmpp::Private; /// /// -/// \typedef QXmppUserTuneManager::TuneResult +/// \typedef QXmppUserTuneManager::Item +/// +/// Used pubsub item type. +/// + +/// +/// \typedef QXmppUserTuneManager::GetResult /// /// Contains the User Tune information or an error. /// @@ -44,9 +50,9 @@ using namespace QXmpp::Private; /// /// -/// \fn QXmppUserTuneManager::userTuneChanged() +/// \fn QXmppUserTuneManager::itemReceived() /// -/// Emitted whenever an \xep{0118, User Tune} items event arrives. +/// Emitted whenever a \xep{0118, User Tune} items event arrives. /// QXmppUserTuneManager::QXmppUserTuneManager() @@ -66,20 +72,21 @@ QStringList QXmppUserTuneManager::discoveryFeatures() const /// /// \param jid The account JID to request. /// -QFuture<QXmppUserTuneManager::TuneResult> QXmppUserTuneManager::request(const QString &jid) +auto QXmppUserTuneManager::request(const QString &jid) + -> QFuture<GetResult> { using PubSub = QXmppPubSubManager; using Error = QXmppStanza::Error; - return chain<TuneResult>(pubSub()->requestItems<QXmppTuneItem>(jid, ns_tune), this, - [](PubSub::ItemsResult<QXmppTuneItem> &&result) -> TuneResult { - if (const auto items = std::get_if<PubSub::Items<QXmppTuneItem>>(&result)) { + 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.constFirst(); + return items->items.takeFirst(); } return Error(Error::Cancel, Error::ItemNotFound, QStringLiteral("No tune available.")); } else { - return std::get<QXmppStanza::Error>(result); + return std::get<Error>(result); } }); } @@ -89,7 +96,8 @@ QFuture<QXmppUserTuneManager::TuneResult> QXmppUserTuneManager::request(const QS /// /// \param item The User Tune item to be published. /// -QFuture<QXmppUserTuneManager::PublishResult> QXmppUserTuneManager::publish(const QXmppTuneItem &item) +auto QXmppUserTuneManager::publish(const QXmppTuneItem &item) + -> QFuture<PublishResult> { return pubSub()->publishPepItem(ns_tune, item); } @@ -97,15 +105,15 @@ QFuture<QXmppUserTuneManager::PublishResult> QXmppUserTuneManager::publish(const /// \cond bool QXmppUserTuneManager::handlePubSubEvent(const QDomElement &element, const QString &pubSubService, const QString &nodeName) { - if (nodeName == ns_tune && QXmppPubSubEvent<QXmppTuneItem>::isPubSubEvent(element)) { - QXmppPubSubEvent<QXmppTuneItem> event; + if (nodeName == ns_tune && QXmppPubSubEvent<Item>::isPubSubEvent(element)) { + QXmppPubSubEvent<Item> event; event.parse(element); if (event.eventType() == QXmppPubSubEventBase::Items) { if (!event.items().isEmpty()) { - emit userTuneChanged(pubSubService, event.items().constFirst()); + emit itemReceived(pubSubService, event.items().constFirst()); } else { - emit userTuneChanged(pubSubService, {}); + emit itemReceived(pubSubService, {}); } return true; } |
