From 4ec8bec2fc03ec93e32221d5a377d899f74f0f1b Mon Sep 17 00:00:00 2001 From: Jonas Platte Date: Tue, 27 Jun 2023 17:39:49 +0200 Subject: [PATCH] ui: Treat thread fallback the same as a regular reply MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit … for now, until we add proper support for threads. --- .../src/timeline/event_item/content.rs | 32 ++++++++++++------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/crates/matrix-sdk-ui/src/timeline/event_item/content.rs b/crates/matrix-sdk-ui/src/timeline/event_item/content.rs index ed04226f3..e9981a78c 100644 --- a/crates/matrix-sdk-ui/src/timeline/event_item/content.rs +++ b/crates/matrix-sdk-ui/src/timeline/event_item/content.rs @@ -170,19 +170,11 @@ impl Message { let in_reply_to = c.relates_to.and_then(|relation| match relation { message::Relation::Reply { in_reply_to } => { - let event_id = in_reply_to.event_id; - let event = timeline_items - .iter() - .filter_map(|it| it.as_event()) - .find(|it| it.event_id() == Some(&*event_id)) - .and_then(RepliedToEvent::from_timeline_item) - .map(Box::new); - - Some(InReplyToDetails { - event_id, - event: TimelineDetails::from_initial_value(event), - }) + Some(InReplyToDetails::new(in_reply_to.event_id, timeline_items)) } + message::Relation::Thread(thread) => thread + .in_reply_to + .map(|in_reply_to| InReplyToDetails::new(in_reply_to.event_id, timeline_items)), _ => None, }); @@ -272,6 +264,22 @@ pub struct InReplyToDetails { pub event: TimelineDetails>, } +impl InReplyToDetails { + pub fn new( + event_id: OwnedEventId, + timeline_items: &Vector>, + ) -> InReplyToDetails { + let event = timeline_items + .iter() + .filter_map(|it| it.as_event()) + .find(|it| it.event_id() == Some(&*event_id)) + .and_then(RepliedToEvent::from_timeline_item) + .map(Box::new); + + InReplyToDetails { event_id, event: TimelineDetails::from_initial_value(event) } + } +} + /// An event that is replied to. #[derive(Clone, Debug)] pub struct RepliedToEvent {