@@ -11,10 +11,13 @@ use matrix_sdk_crypto::{
11
11
} ,
12
12
OutgoingRequests ,
13
13
} ;
14
- use ruma:: api:: client:: keys:: {
15
- claim_keys:: v3:: Request as OriginalKeysClaimRequest ,
16
- upload_keys:: v3:: Request as OriginalKeysUploadRequest ,
17
- upload_signatures:: v3:: Request as OriginalSignatureUploadRequest ,
14
+ use ruma:: {
15
+ api:: client:: keys:: {
16
+ claim_keys:: v3:: Request as OriginalKeysClaimRequest ,
17
+ upload_keys:: v3:: Request as OriginalKeysUploadRequest ,
18
+ upload_signatures:: v3:: Request as OriginalSignatureUploadRequest ,
19
+ } ,
20
+ events:: EventContent ,
18
21
} ;
19
22
use wasm_bindgen:: prelude:: * ;
20
23
@@ -226,7 +229,11 @@ pub struct RoomMessageRequest {
226
229
#[ wasm_bindgen( readonly) ]
227
230
pub txn_id : JsString ,
228
231
229
- /// A JSON-encoded string containing the `content` field of this event.
232
+ /// A string representing the type of even from the message's content.
233
+ #[ wasm_bindgen( readonly) ]
234
+ pub event_type : JsString ,
235
+
236
+ /// A JSON-encoded string containing the message's content.
230
237
#[ wasm_bindgen( readonly) ]
231
238
pub content : JsString ,
232
239
}
@@ -239,9 +246,10 @@ impl RoomMessageRequest {
239
246
id : JsString ,
240
247
room_id : JsString ,
241
248
txn_id : JsString ,
249
+ event_type : JsString ,
242
250
content : JsString ,
243
251
) -> RoomMessageRequest {
244
- Self { id : Some ( id) , room_id, txn_id, content }
252
+ Self { id : Some ( id) , room_id, txn_id, event_type , content }
245
253
}
246
254
247
255
/// Get its request type.
@@ -303,8 +311,8 @@ pub struct SigningKeysUploadRequest {
303
311
macro_rules! request {
304
312
(
305
313
$destination_request: ident from $source_request: ident
306
- $( extracts fields $( $field_name: ident : $field_type: ident ) ,+ $( , ) ? ) ?
307
- $( $( and ) ? groups fields $( $grouped_field_name: ident ) ,+ $( , ) ? ) ?
314
+ $( extracts $( $field_name: ident : $field_type: tt ) ,+ $( , ) ? ) ?
315
+ $( $( and ) ? groups $( $grouped_field_name: ident ) ,+ $( , ) ? ) ?
308
316
) => {
309
317
impl TryFrom <& $source_request> for $destination_request {
310
318
type Error = serde_json:: Error ;
@@ -338,15 +346,15 @@ macro_rules! request {
338
346
(
339
347
@__try_from $destination_request: ident from $source_request: ident
340
348
( request_id = $request_id: expr, request = $request: expr)
341
- $( extracts [ $( $field_name: ident : $field_type: ident ) ,* $( , ) ? ] ) ?
349
+ $( extracts [ $( $field_name: ident : $field_type: tt ) ,* $( , ) ? ] ) ?
342
350
$( groups [ $( $grouped_field_name: ident ) ,* $( , ) ? ] ) ?
343
351
) => {
344
352
{
345
353
Ok ( $destination_request {
346
354
id: $request_id,
347
355
$(
348
356
$(
349
- $field_name: request!( @__field as $field_type ( request = $ request, field = $field_name ) ) ,
357
+ $field_name: request!( @__field $field_name : $field_type ; request = $request ) ,
350
358
) *
351
359
) ?
352
360
$(
@@ -364,26 +372,43 @@ macro_rules! request {
364
372
}
365
373
} ;
366
374
367
- ( @__field as string ( request = $request: expr, field = $field_name: ident) ) => {
375
+ ( @__field $field_name: ident : $field_type: ident ; request = $request: expr ) => {
376
+ request!( @__field_type as $field_type ; request = $request, field_name = $field_name)
377
+ } ;
378
+
379
+ /*
380
+ ( @__field $field_name:ident : $field_mapper:block ; request = $request:expr ) => {
381
+ {
382
+ let mapper = $field_mapper;
383
+ mapper($request)
384
+ }
385
+ };
386
+ */
387
+
388
+ ( @__field_type as string ; request = $request: expr, field_name = $field_name: ident ) => {
368
389
$request. $field_name. to_string( ) . into( )
369
390
} ;
370
391
371
- ( @__field as json ( request = $request: expr, field = $field_name: ident) ) => {
392
+ ( @__field_type as json ; request = $request: expr, field_name = $field_name: ident ) => {
372
393
serde_json:: to_string( & $request. $field_name) ?. into( )
373
- }
394
+ } ;
395
+
396
+ ( @__field_type as event_type ; request = $request: expr, field_name = $field_name: ident ) => {
397
+ $request. content. event_type( ) . to_string( ) . into( )
398
+ } ;
374
399
}
375
400
376
401
// Outgoing Requests
377
- request ! ( KeysUploadRequest from OriginalKeysUploadRequest groups fields device_keys, one_time_keys, fallback_keys) ;
378
- request ! ( KeysQueryRequest from OriginalKeysQueryRequest groups fields timeout, device_keys, token) ;
379
- request ! ( KeysClaimRequest from OriginalKeysClaimRequest groups fields timeout, one_time_keys) ;
380
- request ! ( ToDeviceRequest from OriginalToDeviceRequest extracts fields event_type: string, txn_id: string and groups fields messages) ;
381
- request ! ( SignatureUploadRequest from OriginalSignatureUploadRequest groups fields signed_keys) ;
382
- request ! ( RoomMessageRequest from OriginalRoomMessageRequest extracts fields room_id: string, txn_id: string, content: json) ;
383
- request ! ( KeysBackupRequest from OriginalKeysBackupRequest groups fields rooms) ;
402
+ request ! ( KeysUploadRequest from OriginalKeysUploadRequest groups device_keys, one_time_keys, fallback_keys) ;
403
+ request ! ( KeysQueryRequest from OriginalKeysQueryRequest groups timeout, device_keys, token) ;
404
+ request ! ( KeysClaimRequest from OriginalKeysClaimRequest groups timeout, one_time_keys) ;
405
+ request ! ( ToDeviceRequest from OriginalToDeviceRequest extracts event_type: string, txn_id: string and groups messages) ;
406
+ request ! ( SignatureUploadRequest from OriginalSignatureUploadRequest groups signed_keys) ;
407
+ request ! ( RoomMessageRequest from OriginalRoomMessageRequest extracts room_id: string, txn_id: string, event_type : event_type , content: json) ;
408
+ request ! ( KeysBackupRequest from OriginalKeysBackupRequest groups rooms) ;
384
409
385
410
// Other Requests
386
- request ! ( SigningKeysUploadRequest from OriginalUploadSigningKeysRequest groups fields master_key, self_signing_key, user_signing_key) ;
411
+ request ! ( SigningKeysUploadRequest from OriginalUploadSigningKeysRequest groups master_key, self_signing_key, user_signing_key) ;
387
412
388
413
// JavaScript has no complex enums like Rust. To return structs of
389
414
// different types, we have no choice that hiding everything behind a
0 commit comments