From 6efebe555d30170c2ecfc2372113f342c513b0c2 Mon Sep 17 00:00:00 2001 From: Linus Jahn Date: Fri, 30 Dec 2022 23:35:47 +0100 Subject: Replace QXmpp::SendError with QXmppError everywhere Part of #501. --- src/client/QXmppCarbonManagerV2.cpp | 16 +++++++++------- src/client/QXmppClient.cpp | 12 ++++++------ src/client/QXmppClient.h | 2 +- src/client/QXmppE2eeExtension.h | 6 +++--- src/client/QXmppMamManager.cpp | 3 +-- 5 files changed, 20 insertions(+), 19 deletions(-) (limited to 'src/client') diff --git a/src/client/QXmppCarbonManagerV2.cpp b/src/client/QXmppCarbonManagerV2.cpp index fa162612..1c3a6fcc 100644 --- a/src/client/QXmppCarbonManagerV2.cpp +++ b/src/client/QXmppCarbonManagerV2.cpp @@ -62,7 +62,7 @@ auto firstChildElement(const QDomElement &el, const char *tagName, const char *x return QDomElement(); } -auto parseIq(std::variant &&sendResult) -> std::optional +auto parseIq(std::variant &&sendResult) -> std::optional { if (auto el = std::get_if(&sendResult)) { auto iqType = el->attribute(QStringLiteral("type")); @@ -71,11 +71,13 @@ auto parseIq(std::variant &&sendResult) -> std::optional } QXmppIq iq; iq.parse(*el); - return iq.error(); - } else if (auto err = std::get_if(&sendResult)) { - using Error = QXmppStanza::Error; - return Error(Error::Wait, Error::UndefinedCondition, - QStringLiteral("Couldn't send request: ") + err->text); + if (auto error = iq.errorOptional()) { + return QXmppError { error->text(), std::move(*error) }; + } + // Only happens with IQs with type=error, but no element + return QXmppError { QStringLiteral("Unknown error received."), QXmppStanza::Error() }; + } else if (auto err = std::get_if(&sendResult)) { + return *err; } return {}; } @@ -163,7 +165,7 @@ void QXmppCarbonManagerV2::enableCarbons() await(client()->sendIq(CarbonEnableIq()), this, [this](QXmppClient::IqResult domResult) { if (auto err = parseIq(std::move(domResult))) { - warning("Could not enable message carbons: " % err->text()); + warning("Could not enable message carbons: " % err->description); } else { info("Message Carbons enabled."); } diff --git a/src/client/QXmppClient.cpp b/src/client/QXmppClient.cpp index a6d55fa8..c0d7ee42 100644 --- a/src/client/QXmppClient.cpp +++ b/src/client/QXmppClient.cpp @@ -423,7 +423,7 @@ QFuture QXmppClient::send(QXmppStanza &&stanza, const std::op reportFinishedResult(interface, result); }); } else { - reportFinishedResult(interface, { std::get(result) }); + reportFinishedResult(interface, { std::get(result) }); } }); @@ -526,7 +526,7 @@ QFuture QXmppClient::sendSensitiveIq(QXmppIq &&iq, const await(future, this, [this, interface](QXmppStream::IqResult result) mutable { if (const auto encryptedDom = std::get_if(&result)) { if (!isIqResponse(*encryptedDom)) { - QXmpp::SendError err { + QXmppError err { QStringLiteral("Invalid IQ response received."), QXmpp::SendError::EncryptionError }; @@ -543,24 +543,24 @@ QFuture QXmppClient::sendSensitiveIq(QXmppIq &&iq, const // the IQ response from the other entity was not encrypted // then report IQ response without modifications interface.reportResult(encryptedDom); - } else if (const auto error = std::get_if(&result)) { + } else if (const auto error = std::get_if(&result)) { interface.reportResult(*error); } interface.reportFinished(); }); } else { - interface.reportResult(QXmpp::SendError { + interface.reportResult(QXmppError { QStringLiteral("No decryption extension found."), QXmpp::SendError::EncryptionError }); interface.reportFinished(); } } else { - interface.reportResult(std::get(result)); + interface.reportResult(std::get(result)); interface.reportFinished(); } }); } else { - interface.reportResult(std::get(result)); + interface.reportResult(std::get(result)); interface.reportFinished(); } }); diff --git a/src/client/QXmppClient.h b/src/client/QXmppClient.h index daca8cc9..e99937cb 100644 --- a/src/client/QXmppClient.h +++ b/src/client/QXmppClient.h @@ -90,7 +90,7 @@ class QXMPP_EXPORT QXmppClient : public QXmppLoggable Q_PROPERTY(State state READ state NOTIFY stateChanged) public: - using IqResult = std::variant; + using IqResult = std::variant; using EmptyResult = std::variant; /// An enumeration for type of error. diff --git a/src/client/QXmppE2eeExtension.h b/src/client/QXmppE2eeExtension.h index 295de1a3..f65fec45 100644 --- a/src/client/QXmppE2eeExtension.h +++ b/src/client/QXmppE2eeExtension.h @@ -25,10 +25,10 @@ public: { }; - using MessageEncryptResult = std::variant; + using MessageEncryptResult = std::variant; using MessageDecryptResult = std::variant; - using IqEncryptResult = std::variant; - using IqDecryptResult = std::variant; + using IqEncryptResult = std::variant; + using IqDecryptResult = std::variant; virtual QFuture encryptMessage(QXmppMessage &&, const std::optional &) = 0; virtual QFuture decryptMessage(QXmppMessage &&) = 0; diff --git a/src/client/QXmppMamManager.cpp b/src/client/QXmppMamManager.cpp index 9050c02f..125e9a48 100644 --- a/src/client/QXmppMamManager.cpp +++ b/src/client/QXmppMamManager.cpp @@ -300,8 +300,7 @@ QFuture QXmppMamManager::retrieveMessages(const d->ongoingRequests.erase(itr); } } else { - auto &error = std::get(result); - itr->second.interface.reportResult(QXmppError { error.text, error }); + itr->second.interface.reportResult(std::get(result)); itr->second.interface.reportFinished(); d->ongoingRequests.erase(itr); } -- cgit v1.2.3