From 706f78d5b3672754eb7610b58e58324eccb4a0fa Mon Sep 17 00:00:00 2001 From: Benjamin Bouvier Date: Mon, 12 May 2025 16:41:54 +0200 Subject: [PATCH] refactor(timeline): use `TimelineEventKind::HandleAggregation` for edits --- .../src/timeline/event_handler.rs | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/crates/matrix-sdk-ui/src/timeline/event_handler.rs b/crates/matrix-sdk-ui/src/timeline/event_handler.rs index 88b8e01d8..5eb47c115 100644 --- a/crates/matrix-sdk-ui/src/timeline/event_handler.rs +++ b/crates/matrix-sdk-ui/src/timeline/event_handler.rs @@ -137,6 +137,8 @@ pub(super) enum HandleAggregationKind { Reaction { key: String }, Redaction, + + Edit { replacement: Replacement }, } #[derive(Clone, Debug)] @@ -251,6 +253,14 @@ impl TimelineEventKind { } } + AnyMessageLikeEventContent::RoomMessage(RoomMessageEventContent { + relates_to: Some(Relation::Replacement(re)), + .. + }) => Self::HandleAggregation { + related_event: re.event_id.clone(), + kind: HandleAggregationKind::Edit { replacement: re }, + }, + _ => { // Default path: TODO remove Self::Message { content, relations: ev.relations() } @@ -448,16 +458,12 @@ impl<'a, 'o> TimelineEventHandler<'a, 'o> { HandleAggregationKind::Redaction => { self.handle_redaction(related_event); } + HandleAggregationKind::Edit { replacement } => { + self.handle_room_message_edit(replacement); + } }, TimelineEventKind::Message { content, relations } => match content { - AnyMessageLikeEventContent::RoomMessage(RoomMessageEventContent { - relates_to: Some(Relation::Replacement(re)), - .. - }) => { - self.handle_room_message_edit(re); - } - AnyMessageLikeEventContent::RoomMessage(c) => { if should_add { self.handle_room_message(c, relations);