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 | |
| parent | 0f12fdbecb361e80d87fa1f00b98a4fc8ab55996 (diff) | |
| download | qxmpp-476553b5ef6b41912f7b10b29814e30678bd6563.tar.gz | |
UserTuneManager: Refactoring
Diffstat (limited to 'src/client')
| -rw-r--r-- | src/client/QXmppUserTuneManager.cpp | 36 | ||||
| -rw-r--r-- | src/client/QXmppUserTuneManager.h | 7 |
2 files changed, 26 insertions, 17 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; } diff --git a/src/client/QXmppUserTuneManager.h b/src/client/QXmppUserTuneManager.h index 3f383cbc..21013e33 100644 --- a/src/client/QXmppUserTuneManager.h +++ b/src/client/QXmppUserTuneManager.h @@ -16,17 +16,18 @@ class QXMPP_EXPORT QXmppUserTuneManager : public QXmppPubSubEventManager Q_OBJECT public: - using TuneResult = std::variant<QXmppTuneItem, QXmppStanza::Error>; + using Item = QXmppTuneItem; + using GetResult = std::variant<Item, QXmppStanza::Error>; using PublishResult = std::variant<QString, QXmppStanza::Error>; QXmppUserTuneManager(); QStringList discoveryFeatures() const override; - QFuture<TuneResult> request(const QString &jid); + QFuture<GetResult> request(const QString &jid); QFuture<PublishResult> publish(const QXmppTuneItem &); - Q_SIGNAL void userTuneChanged(const QString &jid, const QXmppTuneItem &); + Q_SIGNAL void itemReceived(const QString &jid, const QXmppTuneItem &item); protected: /// \cond |
