mirror of
https://github.com/matrix-org/matrix-rust-sdk.git
synced 2026-05-06 23:15:08 -04:00
sdk: Implement MSC3925 for the timeline
https://github.com/matrix-org/matrix-spec-proposals/blob/main/proposals/3925-replace-aggregation-with-full-event.md Implemented in Synapse 1.79.0: https://github.com/matrix-org/synapse/releases/tag/v1.79.0
This commit is contained in:
committed by
Jonas Platte
parent
86930581a5
commit
5bc20669c2
@@ -26,7 +26,7 @@ use ruma::{
|
||||
room::{
|
||||
encrypted::RoomEncryptedEventContent,
|
||||
member::{Change, RoomMemberEventContent},
|
||||
message::{self, MessageType, RoomMessageEventContent},
|
||||
message::{self, MessageType, RoomMessageEventContent, SyncRoomMessageEvent},
|
||||
redaction::{
|
||||
OriginalSyncRoomRedactionEvent, RoomRedactionEventContent, SyncRoomRedactionEvent,
|
||||
},
|
||||
@@ -940,9 +940,18 @@ impl NewEventTimelineItem {
|
||||
c: RoomMessageEventContent,
|
||||
relations: BundledMessageLikeRelations<AnySyncMessageLikeEvent>,
|
||||
) -> Self {
|
||||
let edited = relations.replace.is_some();
|
||||
let edited = relations.has_replacement();
|
||||
let edit = relations.replace.and_then(|r| match *r {
|
||||
AnySyncMessageLikeEvent::RoomMessage(SyncRoomMessageEvent::Original(ev)) => Some(ev),
|
||||
AnySyncMessageLikeEvent::RoomMessage(SyncRoomMessageEvent::Redacted(_)) => None,
|
||||
_ => {
|
||||
error!("got m.room.message event with an edit of a different event type");
|
||||
None
|
||||
}
|
||||
});
|
||||
|
||||
let content = TimelineItemContent::Message(Message {
|
||||
msgtype: c.msgtype,
|
||||
msgtype: edit.map_or(c.msgtype, |e| e.content.msgtype),
|
||||
in_reply_to: c.relates_to.and_then(InReplyToDetails::from_relation),
|
||||
edited,
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user