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 | |
| parent | 62e2248c30d72ff9c8e2a9acc265d8c39f3c83ca (diff) | |
| download | qxmpp-cb8029c7644f3d31503ccea7b14f546589c7c326.tar.gz | |
MessageReceiptHandler: Implement MessageHandler
| -rw-r--r-- | src/client/QXmppMessageReceiptManager.cpp | 14 | ||||
| -rw-r--r-- | src/client/QXmppMessageReceiptManager.h | 8 | ||||
| -rw-r--r-- | tests/qxmppmessagereceiptmanager/tst_qxmppmessagereceiptmanager.cpp | 4 |
3 files changed, 12 insertions, 14 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: diff --git a/tests/qxmppmessagereceiptmanager/tst_qxmppmessagereceiptmanager.cpp b/tests/qxmppmessagereceiptmanager/tst_qxmppmessagereceiptmanager.cpp index f9fef962..71c114b5 100644 --- a/tests/qxmppmessagereceiptmanager/tst_qxmppmessagereceiptmanager.cpp +++ b/tests/qxmppmessagereceiptmanager/tst_qxmppmessagereceiptmanager.cpp @@ -165,8 +165,10 @@ void tst_QXmppMessageReceiptManager::testReceipt() QDomDocument doc; QVERIFY(doc.setContent(xml, true)); QDomElement element = doc.documentElement(); + QXmppMessage msg; + msg.parse(element); - QCOMPARE(m_manager->handleStanza(element), handled); + QCOMPARE(m_manager->handleMessage(msg), handled); QCOMPARE(m_messageDelivered, accept); QCOMPARE(m_receiptSent, sent); } |
