@@ -21,17 +21,16 @@ use ruma::{
21
21
UnstablePollStartEventContent ,
22
22
} ,
23
23
room:: message:: {
24
- FormattedBody , MessageType , Relation , ReplacementMetadata , RoomMessageEventContent ,
24
+ FormattedBody , MessageType , ReplacementMetadata , RoomMessageEventContent ,
25
25
RoomMessageEventContentWithoutRelation ,
26
26
} ,
27
- AnyMessageLikeEvent , AnyMessageLikeEventContent , AnySyncMessageLikeEvent ,
28
- AnySyncTimelineEvent , AnyTimelineEvent , Mentions , MessageLikeEvent ,
29
- OriginalMessageLikeEvent , SyncMessageLikeEvent ,
27
+ AnyMessageLikeEventContent , AnySyncMessageLikeEvent , AnySyncTimelineEvent , Mentions ,
28
+ SyncMessageLikeEvent ,
30
29
} ,
31
- EventId , RoomId , UserId ,
30
+ EventId , UserId ,
32
31
} ;
33
32
use thiserror:: Error ;
34
- use tracing:: { instrument, warn } ;
33
+ use tracing:: instrument;
35
34
36
35
use super :: EventSource ;
37
36
use crate :: Room ;
@@ -122,13 +121,12 @@ impl Room {
122
121
event_id : & EventId ,
123
122
new_content : EditedContent ,
124
123
) -> Result < AnyMessageLikeEventContent , EditError > {
125
- make_edit_event ( self , self . room_id ( ) , self . own_user_id ( ) , event_id, new_content) . await
124
+ make_edit_event ( self , self . own_user_id ( ) , event_id, new_content) . await
126
125
}
127
126
}
128
127
129
128
async fn make_edit_event < S : EventSource > (
130
129
source : S ,
131
- room_id : & RoomId ,
132
130
own_user_id : & UserId ,
133
131
event_id : & EventId ,
134
132
new_content : EditedContent ,
@@ -159,14 +157,10 @@ async fn make_edit_event<S: EventSource>(
159
157
} ) ;
160
158
} ;
161
159
162
- let mentions = original. content . mentions . clone ( ) ;
163
- let replied_to_original_room_msg =
164
- extract_replied_to ( source, room_id, original. content . relates_to ) . await ;
160
+ let mentions = original. content . mentions ;
165
161
166
- let replacement = new_content. make_replacement (
167
- ReplacementMetadata :: new ( event_id. to_owned ( ) , mentions) ,
168
- replied_to_original_room_msg. as_ref ( ) ,
169
- ) ;
162
+ let replacement = new_content
163
+ . make_replacement ( ReplacementMetadata :: new ( event_id. to_owned ( ) , mentions) ) ;
170
164
171
165
Ok ( replacement. into ( ) )
172
166
}
@@ -183,8 +177,6 @@ async fn make_edit_event<S: EventSource>(
183
177
} ;
184
178
185
179
let original_mentions = original. content . mentions . clone ( ) ;
186
- let replied_to_original_room_msg =
187
- extract_replied_to ( source, room_id, original. content . relates_to . clone ( ) ) . await ;
188
180
189
181
let mut prev_content = original. content ;
190
182
@@ -195,10 +187,8 @@ async fn make_edit_event<S: EventSource>(
195
187
} ) ;
196
188
}
197
189
198
- let replacement = prev_content. make_replacement (
199
- ReplacementMetadata :: new ( event_id. to_owned ( ) , original_mentions) ,
200
- replied_to_original_room_msg. as_ref ( ) ,
201
- ) ;
190
+ let replacement = prev_content
191
+ . make_replacement ( ReplacementMetadata :: new ( event_id. to_owned ( ) , original_mentions) ) ;
202
192
203
193
Ok ( replacement. into ( ) )
204
194
}
@@ -292,45 +282,6 @@ pub(crate) fn update_media_caption(
292
282
}
293
283
}
294
284
295
- /// Try to find the original replied-to event content, in a best-effort manner.
296
- async fn extract_replied_to < S : EventSource > (
297
- source : S ,
298
- room_id : & RoomId ,
299
- relates_to : Option < Relation < RoomMessageEventContentWithoutRelation > > ,
300
- ) -> Option < OriginalMessageLikeEvent < RoomMessageEventContent > > {
301
- let replied_to_sync_timeline_event = if let Some ( Relation :: Reply { in_reply_to } ) = relates_to {
302
- source
303
- . get_event ( & in_reply_to. event_id )
304
- . await
305
- . map_err ( |err| {
306
- warn ! ( "couldn't fetch the replied-to event, when editing: {err}" ) ;
307
- err
308
- } )
309
- . ok ( )
310
- } else {
311
- None
312
- } ;
313
-
314
- replied_to_sync_timeline_event
315
- . and_then ( |sync_timeline_event| {
316
- sync_timeline_event
317
- . raw ( )
318
- . deserialize ( )
319
- . map_err ( |err| warn ! ( "unable to deserialize replied-to event: {err}" ) )
320
- . ok ( )
321
- } )
322
- . and_then ( |event| {
323
- if let AnyTimelineEvent :: MessageLike ( AnyMessageLikeEvent :: RoomMessage (
324
- MessageLikeEvent :: Original ( original) ,
325
- ) ) = event. into_full_event ( room_id. to_owned ( ) )
326
- {
327
- Some ( original)
328
- } else {
329
- None
330
- }
331
- } )
332
- }
333
-
334
285
#[ cfg( test) ]
335
286
mod tests {
336
287
use std:: collections:: BTreeMap ;
@@ -344,7 +295,7 @@ mod tests {
344
295
room:: message:: { MessageType , Relation , RoomMessageEventContentWithoutRelation } ,
345
296
AnyMessageLikeEventContent , AnySyncTimelineEvent , Mentions ,
346
297
} ,
347
- owned_mxc_uri, owned_user_id, room_id , user_id, EventId , OwnedEventId ,
298
+ owned_mxc_uri, owned_user_id, user_id, EventId , OwnedEventId ,
348
299
} ;
349
300
350
301
use super :: { make_edit_event, EditError , EventSource } ;
@@ -373,18 +324,11 @@ mod tests {
373
324
f. room_name ( "The room name" ) . event_id ( event_id) . sender ( own_user_id) . into ( ) ,
374
325
) ;
375
326
376
- let room_id = room_id ! ( "!galette:saucisse.bzh" ) ;
377
327
let new_content = RoomMessageEventContentWithoutRelation :: text_plain ( "the edit" ) ;
378
328
379
329
assert_matches ! (
380
- make_edit_event(
381
- cache,
382
- room_id,
383
- own_user_id,
384
- event_id,
385
- EditedContent :: RoomMessage ( new_content) ,
386
- )
387
- . await ,
330
+ make_edit_event( cache, own_user_id, event_id, EditedContent :: RoomMessage ( new_content) , )
331
+ . await ,
388
332
Err ( EditError :: StateEvent )
389
333
) ;
390
334
}
@@ -401,19 +345,12 @@ mod tests {
401
345
f. text_msg ( "hi" ) . event_id ( event_id) . sender ( user_id ! ( "@other:saucisse.bzh" ) ) . into ( ) ,
402
346
) ;
403
347
404
- let room_id = room_id ! ( "!galette:saucisse.bzh" ) ;
405
348
let own_user_id = user_id ! ( "@me:saucisse.bzh" ) ;
406
349
let new_content = RoomMessageEventContentWithoutRelation :: text_plain ( "the edit" ) ;
407
350
408
351
assert_matches ! (
409
- make_edit_event(
410
- cache,
411
- room_id,
412
- own_user_id,
413
- event_id,
414
- EditedContent :: RoomMessage ( new_content) ,
415
- )
416
- . await ,
352
+ make_edit_event( cache, own_user_id, event_id, EditedContent :: RoomMessage ( new_content) , )
353
+ . await ,
417
354
Err ( EditError :: NotAuthor )
418
355
) ;
419
356
}
@@ -430,18 +367,12 @@ mod tests {
430
367
f. text_msg ( "hi" ) . event_id ( event_id) . sender ( own_user_id) . into ( ) ,
431
368
) ;
432
369
433
- let room_id = room_id ! ( "!galette:saucisse.bzh" ) ;
434
370
let new_content = RoomMessageEventContentWithoutRelation :: text_plain ( "the edit" ) ;
435
371
436
- let edit_event = make_edit_event (
437
- cache,
438
- room_id,
439
- own_user_id,
440
- event_id,
441
- EditedContent :: RoomMessage ( new_content) ,
442
- )
443
- . await
444
- . unwrap ( ) ;
372
+ let edit_event =
373
+ make_edit_event ( cache, own_user_id, event_id, EditedContent :: RoomMessage ( new_content) )
374
+ . await
375
+ . unwrap ( ) ;
445
376
446
377
assert_let ! ( AnyMessageLikeEventContent :: RoomMessage ( msg) = & edit_event) ;
447
378
// This is the fallback text, for clients not supporting edits.
@@ -464,11 +395,8 @@ mod tests {
464
395
f. text_msg ( "hello world" ) . event_id ( event_id) . sender ( own_user_id) . into ( ) ,
465
396
) ;
466
397
467
- let room_id = room_id ! ( "!galette:saucisse.bzh" ) ;
468
-
469
398
let err = make_edit_event (
470
399
cache,
471
- room_id,
472
400
own_user_id,
473
401
event_id,
474
402
EditedContent :: MediaCaption {
@@ -502,11 +430,8 @@ mod tests {
502
430
. into ( ) ,
503
431
) ;
504
432
505
- let room_id = room_id ! ( "!galette:saucisse.bzh" ) ;
506
-
507
433
let edit_event = make_edit_event (
508
434
cache,
509
- room_id,
510
435
own_user_id,
511
436
event_id,
512
437
EditedContent :: MediaCaption {
@@ -564,11 +489,8 @@ mod tests {
564
489
565
490
cache. events . insert ( event_id. to_owned ( ) , event) ;
566
491
567
- let room_id = room_id ! ( "!galette:saucisse.bzh" ) ;
568
-
569
492
let edit_event = make_edit_event (
570
493
cache,
571
- room_id,
572
494
own_user_id,
573
495
event_id,
574
496
// Remove the caption by setting it to None.
@@ -620,15 +542,12 @@ mod tests {
620
542
621
543
cache. events . insert ( event_id. to_owned ( ) , event) ;
622
544
623
- let room_id = room_id ! ( "!galette:saucisse.bzh" ) ;
624
-
625
545
// Add an intentional mention in the caption.
626
546
let mentioned_user_id = owned_user_id ! ( "@crepe:saucisse.bzh" ) ;
627
547
let edit_event = {
628
548
let mentions = Mentions :: with_user_ids ( [ mentioned_user_id. clone ( ) ] ) ;
629
549
make_edit_event (
630
550
cache,
631
- room_id,
632
551
own_user_id,
633
552
event_id,
634
553
EditedContent :: MediaCaption {
@@ -689,12 +608,10 @@ mod tests {
689
608
. into ( ) ,
690
609
) ;
691
610
692
- let room_id = room_id ! ( "!galette:saucisse.bzh" ) ;
693
611
let new_content = RoomMessageEventContentWithoutRelation :: text_plain ( "uh i mean hi too" ) ;
694
612
695
613
let edit_event = make_edit_event (
696
614
cache,
697
- room_id,
698
615
own_user_id,
699
616
resp_event_id,
700
617
EditedContent :: RoomMessage ( new_content) ,
@@ -704,12 +621,7 @@ mod tests {
704
621
705
622
assert_let ! ( AnyMessageLikeEventContent :: RoomMessage ( msg) = & edit_event) ;
706
623
// This is the fallback text, for clients not supporting edits.
707
- assert_eq ! (
708
- msg. body( ) ,
709
- r#"> <@steb:saucisse.bzh> hi
710
-
711
- * uh i mean hi too"#
712
- ) ;
624
+ assert_eq ! ( msg. body( ) , "* uh i mean hi too" ) ;
713
625
assert_let ! ( Some ( Relation :: Replacement ( repl) ) = & msg. relates_to) ;
714
626
715
627
assert_eq ! ( repl. event_id, resp_event_id) ;
0 commit comments