diff options
| author | Linus Jahn <lnj@kaidan.im> | 2022-05-06 17:08:57 +0200 |
|---|---|---|
| committer | Linus Jahn <lnj@kaidan.im> | 2022-05-20 17:28:43 +0200 |
| commit | cb8029c7644f3d31503ccea7b14f546589c7c326 (patch) | |
| tree | 579d4086079640166a99b354baa9a7bbf083d2da /src | |
| parent | 62e2248c30d72ff9c8e2a9acc265d8c39f3c83ca (diff) | |
| download | qxmpp-cb8029c7644f3d31503ccea7b14f546589c7c326.tar.gz | |
MessageReceiptHandler: Implement MessageHandler
Diffstat (limited to 'src')
| -rw-r--r-- | src/client/QXmppMessageReceiptManager.cpp | 14 | ||||
| -rw-r--r-- | src/client/QXmppMessageReceiptManager.h | 8 |
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: |
