daydream

A small matrix web client written in rust
git clone git://archive.git.mtrnord.blog/daydream-mx/daydream.git
Log | Files | Refs | README | LICENSE

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 }