diff options
Diffstat (limited to 'src/service/pdu.rs')
-rw-r--r-- | src/service/pdu.rs | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/src/service/pdu.rs b/src/service/pdu.rs index 9d284c0..d24e174 100644 --- a/src/service/pdu.rs +++ b/src/service/pdu.rs @@ -1,9 +1,9 @@ use crate::Error; use ruma::{ events::{ - room::member::RoomMemberEventContent, AnyEphemeralRoomEvent, AnyMessageLikeEvent, - AnyStateEvent, AnyStrippedStateEvent, AnySyncStateEvent, AnySyncTimelineEvent, - AnyTimelineEvent, StateEvent, TimelineEventType, + room::member::RoomMemberEventContent, space::child::HierarchySpaceChildEvent, + AnyEphemeralRoomEvent, AnyMessageLikeEvent, AnyStateEvent, AnyStrippedStateEvent, + AnySyncStateEvent, AnySyncTimelineEvent, AnyTimelineEvent, StateEvent, TimelineEventType, }, serde::Raw, state_res, CanonicalJsonObject, CanonicalJsonValue, EventId, MilliSecondsSinceUnixEpoch, @@ -249,6 +249,19 @@ impl PduEvent { } #[tracing::instrument(skip(self))] + pub fn to_stripped_spacechild_state_event(&self) -> Raw<HierarchySpaceChildEvent> { + let json = json!({ + "content": self.content, + "type": self.kind, + "sender": self.sender, + "state_key": self.state_key, + "origin_server_ts": self.origin_server_ts, + }); + + serde_json::from_value(json).expect("Raw::from_value always works") + } + + #[tracing::instrument(skip(self))] pub fn to_member_event(&self) -> Raw<StateEvent<RoomMemberEventContent>> { let mut json = json!({ "content": self.content, |