aboutsummaryrefslogtreecommitdiff
path: root/src/base/QXmppMessage.cpp
diff options
context:
space:
mode:
authorMelvin Keskin <melvo@olomono.de>2021-03-08 20:11:22 +0100
committerGitHub <noreply@github.com>2021-03-08 20:11:22 +0100
commit8efc8ea6aef64455bca04b11c3c4b0e20b532484 (patch)
tree8eced49da7e56f833cfb8534f4ead5261493e67f /src/base/QXmppMessage.cpp
parent9a1134a415cd550dcb6efd35bd1cf98b8faa236e (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.cpp40
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;