From de7397a20eb05e059d3978fb25c44d306263f5e9 Mon Sep 17 00:00:00 2001 From: Benjamin Bouvier Date: Wed, 15 Jan 2025 11:48:19 +0100 Subject: [PATCH] feat(event cache): handle redacted redactions in the `AllEventsCache` This is unlikely that it will affect us, so not worth adding a test IMO, but for the sake of completeness: this handles redacted redactions in the `AllEventsCache` too. --- crates/matrix-sdk/src/event_cache/mod.rs | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/crates/matrix-sdk/src/event_cache/mod.rs b/crates/matrix-sdk/src/event_cache/mod.rs index d41c54d88..e1c58dc00 100644 --- a/crates/matrix-sdk/src/event_cache/mod.rs +++ b/crates/matrix-sdk/src/event_cache/mod.rs @@ -381,13 +381,23 @@ impl AllEventsCache { }; // Handle redactions separately, as their logic is slightly different. - if let AnySyncMessageLikeEvent::RoomRedaction(SyncRoomRedactionEvent::Original(ev)) = &ev { - if let Some(redacted_event_id) = ev.content.redacts.as_ref().or(ev.redacts.as_ref()) { + if let AnySyncMessageLikeEvent::RoomRedaction(room_redaction) = &ev { + let redacted_event_id = match room_redaction { + SyncRoomRedactionEvent::Original(ev) => { + ev.content.redacts.as_ref().or(ev.redacts.as_ref()) + } + SyncRoomRedactionEvent::Redacted(redacted_redaction) => { + redacted_redaction.content.redacts.as_ref() + } + }; + + if let Some(redacted_event_id) = redacted_event_id { self.relations .entry(redacted_event_id.to_owned()) .or_default() - .insert(ev.event_id.to_owned(), RelationType::Replacement); + .insert(ev.event_id().to_owned(), RelationType::Replacement); } + return; }