@@ -19,9 +19,12 @@ use as_variant::as_variant;
1919use content:: { InReplyToDetails , RepliedToEventDetails } ;
2020use eyeball_im:: VectorDiff ;
2121use futures_util:: { pin_mut, StreamExt as _} ;
22- use matrix_sdk:: attachment:: {
23- AttachmentConfig , AttachmentInfo , BaseAudioInfo , BaseFileInfo , BaseImageInfo ,
24- BaseThumbnailInfo , BaseVideoInfo , Thumbnail ,
22+ use matrix_sdk:: {
23+ attachment:: {
24+ AttachmentConfig , AttachmentInfo , BaseAudioInfo , BaseFileInfo , BaseImageInfo ,
25+ BaseThumbnailInfo , BaseVideoInfo , Thumbnail ,
26+ } ,
27+ Error ,
2528} ;
2629use matrix_sdk_ui:: timeline:: {
2730 EventItemOrigin , LiveBackPaginationStatus , Profile , RepliedToEvent , TimelineDetails ,
@@ -636,23 +639,29 @@ impl Timeline {
636639 ) -> Result < InReplyToDetails , ClientError > {
637640 let event_id = EventId :: parse ( & event_id_str) ?;
638641
639- match self . inner . room ( ) . event ( & event_id) . await {
640- Ok ( timeline_event) => {
641- let replied_to = RepliedToEvent :: try_from_timeline_event_for_room (
642- timeline_event,
643- self . inner . room ( ) ,
644- )
645- . await ?;
646-
647- Ok ( InReplyToDetails :: new (
648- event_id_str,
649- RepliedToEventDetails :: Ready {
650- content : Arc :: new ( TimelineItemContent ( replied_to. content ( ) . clone ( ) ) ) ,
651- sender : replied_to. sender ( ) . to_string ( ) ,
652- sender_profile : replied_to. sender_profile ( ) . into ( ) ,
653- } ,
654- ) )
655- }
642+ let replied_to: Result < RepliedToEvent , Error > =
643+ if let Some ( event) = self . inner . item_by_event_id ( & event_id) . await {
644+ Ok ( RepliedToEvent :: from_timeline_item ( & event) )
645+ } else {
646+ match self . inner . room ( ) . event ( & event_id) . await {
647+ Ok ( timeline_event) => Ok ( RepliedToEvent :: try_from_timeline_event_for_room (
648+ timeline_event,
649+ self . inner . room ( ) ,
650+ )
651+ . await ?) ,
652+ Err ( e) => Err ( e) ,
653+ }
654+ } ;
655+
656+ match replied_to {
657+ Ok ( replied_to) => Ok ( InReplyToDetails :: new (
658+ event_id_str,
659+ RepliedToEventDetails :: Ready {
660+ content : Arc :: new ( TimelineItemContent ( replied_to. content ( ) . clone ( ) ) ) ,
661+ sender : replied_to. sender ( ) . to_string ( ) ,
662+ sender_profile : replied_to. sender_profile ( ) . into ( ) ,
663+ } ,
664+ ) ) ,
656665
657666 Err ( e) => Ok ( InReplyToDetails :: new (
658667 event_id_str,
0 commit comments