matrix_sdk/event_handler/
static_events.rs1use ruma::{
18 events::{
19 self, presence::PresenceEvent, AnyGlobalAccountDataEvent, AnyRoomAccountDataEvent,
20 AnyStrippedStateEvent, AnySyncEphemeralRoomEvent, AnySyncMessageLikeEvent,
21 AnySyncStateEvent, AnySyncTimelineEvent, AnyToDeviceEvent, EphemeralRoomEventContent,
22 False, GlobalAccountDataEventContent, MessageLikeEventContent,
23 PossiblyRedactedStateEventContent, RedactContent, RedactedMessageLikeEventContent,
24 RedactedStateEventContent, RoomAccountDataEventContent, StaticEventContent,
25 StaticStateEventContent, ToDeviceEventContent,
26 },
27 serde::Raw,
28};
29
30use super::{HandlerKind, SyncEvent};
31
32impl<C> SyncEvent for events::GlobalAccountDataEvent<C>
33where
34 C: StaticEventContent + GlobalAccountDataEventContent,
35{
36 const KIND: HandlerKind = HandlerKind::GlobalAccountData;
37 const TYPE: Option<&'static str> = Some(C::TYPE);
38 type IsPrefix = <C as StaticEventContent>::IsPrefix;
39}
40
41impl<C> SyncEvent for events::RoomAccountDataEvent<C>
42where
43 C: StaticEventContent + RoomAccountDataEventContent,
44{
45 const KIND: HandlerKind = HandlerKind::RoomAccountData;
46 const TYPE: Option<&'static str> = Some(C::TYPE);
47 type IsPrefix = <C as StaticEventContent>::IsPrefix;
48}
49
50impl<C> SyncEvent for events::SyncEphemeralRoomEvent<C>
51where
52 C: StaticEventContent + EphemeralRoomEventContent,
53{
54 const KIND: HandlerKind = HandlerKind::EphemeralRoomData;
55 const TYPE: Option<&'static str> = Some(C::TYPE);
56 type IsPrefix = <C as StaticEventContent>::IsPrefix;
57}
58
59impl<C> SyncEvent for events::SyncMessageLikeEvent<C>
60where
61 C: StaticEventContent + MessageLikeEventContent + RedactContent,
62 C::Redacted: RedactedMessageLikeEventContent,
63{
64 const KIND: HandlerKind = HandlerKind::MessageLike;
65 const TYPE: Option<&'static str> = Some(C::TYPE);
66 type IsPrefix = <C as StaticEventContent>::IsPrefix;
67}
68
69impl<C> SyncEvent for events::OriginalSyncMessageLikeEvent<C>
70where
71 C: StaticEventContent + MessageLikeEventContent,
72{
73 const KIND: HandlerKind = HandlerKind::OriginalMessageLike;
74 const TYPE: Option<&'static str> = Some(C::TYPE);
75 type IsPrefix = <C as StaticEventContent>::IsPrefix;
76}
77
78impl<C> SyncEvent for events::RedactedSyncMessageLikeEvent<C>
79where
80 C: StaticEventContent + RedactedMessageLikeEventContent,
81{
82 const KIND: HandlerKind = HandlerKind::RedactedMessageLike;
83 const TYPE: Option<&'static str> = Some(C::TYPE);
84 type IsPrefix = <C as StaticEventContent>::IsPrefix;
85}
86
87impl SyncEvent for events::room::redaction::SyncRoomRedactionEvent {
88 const KIND: HandlerKind = HandlerKind::MessageLike;
89 const TYPE: Option<&'static str> =
90 Some(events::room::redaction::RoomRedactionEventContent::TYPE);
91 type IsPrefix =
92 <events::room::redaction::RoomRedactionEventContent as StaticEventContent>::IsPrefix;
93}
94
95impl SyncEvent for events::room::redaction::OriginalSyncRoomRedactionEvent {
96 const KIND: HandlerKind = HandlerKind::OriginalMessageLike;
97 const TYPE: Option<&'static str> =
98 Some(events::room::redaction::RoomRedactionEventContent::TYPE);
99 type IsPrefix =
100 <events::room::redaction::RoomRedactionEventContent as StaticEventContent>::IsPrefix;
101}
102
103impl SyncEvent for events::room::redaction::RedactedSyncRoomRedactionEvent {
104 const KIND: HandlerKind = HandlerKind::RedactedMessageLike;
105 const TYPE: Option<&'static str> =
106 Some(events::room::redaction::RoomRedactionEventContent::TYPE);
107 type IsPrefix =
108 <events::room::redaction::RoomRedactionEventContent as StaticEventContent>::IsPrefix;
109}
110
111impl<C> SyncEvent for events::SyncStateEvent<C>
112where
113 C: StaticEventContent + StaticStateEventContent + RedactContent,
114 C::Redacted: RedactedStateEventContent,
115{
116 const KIND: HandlerKind = HandlerKind::State;
117 const TYPE: Option<&'static str> = Some(C::TYPE);
118 type IsPrefix = <C as StaticEventContent>::IsPrefix;
119}
120
121impl<C> SyncEvent for events::OriginalSyncStateEvent<C>
122where
123 C: StaticEventContent + StaticStateEventContent,
124{
125 const KIND: HandlerKind = HandlerKind::OriginalState;
126 const TYPE: Option<&'static str> = Some(C::TYPE);
127 type IsPrefix = <C as StaticEventContent>::IsPrefix;
128}
129
130impl<C> SyncEvent for events::RedactedSyncStateEvent<C>
131where
132 C: StaticEventContent + RedactedStateEventContent,
133{
134 const KIND: HandlerKind = HandlerKind::RedactedState;
135 const TYPE: Option<&'static str> = Some(C::TYPE);
136 type IsPrefix = <C as StaticEventContent>::IsPrefix;
137}
138
139impl<C> SyncEvent for events::StrippedStateEvent<C>
140where
141 C: StaticEventContent + PossiblyRedactedStateEventContent,
142{
143 const KIND: HandlerKind = HandlerKind::StrippedState;
144 const TYPE: Option<&'static str> = Some(C::TYPE);
145 type IsPrefix = <C as StaticEventContent>::IsPrefix;
146}
147
148impl<C> SyncEvent for events::ToDeviceEvent<C>
149where
150 C: StaticEventContent + ToDeviceEventContent,
151{
152 const KIND: HandlerKind = HandlerKind::ToDevice;
153 const TYPE: Option<&'static str> = Some(C::TYPE);
154 type IsPrefix = <C as StaticEventContent>::IsPrefix;
155}
156
157impl SyncEvent for PresenceEvent {
158 const KIND: HandlerKind = HandlerKind::Presence;
159 const TYPE: Option<&'static str> = None;
160 type IsPrefix = False;
161}
162
163impl SyncEvent for AnyGlobalAccountDataEvent {
164 const KIND: HandlerKind = HandlerKind::GlobalAccountData;
165 const TYPE: Option<&'static str> = None;
166 type IsPrefix = False;
167}
168
169impl SyncEvent for AnyRoomAccountDataEvent {
170 const KIND: HandlerKind = HandlerKind::RoomAccountData;
171 const TYPE: Option<&'static str> = None;
172 type IsPrefix = False;
173}
174
175impl SyncEvent for AnySyncEphemeralRoomEvent {
176 const KIND: HandlerKind = HandlerKind::EphemeralRoomData;
177 const TYPE: Option<&'static str> = None;
178 type IsPrefix = False;
179}
180
181impl SyncEvent for AnySyncTimelineEvent {
182 const KIND: HandlerKind = HandlerKind::Timeline;
183 const TYPE: Option<&'static str> = None;
184 type IsPrefix = False;
185}
186
187impl SyncEvent for AnySyncMessageLikeEvent {
188 const KIND: HandlerKind = HandlerKind::MessageLike;
189 const TYPE: Option<&'static str> = None;
190 type IsPrefix = False;
191}
192
193impl SyncEvent for AnySyncStateEvent {
194 const KIND: HandlerKind = HandlerKind::State;
195 const TYPE: Option<&'static str> = None;
196 type IsPrefix = False;
197}
198
199impl SyncEvent for AnyStrippedStateEvent {
200 const KIND: HandlerKind = HandlerKind::StrippedState;
201 const TYPE: Option<&'static str> = None;
202 type IsPrefix = False;
203}
204
205impl SyncEvent for AnyToDeviceEvent {
206 const KIND: HandlerKind = HandlerKind::ToDevice;
207 const TYPE: Option<&'static str> = None;
208 type IsPrefix = False;
209}
210
211impl<T: SyncEvent> SyncEvent for Raw<T> {
212 const KIND: HandlerKind = T::KIND;
213 const TYPE: Option<&'static str> = T::TYPE;
214 type IsPrefix = <T as SyncEvent>::IsPrefix;
215}