summary refs log tree commit diff
path: root/src/Cache.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Cache.cpp')
-rw-r--r--src/Cache.cpp26
1 files changed, 23 insertions, 3 deletions
diff --git a/src/Cache.cpp b/src/Cache.cpp

index aecf5f7c..329be386 100644 --- a/src/Cache.cpp +++ b/src/Cache.cpp
@@ -3628,9 +3628,29 @@ Cache::saveTimelineMessages(lmdb::txn &txn, te); // overwrite the content and add redation data std::visit( - [redaction](auto &ev) { + [&redaction, &room_id, &txn, &eventsDb, this](auto &ev) { ev.unsigned_data.redacted_because = *redaction; ev.unsigned_data.redacted_by = redaction->event_id; + + if constexpr (isStateEvent_<decltype(ev)>) { + auto statesdb = getStatesDb(txn, room_id); + auto stateskeydb = getStatesKeyDb(txn, room_id); + auto membersdb = getMembersDb(txn, room_id); + mtx::events::StateEvent<mtx::events::msg::Redacted> redactedEvent; + redactedEvent.event_id = ev.event_id; + redactedEvent.state_key = ev.state_key; + redactedEvent.type = ev.type; + nhlog::db()->critical("Redacting: {}", + nlohmann::json(redactedEvent).dump(2)); + + saveStateEvent(txn, + statesdb, + stateskeydb, + membersdb, + eventsDb, + room_id, + mtx::events::collections::StateEvents{redactedEvent}); + } }, te.data); event = mtx::accessors::serialize_event(te.data); @@ -5194,8 +5214,8 @@ to_json(nlohmann::json &j, const MemberInfo &info) void from_json(const nlohmann::json &j, MemberInfo &info) { - info.name = j.at("name").get<std::string>(); - info.avatar_url = j.at("avatar_url").get<std::string>(); + info.name = j.value("name", ""); + info.avatar_url = j.value("avatar_url", ""); info.is_direct = j.value("is_direct", false); info.reason = j.value("reason", ""); }