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