aboutsummaryrefslogtreecommitdiff
path: root/lib/events/roommessageevent.cpp
diff options
context:
space:
mode:
authorAlexey Rusakov <Kitsune-Ral@users.sf.net>2022-01-20 17:35:28 +0100
committerAlexey Rusakov <Kitsune-Ral@users.sf.net>2022-01-21 02:04:34 +0100
commit0689028f4a0db403a55c6158e750fee3ba6c7098 (patch)
tree3ed19ca0d668ede91a094bd04e704492593486d5 /lib/events/roommessageevent.cpp
parentfdff209744ac4c422f63fe2549aa0132df7e6292 (diff)
downloadlibquotient-0689028f4a0db403a55c6158e750fee3ba6c7098.tar.gz
libquotient-0689028f4a0db403a55c6158e750fee3ba6c7098.zip
Refactor assembleContentJson()
Get rid of that Q_ASSERT() in the middle that only worked in Debug builds anyway.
Diffstat (limited to 'lib/events/roommessageevent.cpp')
-rw-r--r--lib/events/roommessageevent.cpp43
1 files changed, 22 insertions, 21 deletions
diff --git a/lib/events/roommessageevent.cpp b/lib/events/roommessageevent.cpp
index c07a4f3c..d63352cb 100644
--- a/lib/events/roommessageevent.cpp
+++ b/lib/events/roommessageevent.cpp
@@ -95,32 +95,33 @@ QJsonObject RoomMessageEvent::assembleContentJson(const QString& plainBody,
const QString& jsonMsgType,
TypedBase* content)
{
- auto json = content ? content->toJson() : QJsonObject();
- if (json.contains(RelatesToKey)) {
+ QJsonObject json;
+ if (content) {
+ // TODO: replace with content->fillJson(json) when it starts working
+ json = content->toJson();
if (jsonMsgType != TextTypeKey && jsonMsgType != NoticeTypeKey
&& jsonMsgType != EmoteTypeKey) {
- json.remove(RelatesToKey);
- qCWarning(EVENTS)
- << RelatesToKey << "cannot be used in" << jsonMsgType
- << "messages; the relation has been stripped off";
- } else {
- // After the above, we know for sure that the content is TextContent
- // and that its EventRelation structure is not omitted
- auto* textContent = static_cast<const TextContent*>(content);
- Q_ASSERT(textContent && textContent->relatesTo.has_value());
- if (textContent->relatesTo->type == EventRelation::ReplacementType) {
- auto newContentJson = json.take("m.new_content"_ls).toObject();
- newContentJson.insert(BodyKey, plainBody);
- newContentJson.insert(MsgTypeKey, jsonMsgType);
- json.insert(QStringLiteral("m.new_content"), newContentJson);
- json[MsgTypeKey] = jsonMsgType;
- json[BodyKeyL] = "* " + plainBody;
- return json;
+ if (json.contains(RelatesToKey)) {
+ json.remove(RelatesToKey);
+ qCWarning(EVENTS)
+ << RelatesToKey << "cannot be used in" << jsonMsgType
+ << "messages; the relation has been stripped off";
}
+ } else if (auto* textContent = static_cast<const TextContent*>(content);
+ textContent->relatesTo
+ && textContent->relatesTo->type
+ == EventRelation::ReplacementType) {
+ auto newContentJson = json.take("m.new_content"_ls).toObject();
+ newContentJson.insert(BodyKey, plainBody);
+ newContentJson.insert(MsgTypeKey, jsonMsgType);
+ json.insert(QStringLiteral("m.new_content"), newContentJson);
+ json[MsgTypeKey] = jsonMsgType;
+ json[BodyKeyL] = "* " + plainBody;
+ return json;
}
}
- json.insert(QStringLiteral("msgtype"), jsonMsgType);
- json.insert(QStringLiteral("body"), plainBody);
+ json.insert(MsgTypeKey, jsonMsgType);
+ json.insert(BodyKey, plainBody);
return json;
}