aboutsummaryrefslogtreecommitdiff
path: root/src/client
diff options
context:
space:
mode:
authorLinus Jahn <lnj@kaidan.im>2022-05-06 17:08:57 +0200
committerLinus Jahn <lnj@kaidan.im>2022-05-20 17:28:43 +0200
commitcb8029c7644f3d31503ccea7b14f546589c7c326 (patch)
tree579d4086079640166a99b354baa9a7bbf083d2da /src/client
parent62e2248c30d72ff9c8e2a9acc265d8c39f3c83ca (diff)
downloadqxmpp-cb8029c7644f3d31503ccea7b14f546589c7c326.tar.gz
MessageReceiptHandler: Implement MessageHandler
Diffstat (limited to 'src/client')
-rw-r--r--src/client/QXmppMessageReceiptManager.cpp14
-rw-r--r--src/client/QXmppMessageReceiptManager.h8
2 files changed, 9 insertions, 13 deletions
diff --git a/src/client/QXmppMessageReceiptManager.cpp b/src/client/QXmppMessageReceiptManager.cpp
index 23066bd9..b8e5c90e 100644
--- a/src/client/QXmppMessageReceiptManager.cpp
+++ b/src/client/QXmppMessageReceiptManager.cpp
@@ -26,17 +26,11 @@ QStringList QXmppMessageReceiptManager::discoveryFeatures() const
return QStringList(ns_message_receipts);
}
-bool QXmppMessageReceiptManager::handleStanza(const QDomElement &stanza)
+bool QXmppMessageReceiptManager::handleMessage(const QXmppMessage &message)
{
- if (stanza.tagName() != "message")
+ if (message.type() == QXmppMessage::Error) {
return false;
-
- QXmppMessage message;
- message.parse(stanza);
-
- if (message.type() == QXmppMessage::Error)
- return false;
-
+ }
// Handle receipts and cancel any further processing.
if (!message.receiptId().isEmpty()) {
// Buggy clients also mark carbon messages as received; to avoid this
@@ -52,7 +46,7 @@ bool QXmppMessageReceiptManager::handleStanza(const QDomElement &stanza)
QXmppMessage receipt;
receipt.setTo(message.from());
receipt.setReceiptId(message.id());
- client()->sendPacket(receipt);
+ client()->reply(std::move(receipt), message.e2eeMetadata());
}
// Continue processing.
diff --git a/src/client/QXmppMessageReceiptManager.h b/src/client/QXmppMessageReceiptManager.h
index ad852b22..66d91f67 100644
--- a/src/client/QXmppMessageReceiptManager.h
+++ b/src/client/QXmppMessageReceiptManager.h
@@ -7,14 +7,16 @@
#define QXMPPMESSAGERECEIPTMANAGER_H
#include "QXmppClientExtension.h"
+#include "QXmppMessageHandler.h"
+///
/// \brief The QXmppMessageReceiptManager class makes it possible to
/// send and receive message delivery receipts as defined in
/// \xep{0184}: Message Delivery Receipts.
///
/// \ingroup Managers
-
-class QXMPP_EXPORT QXmppMessageReceiptManager : public QXmppClientExtension
+///
+class QXMPP_EXPORT QXmppMessageReceiptManager : public QXmppClientExtension, public QXmppMessageHandler
{
Q_OBJECT
public:
@@ -22,7 +24,7 @@ public:
/// \cond
QStringList discoveryFeatures() const override;
- bool handleStanza(const QDomElement &stanza) override;
+ bool handleMessage(const QXmppMessage &) override;
/// \endcond
Q_SIGNALS: