Skip to content
Snippets Groups Projects
Commit 70fa15de authored by Nicolas Werner's avatar Nicolas Werner
Browse files

Apply replacement logic when parsing replacement events

parent f73822db
No related branches found
No related tags found
No related merge requests found
......@@ -5,6 +5,7 @@
#include "mtx/events/unknown.hpp"
namespace mtx::events {
template<class Content>
[[gnu::used, llvm::used]] void
to_json(json &obj, const Event<Content> &event)
......@@ -21,9 +22,20 @@ template<class Content>
[[gnu::used, llvm::used]] void
from_json(const json &obj, Event<Content> &event)
{
event.content = obj.at("content").get<Content>();
event.type = getEventType(obj.at("type").get<std::string>());
event.sender = obj.value("sender", "");
if (obj.at("content").contains("m.new_content")) {
auto new_content = obj.at("content");
for (const auto &e : obj["content"]["m.new_content"].items()) {
if (e.key() != "m.relates_to" &&
e.key() != "im.nheko.relations.v1.relations")
new_content[e.key()] = e.value();
}
event.content = new_content.get<Content>();
} else {
event.content = obj.at("content").get<Content>();
}
event.type = getEventType(obj.at("type").get<std::string>());
event.sender = obj.value("sender", "");
if constexpr (std::is_same_v<Unknown, Content>)
event.content.type = obj.at("type").get<std::string>();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment