Improve state event redaction
This commit is contained in:
parent
ef53644155
commit
c543b2d4fa
3 changed files with 41 additions and 10 deletions
|
|
@ -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", "");
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue