@@ -51,6 +51,7 @@ use ruma::{
5151 redaction:: RoomRedactionEventContent ,
5252 } ,
5353 AnyMessageLikeEventContent , AnySyncMessageLikeEvent , AnySyncTimelineEvent ,
54+ SyncMessageLikeEvent ,
5455 } ,
5556 serde:: Raw ,
5657 uint, EventId , MilliSecondsSinceUnixEpoch , OwnedEventId , OwnedTransactionId , OwnedUserId ,
@@ -411,39 +412,32 @@ impl Timeline {
411412 return timeline_item. replied_to_info ( ) ;
412413 }
413414
414- let event = match self . room ( ) . event ( event_id) . await {
415- Ok ( event) => event,
416- Err ( error) => {
417- error ! ( "Failed to fetch event with ID {event_id} with error: {error}" ) ;
418- return Err ( UnsupportedReplyItem :: MISSING_EVENT ) ;
419- }
420- } ;
415+ let event = self . room ( ) . event ( event_id) . await . map_err ( |error| {
416+ error ! ( "Failed to fetch event with ID {event_id} with error: {error}" ) ;
417+ UnsupportedReplyItem :: MISSING_EVENT
418+ } ) ?;
421419
422- // We need to get the content and we can do that by casting
423- // the event as a `AnySyncTimelineEvent` which is the same as a
424- // `AnyTimelineEvent`, but without the `room_id` field.
425- // The cast is valid because we are just losing track of such field.
420+ // We need to get the content and we can do that by casting the event as a
421+ // `AnySyncTimelineEvent` which is the same as a `AnyTimelineEvent`, but without
422+ // the `room_id` field. The cast is valid because we are just losing
423+ // track of such field.
426424 let raw_sync_event: Raw < AnySyncTimelineEvent > = event. event . cast ( ) ;
427- let sync_event = match raw_sync_event. deserialize ( ) {
428- Ok ( event) => event,
429- Err ( error) => {
430- error ! ( "Failed to deserialize event with ID {event_id} with error: {error}" ) ;
431- return Err ( UnsupportedReplyItem :: FAILED_TO_DESERIALIZE_EVENT ) ;
432- }
433- } ;
425+ let sync_event = raw_sync_event. deserialize ( ) . map_err ( |error| {
426+ error ! ( "Failed to deserialize event with ID {event_id} with error: {error}" ) ;
427+ UnsupportedReplyItem :: FAILED_TO_DESERIALIZE_EVENT
428+ } ) ?;
434429
435430 let reply_content = match & sync_event {
436431 AnySyncTimelineEvent :: MessageLike ( message_like_event) => {
437- if let AnySyncMessageLikeEvent :: RoomMessage ( message_event) = message_like_event {
438- if let Some ( original_message) = message_event. as_original ( ) {
439- ReplyContent :: Message ( Message :: from_event (
440- original_message. content . clone ( ) ,
441- message_like_event. relations ( ) ,
442- & self . items ( ) . await ,
443- ) )
444- } else {
445- ReplyContent :: Raw ( raw_sync_event)
446- }
432+ if let AnySyncMessageLikeEvent :: RoomMessage ( SyncMessageLikeEvent :: Original (
433+ original_message,
434+ ) ) = message_like_event
435+ {
436+ ReplyContent :: Message ( Message :: from_event (
437+ original_message. content . clone ( ) ,
438+ message_like_event. relations ( ) ,
439+ & self . items ( ) . await ,
440+ ) )
447441 } else {
448442 ReplyContent :: Raw ( raw_sync_event)
449443 }
@@ -518,46 +512,39 @@ impl Timeline {
518512 return timeline_item. edit_info ( ) ;
519513 }
520514
521- let event = match self . room ( ) . event ( event_id) . await {
522- Ok ( event) => event,
523- Err ( error) => {
524- error ! ( "Failed to fetch event with ID {event_id} with error: {error}" ) ;
525- return Err ( UnsupportedEditItem :: MISSING_EVENT ) ;
526- }
527- } ;
515+ let event = self . room ( ) . event ( event_id) . await . map_err ( |error| {
516+ error ! ( "Failed to fetch event with ID {event_id} with error: {error}" ) ;
517+ UnsupportedEditItem :: MISSING_EVENT
518+ } ) ?;
528519
529520 // We need to get the content and we can do that by casting
530521 // the event as a `AnySyncTimelineEvent` which is the same as a
531522 // `AnyTimelineEvent`, but without the `room_id` field.
532523 // The cast is valid because we are just losing track of such field.
533524 let raw_sync_event: Raw < AnySyncTimelineEvent > = event. event . cast ( ) ;
534- let event = match raw_sync_event. deserialize ( ) {
535- Ok ( event) => event,
536- Err ( error) => {
537- error ! ( "Failed to deserialize event with ID {event_id} with error: {error}" ) ;
538- return Err ( UnsupportedEditItem :: FAILED_TO_DESERIALIZE_EVENT ) ;
539- }
540- } ;
525+ let event = raw_sync_event. deserialize ( ) . map_err ( |error| {
526+ error ! ( "Failed to deserialize event with ID {event_id} with error: {error}" ) ;
527+ UnsupportedEditItem :: FAILED_TO_DESERIALIZE_EVENT
528+ } ) ?;
541529
542530 if event. sender ( ) != self . room ( ) . own_user_id ( ) {
543531 return Err ( UnsupportedEditItem :: NOT_OWN_EVENT ) ;
544532 } ;
545533
546534 if let AnySyncTimelineEvent :: MessageLike ( message_like_event) = & event {
547- if let AnySyncMessageLikeEvent :: RoomMessage ( message_event) = message_like_event {
548- if let Some ( original_message) = message_event. as_original ( ) {
549- let message = Message :: from_event (
550- original_message. content . clone ( ) ,
551- message_like_event. relations ( ) ,
552- & self . items ( ) . await ,
553- ) ;
554- return Ok ( EditInfo {
555- event_id : event_id. to_owned ( ) ,
556- original_message : message,
557- } ) ;
558- }
535+ if let AnySyncMessageLikeEvent :: RoomMessage ( SyncMessageLikeEvent :: Original (
536+ original_message,
537+ ) ) = message_like_event
538+ {
539+ let message = Message :: from_event (
540+ original_message. content . clone ( ) ,
541+ message_like_event. relations ( ) ,
542+ & self . items ( ) . await ,
543+ ) ;
544+ return Ok ( EditInfo { event_id : event_id. to_owned ( ) , original_message : message } ) ;
559545 }
560546 }
547+
561548 Err ( UnsupportedEditItem :: NOT_ROOM_MESSAGE )
562549 }
563550
0 commit comments