ruma.rs (1797B)
1 use matrix_sdk::events::{ 2 room::redaction::SyncRedactionEvent, AnyMessageEvent, AnySyncMessageEvent, MessageEvent, 3 MessageEventContent, SyncMessageEvent, 4 }; 5 6 pub trait AnyMessageEventExt { 7 fn without_room_id(self) -> AnySyncMessageEvent; 8 } 9 10 impl AnyMessageEventExt for AnyMessageEvent { 11 fn without_room_id(self) -> AnySyncMessageEvent { 12 fn without_room_id<C>(ev: MessageEvent<C>) -> SyncMessageEvent<C> 13 where 14 C: MessageEventContent, 15 { 16 SyncMessageEvent { 17 content: ev.content, 18 event_id: ev.event_id, 19 sender: ev.sender, 20 origin_server_ts: ev.origin_server_ts, 21 unsigned: ev.unsigned, 22 } 23 } 24 25 use AnySyncMessageEvent::*; 26 27 match self { 28 Self::CallAnswer(ev) => CallAnswer(without_room_id(ev)), 29 Self::CallInvite(ev) => CallInvite(without_room_id(ev)), 30 Self::CallHangup(ev) => CallHangup(without_room_id(ev)), 31 Self::CallCandidates(ev) => CallCandidates(without_room_id(ev)), 32 Self::RoomEncrypted(ev) => RoomEncrypted(without_room_id(ev)), 33 Self::RoomMessage(ev) => RoomMessage(without_room_id(ev)), 34 Self::RoomMessageFeedback(ev) => RoomMessageFeedback(without_room_id(ev)), 35 Self::Sticker(ev) => Sticker(without_room_id(ev)), 36 Self::Custom(ev) => Custom(without_room_id(ev)), 37 Self::RoomRedaction(ev) => RoomRedaction(SyncRedactionEvent { 38 content: ev.content, 39 event_id: ev.event_id, 40 sender: ev.sender, 41 origin_server_ts: ev.origin_server_ts, 42 unsigned: ev.unsigned, 43 redacts: ev.redacts, 44 }), 45 } 46 } 47 }