diff options
| author | Linus Jahn <lnj@kaidan.im> | 2022-05-06 16:38:47 +0200 |
|---|---|---|
| committer | Linus Jahn <lnj@kaidan.im> | 2022-08-14 17:32:53 +0200 |
| commit | b6d341f649dd12cd884d43fc6d21dfa8f1bdac95 (patch) | |
| tree | d9321abdf97c0fff647b8bdc9ecb2ce4dcf9fda6 /src | |
| parent | c89d39d66affd6a1c2a299ca424deaf88ea17ba9 (diff) | |
| download | qxmpp-b6d341f649dd12cd884d43fc6d21dfa8f1bdac95.tar.gz | |
Message: Add isCarbonForwarded attribute
It's now also possible to see which messages were carbon forwarded when
using the CarbonManagerV2.
Diffstat (limited to 'src')
| -rw-r--r-- | src/base/QXmppMessage.cpp | 24 | ||||
| -rw-r--r-- | src/base/QXmppMessage.h | 2 | ||||
| -rw-r--r-- | src/client/QXmppCarbonManager.cpp | 1 | ||||
| -rw-r--r-- | src/client/QXmppCarbonManagerV2.cpp | 3 |
4 files changed, 30 insertions, 0 deletions
diff --git a/src/base/QXmppMessage.cpp b/src/base/QXmppMessage.cpp index 2f0fb5fe..3062b227 100644 --- a/src/base/QXmppMessage.cpp +++ b/src/base/QXmppMessage.cpp @@ -106,6 +106,7 @@ public: // XEP-0280: Message Carbons bool privatemsg; + bool isCarbonForwarded; // XEP-0308: Last Message Correction QString replaceId; @@ -159,6 +160,7 @@ QXmppMessagePrivate::QXmppMessagePrivate() receiptRequested(false), attentionRequested(false), privatemsg(false), + isCarbonForwarded(false), markable(false), marker(QXmppMessage::NoMarker), hints(0), @@ -661,6 +663,28 @@ void QXmppMessage::setPrivate(const bool priv) } /// +/// Returns whether this message has been forwarded using carbons. +/// +/// \since QXmpp 1.5 +/// +bool QXmppMessage::isCarbonForwarded() const +{ + return d->isCarbonForwarded; +} + +/// +/// Sets whether this message has been forwarded using carbons. +/// +/// Setting this to true has no effect, this is purely informational. +/// +/// \since QXmpp 1.5 +/// +void QXmppMessage::setCarbonForwarded(bool forwarded) +{ + d->isCarbonForwarded = forwarded; +} + +/// /// Returns the message id to replace with this message as used in \xep{0308}: /// Last Message Correction. If the returned string is empty, this message is /// not replacing another. diff --git a/src/base/QXmppMessage.h b/src/base/QXmppMessage.h index ba6917c4..43949118 100644 --- a/src/base/QXmppMessage.h +++ b/src/base/QXmppMessage.h @@ -173,6 +173,8 @@ public: // XEP-0280: Message Carbons bool isPrivate() const; void setPrivate(const bool); + bool isCarbonForwarded() const; + void setCarbonForwarded(bool); // XEP-0308: Last Message Correction QString replaceId() const; diff --git a/src/client/QXmppCarbonManager.cpp b/src/client/QXmppCarbonManager.cpp index a7d82d6c..fbc2cff1 100644 --- a/src/client/QXmppCarbonManager.cpp +++ b/src/client/QXmppCarbonManager.cpp @@ -91,6 +91,7 @@ bool QXmppCarbonManager::handleStanza(const QDomElement &element) QXmppMessage message; message.parse(messageElement); + message.setCarbonForwarded(true); if (sent) emit messageSent(message); diff --git a/src/client/QXmppCarbonManagerV2.cpp b/src/client/QXmppCarbonManagerV2.cpp index 25b76ec7..0f6aef7b 100644 --- a/src/client/QXmppCarbonManagerV2.cpp +++ b/src/client/QXmppCarbonManagerV2.cpp @@ -101,6 +101,8 @@ auto parseIq(std::variant<QDomElement, SendError> &&sendResult) -> std::optional /// client.addNewExtension<QXmppCarbonManagerV2>(); /// \endcode /// +/// To distinguish carbon messages, you can use QXmppMessage::isCarbonMessage(). +/// /// \ingroup Managers /// /// \since QXmpp 1.5 @@ -133,6 +135,7 @@ bool Manager::handleStanza(const QDomElement &element, const std::optional<QXmpp QXmppMessage message; message.parse(messageElement); + message.setCarbonForwarded(true); injectMessage(std::move(message)); return true; |
