aboutsummaryrefslogtreecommitdiff
path: root/src/client/QXmppPep_p.h
diff options
context:
space:
mode:
authorLinus Jahn <lnj@kaidan.im>2023-01-22 18:06:09 +0100
committerLinus Jahn <lnj@kaidan.im>2023-01-22 18:10:44 +0100
commit46f3831fd238b4c1fb10d44e4531d9e59d574c97 (patch)
treef21c85c98502ef3821d52ee4964060a2c49885d2 /src/client/QXmppPep_p.h
parentdf37c35aa443e6ca7e3baad5f1bbeb379063df55 (diff)
downloadqxmpp-46f3831fd238b4c1fb10d44e4531d9e59d574c97.tar.gz
Use QXmppError in all IQ results instead of StanzaError
This allows us to report different error types with more information and makes it possible to distinguish stanza errors and errors generated locally. Part of #501.
Diffstat (limited to 'src/client/QXmppPep_p.h')
-rw-r--r--src/client/QXmppPep_p.h9
1 files changed, 4 insertions, 5 deletions
diff --git a/src/client/QXmppPep_p.h b/src/client/QXmppPep_p.h
index aafc6520..ea7f0440 100644
--- a/src/client/QXmppPep_p.h
+++ b/src/client/QXmppPep_p.h
@@ -8,23 +8,22 @@
namespace QXmpp::Private::Pep {
template<typename T>
-using GetResult = std::variant<T, QXmppStanza::Error>;
-using PublishResult = std::variant<QString, QXmppStanza::Error>;
+using GetResult = std::variant<T, QXmppError>;
+using PublishResult = std::variant<QString, QXmppError>;
template<typename ItemT>
inline QXmppTask<GetResult<ItemT>> request(QXmppPubSubManager *pubSub, const QString &jid, const QString &nodeName, QObject *parent)
{
using PubSub = QXmppPubSubManager;
- using Error = QXmppStanza::Error;
auto process = [](PubSub::ItemsResult<ItemT> &&result) -> GetResult<ItemT> {
if (const auto itemsResult = std::get_if<PubSub::Items<ItemT>>(&result)) {
if (!itemsResult->items.isEmpty()) {
return itemsResult->items.takeFirst();
}
- return Error(Error::Cancel, Error::ItemNotFound, QStringLiteral("User has no published items."));
+ return QXmppError { QStringLiteral("User has no published items."), {} };
} else {
- return std::get<Error>(result);
+ return std::get<QXmppError>(std::move(result));
}
};
return chain<GetResult<ItemT>>(pubSub->requestItems<ItemT>(jid, nodeName), parent, process);