@@ -18,7 +18,7 @@ use std::marker::PhantomData;
18
18
19
19
use ruma:: {
20
20
api:: client:: { account:: request_openid_token, delayed_events:: update_delayed_event} ,
21
- events:: { AnyTimelineEvent , MessageLikeEventType , StateEventType , TimelineEventType } ,
21
+ events:: { AnyStateEvent , AnyTimelineEvent , StateEventType , TimelineEventType } ,
22
22
serde:: Raw ,
23
23
} ;
24
24
use serde:: Deserialize ;
@@ -43,14 +43,14 @@ pub(crate) enum MatrixDriverRequestData {
43
43
/// Get OpenId token for a given request ID.
44
44
GetOpenId ,
45
45
46
- /// Read message event(s) .
47
- ReadMessageLikeEvent ( ReadMessageLikeEventRequest ) ,
46
+ /// Read events from the timeline .
47
+ ReadEvents ( ReadEventsRequest ) ,
48
48
49
- /// Read state event(s) .
50
- ReadStateEvent ( ReadStateEventRequest ) ,
49
+ /// Read room state entries .
50
+ ReadState ( ReadStateRequest ) ,
51
51
52
52
/// Send matrix event that corresponds to the given description.
53
- SendMatrixEvent ( SendEventRequest ) ,
53
+ SendEvent ( SendEventRequest ) ,
54
54
55
55
/// Data for sending a UpdateDelayedEvent client server api request.
56
56
UpdateDelayedEvent ( UpdateDelayedEventRequest ) ,
@@ -158,31 +158,37 @@ impl FromMatrixDriverResponse for request_openid_token::v3::Response {
158
158
}
159
159
}
160
160
161
- /// Ask the client to read matrix event(s) that corresponds to the given
161
+ /// Ask the client to read matrix events that correspond to the given
162
162
/// description and return a list of events as a response.
163
163
#[ derive( Clone , Debug ) ]
164
- pub ( crate ) struct ReadMessageLikeEventRequest {
164
+ pub ( crate ) struct ReadEventsRequest {
165
165
/// The event type to read.
166
- pub ( crate ) event_type : MessageLikeEventType ,
166
+ pub ( crate ) event_type : TimelineEventType ,
167
+
168
+ /// The `state_key` to read. If None, this will read events regardless of
169
+ /// whether they are state events. If `Some(Any)`, this will read any state
170
+ /// events of the given type. If set to a specific state key, this will only
171
+ /// read state events matching that state key.
172
+ pub ( crate ) state_key : Option < StateKeySelector > ,
167
173
168
174
/// The maximum number of events to return.
169
175
pub ( crate ) limit : u32 ,
170
176
}
171
177
172
- impl From < ReadMessageLikeEventRequest > for MatrixDriverRequestData {
173
- fn from ( value : ReadMessageLikeEventRequest ) -> Self {
174
- MatrixDriverRequestData :: ReadMessageLikeEvent ( value)
178
+ impl From < ReadEventsRequest > for MatrixDriverRequestData {
179
+ fn from ( value : ReadEventsRequest ) -> Self {
180
+ MatrixDriverRequestData :: ReadEvents ( value)
175
181
}
176
182
}
177
183
178
- impl MatrixDriverRequest for ReadMessageLikeEventRequest {
184
+ impl MatrixDriverRequest for ReadEventsRequest {
179
185
type Response = Vec < Raw < AnyTimelineEvent > > ;
180
186
}
181
187
182
188
impl FromMatrixDriverResponse for Vec < Raw < AnyTimelineEvent > > {
183
189
fn from_response ( ev : MatrixDriverResponse ) -> Option < Self > {
184
190
match ev {
185
- MatrixDriverResponse :: MatrixEventRead ( response) => Some ( response) ,
191
+ MatrixDriverResponse :: EventsRead ( response) => Some ( response) ,
186
192
_ => {
187
193
error ! ( "bug in MatrixDriver, received wrong event response" ) ;
188
194
None
@@ -191,26 +197,38 @@ impl FromMatrixDriverResponse for Vec<Raw<AnyTimelineEvent>> {
191
197
}
192
198
}
193
199
194
- /// Ask the client to read matrix event(s) that corresponds to the given
195
- /// description and return a list of events as a response.
200
+ /// Ask the client to read matrix room state entries corresponding to the given
201
+ /// description and return a list of state events as a response.
196
202
#[ derive( Clone , Debug ) ]
197
- pub ( crate ) struct ReadStateEventRequest {
203
+ pub ( crate ) struct ReadStateRequest {
198
204
/// The event type to read.
199
205
pub ( crate ) event_type : StateEventType ,
200
206
201
- /// The `state_key` to read, or `Any` to receive any/all events of the given
202
- /// type, regardless of their `state_key`.
207
+ /// The `state_key` to read, or `Any` to receive any/all room state entries
208
+ /// of the given type, regardless of their `state_key`.
203
209
pub ( crate ) state_key : StateKeySelector ,
204
210
}
205
211
206
- impl From < ReadStateEventRequest > for MatrixDriverRequestData {
207
- fn from ( value : ReadStateEventRequest ) -> Self {
208
- MatrixDriverRequestData :: ReadStateEvent ( value)
212
+ impl From < ReadStateRequest > for MatrixDriverRequestData {
213
+ fn from ( value : ReadStateRequest ) -> Self {
214
+ MatrixDriverRequestData :: ReadState ( value)
209
215
}
210
216
}
211
217
212
- impl MatrixDriverRequest for ReadStateEventRequest {
213
- type Response = Vec < Raw < AnyTimelineEvent > > ;
218
+ impl MatrixDriverRequest for ReadStateRequest {
219
+ type Response = Vec < Raw < AnyStateEvent > > ;
220
+ }
221
+
222
+ impl FromMatrixDriverResponse for Vec < Raw < AnyStateEvent > > {
223
+ fn from_response ( ev : MatrixDriverResponse ) -> Option < Self > {
224
+ match ev {
225
+ MatrixDriverResponse :: StateRead ( response) => Some ( response) ,
226
+ _ => {
227
+ error ! ( "bug in MatrixDriver, received wrong event response" ) ;
228
+ None
229
+ }
230
+ }
231
+ }
214
232
}
215
233
216
234
/// Ask the client to send matrix event that corresponds to the given
@@ -233,7 +251,7 @@ pub(crate) struct SendEventRequest {
233
251
234
252
impl From < SendEventRequest > for MatrixDriverRequestData {
235
253
fn from ( value : SendEventRequest ) -> Self {
236
- MatrixDriverRequestData :: SendMatrixEvent ( value)
254
+ MatrixDriverRequestData :: SendEvent ( value)
237
255
}
238
256
}
239
257
@@ -244,7 +262,7 @@ impl MatrixDriverRequest for SendEventRequest {
244
262
impl FromMatrixDriverResponse for SendEventResponse {
245
263
fn from_response ( ev : MatrixDriverResponse ) -> Option < Self > {
246
264
match ev {
247
- MatrixDriverResponse :: MatrixEventSent ( response) => Some ( response) ,
265
+ MatrixDriverResponse :: EventSent ( response) => Some ( response) ,
248
266
_ => {
249
267
error ! ( "bug in MatrixDriver, received wrong event response" ) ;
250
268
None
@@ -274,7 +292,7 @@ impl MatrixDriverRequest for UpdateDelayedEventRequest {
274
292
impl FromMatrixDriverResponse for update_delayed_event:: unstable:: Response {
275
293
fn from_response ( ev : MatrixDriverResponse ) -> Option < Self > {
276
294
match ev {
277
- MatrixDriverResponse :: MatrixDelayedEventUpdate ( response) => Some ( response) ,
295
+ MatrixDriverResponse :: DelayedEventUpdated ( response) => Some ( response) ,
278
296
_ => {
279
297
error ! ( "bug in MatrixDriver, received wrong event response" ) ;
280
298
None
0 commit comments