diff options
| author | Melvin Keskin <melvo@olomono.de> | 2021-03-08 20:11:22 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-03-08 20:11:22 +0100 |
| commit | 8efc8ea6aef64455bca04b11c3c4b0e20b532484 (patch) | |
| tree | 8eced49da7e56f833cfb8534f4ead5261493e67f /src/base/QXmppMessage.cpp | |
| parent | 9a1134a415cd550dcb6efd35bd1cf98b8faa236e (diff) | |
Implement MIX-MISC XEP-0407: Invitation message extension (#329)
This implements the message extension for MIX invitations from
XEP-0407: Mediated Information eXchange (MIX): Miscellaneous
Capabilities in version 0.1.2.
https://xmpp.org/extensions/xep-0407.html#usecase-user-invite
Diffstat (limited to 'src/base/QXmppMessage.cpp')
| -rw-r--r-- | src/base/QXmppMessage.cpp | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/base/QXmppMessage.cpp b/src/base/QXmppMessage.cpp index c859a49a..51b373af 100644 --- a/src/base/QXmppMessage.cpp +++ b/src/base/QXmppMessage.cpp @@ -27,8 +27,11 @@ #include "QXmppBitsOfBinaryDataList.h" #include "QXmppConstants_p.h" +#include "QXmppMixInvitation.h" #include "QXmppUtils.h" +#include <optional> + #include <QDateTime> #include <QDomElement> #include <QTextStream> @@ -167,6 +170,9 @@ public: bool isSpoiler; QString spoilerHint; + // XEP-0407: Mediated Information eXchange (MIX): Miscellaneous Capabilities + std::optional<QXmppMixInvitation> mixInvitation; + // XEP-0428: Fallback Indication bool isFallback; }; @@ -1074,6 +1080,30 @@ void QXmppMessage::setSpoilerHint(const QString &spoilerHint) } /// +/// Returns an included \xep{0369}: Mediated Information eXchange (MIX) +/// invitation as defined by \xep{0407}: Mediated Information eXchange (MIX): +/// Miscellaneous Capabilities. +/// +/// \since QXmpp 1.4 +/// +std::optional<QXmppMixInvitation> QXmppMessage::mixInvitation() const +{ + return d->mixInvitation; +} + +/// +/// Sets a \xep{0369}: Mediated Information eXchange (MIX) invitation as defined +/// by \xep{0407}: Mediated Information eXchange (MIX): Miscellaneous +/// Capabilities. +/// +/// \since QXmpp 1.4 +/// +void QXmppMessage::setMixInvitation(const std::optional<QXmppMixInvitation> &mixInvitation) +{ + d->mixInvitation = mixInvitation; +} + +/// /// Sets whether this message is only a fallback according to \xep{0428}: /// Fallback Indication. /// @@ -1327,6 +1357,11 @@ void QXmppMessage::toXml(QXmlStreamWriter *xmlWriter) const xmlWriter->writeEndElement(); } + // XEP-0407: Mediated Information eXchange (MIX): Miscellaneous Capabilities + if (d->mixInvitation) { + d->mixInvitation->toXml(xmlWriter); + } + // XEP-0428: Fallback Indication if (d->isFallback) { xmlWriter->writeStartElement(QStringLiteral("fallback")); @@ -1436,6 +1471,11 @@ void QXmppMessage::parseExtension(const QDomElement &element, QXmppElementList & // XEP-0382: Spoiler messages d->isSpoiler = true; d->spoilerHint = element.text(); + } else if (checkElement(element, QStringLiteral("invitation"), ns_mix_misc)) { + // XEP-0407: Mediated Information eXchange (MIX): Miscellaneous Capabilities + QXmppMixInvitation mixInvitation; + mixInvitation.parse(element); + d->mixInvitation = mixInvitation; } else if (checkElement(element, QStringLiteral("fallback"), ns_fallback_indication)) { // XEP-0428: Fallback Indication d->isFallback = true; |
