@@ -278,13 +278,8 @@ impl RoomEventCacheInner {
278
278
}
279
279
}
280
280
281
- pub ( super ) async fn handle_joined_room_update (
282
- & self ,
283
- has_storage : bool ,
284
- updates : JoinedRoomUpdate ,
285
- ) -> Result < ( ) > {
281
+ pub ( super ) async fn handle_joined_room_update ( & self , updates : JoinedRoomUpdate ) -> Result < ( ) > {
286
282
self . handle_timeline (
287
- has_storage,
288
283
updates. timeline ,
289
284
updates. ephemeral . clone ( ) ,
290
285
updates. ambiguity_changes ,
@@ -298,88 +293,33 @@ impl RoomEventCacheInner {
298
293
299
294
async fn handle_timeline (
300
295
& self ,
301
- has_storage : bool ,
302
296
timeline : Timeline ,
303
297
ephemeral_events : Vec < Raw < AnySyncEphemeralRoomEvent > > ,
304
298
ambiguity_changes : BTreeMap < OwnedEventId , AmbiguityChange > ,
305
299
) -> Result < ( ) > {
306
- if !has_storage && timeline. limited {
307
- // Ideally we'd try to reconcile existing events against those received in the
308
- // timeline, but we're not there yet. In the meanwhile, clear the
309
- // items from the room. TODO: implement Smart Matching™.
310
- trace ! ( "limited timeline, clearing all previous events and pushing new events" ) ;
311
-
312
- self . replace_all_events_by (
313
- timeline. events ,
314
- timeline. prev_batch ,
315
- ephemeral_events,
316
- ambiguity_changes,
317
- )
318
- . await ?;
319
- } else {
320
- // Add all the events to the backend.
321
- trace ! ( "adding new events" ) ;
322
-
323
- // Only keep the previous-batch token if we have a limited timeline; otherwise,
324
- // we know about all the events, and we don't need to back-paginate,
325
- // so we wouldn't make use of the given previous-batch token.
326
- let prev_batch = if timeline. limited { timeline. prev_batch } else { None } ;
327
-
328
- let mut state = self . state . write ( ) . await ;
329
- self . append_events_locked (
330
- & mut state,
331
- timeline. events ,
332
- prev_batch,
333
- ephemeral_events,
334
- ambiguity_changes,
335
- )
336
- . await ?;
337
- }
338
-
339
- Ok ( ( ) )
340
- }
300
+ // Add all the events to the backend.
301
+ trace ! ( "adding new events" ) ;
341
302
342
- pub ( super ) async fn handle_left_room_update (
343
- & self ,
344
- has_storage : bool ,
345
- updates : LeftRoomUpdate ,
346
- ) -> Result < ( ) > {
347
- self . handle_timeline ( has_storage, updates. timeline , Vec :: new ( ) , updates. ambiguity_changes )
348
- . await ?;
349
- Ok ( ( ) )
350
- }
303
+ // Only keep the previous-batch token if we have a limited timeline; otherwise,
304
+ // we know about all the events, and we don't need to back-paginate,
305
+ // so we wouldn't make use of the given previous-batch token.
306
+ let prev_batch = if timeline. limited { timeline. prev_batch } else { None } ;
351
307
352
- /// Remove existing events, and append a set of events to the room cache and
353
- /// storage, notifying observers.
354
- pub ( super ) async fn replace_all_events_by (
355
- & self ,
356
- sync_timeline_events : Vec < SyncTimelineEvent > ,
357
- prev_batch : Option < String > ,
358
- ephemeral_events : Vec < Raw < AnySyncEphemeralRoomEvent > > ,
359
- ambiguity_changes : BTreeMap < OwnedEventId , AmbiguityChange > ,
360
- ) -> Result < ( ) > {
361
- // Acquire the lock.
362
308
let mut state = self . state . write ( ) . await ;
363
-
364
- // Reset the room's state.
365
- state. reset ( ) . await ?;
366
-
367
- // Propagate to observers.
368
- let _ = self . sender . send ( RoomEventCacheUpdate :: Clear ) ;
369
-
370
- // Push the new events.
371
309
self . append_events_locked (
372
310
& mut state,
373
- sync_timeline_events ,
374
- prev_batch. clone ( ) ,
311
+ timeline . events ,
312
+ prev_batch,
375
313
ephemeral_events,
376
314
ambiguity_changes,
377
315
)
378
316
. await ?;
379
317
380
- // Reset the paginator status to initial.
381
- self . paginator . set_idle_state ( PaginatorState :: Initial , prev_batch , None ) ? ;
318
+ Ok ( ( ) )
319
+ }
382
320
321
+ pub ( super ) async fn handle_left_room_update ( & self , updates : LeftRoomUpdate ) -> Result < ( ) > {
322
+ self . handle_timeline ( updates. timeline , Vec :: new ( ) , updates. ambiguity_changes ) . await ?;
383
323
Ok ( ( ) )
384
324
}
385
325
@@ -1092,7 +1032,6 @@ mod tests {
1092
1032
1093
1033
// Don't forget to subscribe and like^W enable storage!
1094
1034
event_cache. subscribe ( ) . unwrap ( ) ;
1095
- event_cache. enable_storage ( ) . unwrap ( ) ;
1096
1035
1097
1036
client. base_client ( ) . get_or_create_room ( room_id, matrix_sdk_base:: RoomState :: Joined ) ;
1098
1037
let room = client. get_room ( room_id) . unwrap ( ) ;
@@ -1108,7 +1047,7 @@ mod tests {
1108
1047
1109
1048
room_event_cache
1110
1049
. inner
1111
- . handle_joined_room_update ( true , JoinedRoomUpdate { timeline, ..Default :: default ( ) } )
1050
+ . handle_joined_room_update ( JoinedRoomUpdate { timeline, ..Default :: default ( ) } )
1112
1051
. await
1113
1052
. unwrap ( ) ;
1114
1053
@@ -1164,7 +1103,6 @@ mod tests {
1164
1103
1165
1104
// Don't forget to subscribe and like^W enable storage!
1166
1105
event_cache. subscribe ( ) . unwrap ( ) ;
1167
- event_cache. enable_storage ( ) . unwrap ( ) ;
1168
1106
1169
1107
client. base_client ( ) . get_or_create_room ( room_id, matrix_sdk_base:: RoomState :: Joined ) ;
1170
1108
let room = client. get_room ( room_id) . unwrap ( ) ;
@@ -1181,7 +1119,7 @@ mod tests {
1181
1119
1182
1120
room_event_cache
1183
1121
. inner
1184
- . handle_joined_room_update ( true , JoinedRoomUpdate { timeline, ..Default :: default ( ) } )
1122
+ . handle_joined_room_update ( JoinedRoomUpdate { timeline, ..Default :: default ( ) } )
1185
1123
. await
1186
1124
. unwrap ( ) ;
1187
1125
@@ -1297,7 +1235,6 @@ mod tests {
1297
1235
1298
1236
// Don't forget to subscribe and like^W enable storage!
1299
1237
event_cache. subscribe ( ) . unwrap ( ) ;
1300
- event_cache. enable_storage ( ) . unwrap ( ) ;
1301
1238
1302
1239
client. base_client ( ) . get_or_create_room ( room_id, matrix_sdk_base:: RoomState :: Joined ) ;
1303
1240
let room = client. get_room ( room_id) . unwrap ( ) ;
@@ -1408,7 +1345,6 @@ mod tests {
1408
1345
1409
1346
// Don't forget to subscribe and like^W enable storage!
1410
1347
event_cache. subscribe ( ) . unwrap ( ) ;
1411
- event_cache. enable_storage ( ) . unwrap ( ) ;
1412
1348
1413
1349
client. base_client ( ) . get_or_create_room ( room_id, matrix_sdk_base:: RoomState :: Joined ) ;
1414
1350
let room = client. get_room ( room_id) . unwrap ( ) ;
@@ -1426,7 +1362,7 @@ mod tests {
1426
1362
let timeline = Timeline { limited : false , prev_batch : None , events : vec ! [ ev2] } ;
1427
1363
room_event_cache
1428
1364
. inner
1429
- . handle_joined_room_update ( true , JoinedRoomUpdate { timeline, ..Default :: default ( ) } )
1365
+ . handle_joined_room_update ( JoinedRoomUpdate { timeline, ..Default :: default ( ) } )
1430
1366
. await
1431
1367
. unwrap ( ) ;
1432
1368
@@ -1477,7 +1413,6 @@ mod tests {
1477
1413
1478
1414
// Don't forget to subscribe and like^W enable storage!
1479
1415
event_cache. subscribe ( ) . unwrap ( ) ;
1480
- event_cache. enable_storage ( ) . unwrap ( ) ;
1481
1416
1482
1417
client. base_client ( ) . get_or_create_room ( room_id, matrix_sdk_base:: RoomState :: Joined ) ;
1483
1418
let room = client. get_room ( room_id) . unwrap ( ) ;
@@ -1506,9 +1441,6 @@ mod tests {
1506
1441
let event_cache = client. event_cache ( ) ;
1507
1442
event_cache. subscribe ( ) . unwrap ( ) ;
1508
1443
1509
- let has_storage = true ; // for testing purposes only
1510
- event_cache. enable_storage ( ) . unwrap ( ) ;
1511
-
1512
1444
client. base_client ( ) . get_or_create_room ( room_id, matrix_sdk_base:: RoomState :: Joined ) ;
1513
1445
let room = client. get_room ( room_id) . unwrap ( ) ;
1514
1446
let ( room_event_cache, _drop_handles) = room. event_cache ( ) . await . unwrap ( ) ;
@@ -1519,17 +1451,14 @@ mod tests {
1519
1451
// prev-batch token.
1520
1452
room_event_cache
1521
1453
. inner
1522
- . handle_joined_room_update (
1523
- has_storage,
1524
- JoinedRoomUpdate {
1525
- timeline : Timeline {
1526
- limited : true ,
1527
- prev_batch : Some ( "raclette" . to_owned ( ) ) ,
1528
- events : vec ! [ f. text_msg( "hey yo" ) . into_sync( ) ] ,
1529
- } ,
1530
- ..Default :: default ( )
1454
+ . handle_joined_room_update ( JoinedRoomUpdate {
1455
+ timeline : Timeline {
1456
+ limited : true ,
1457
+ prev_batch : Some ( "raclette" . to_owned ( ) ) ,
1458
+ events : vec ! [ f. text_msg( "hey yo" ) . into_sync( ) ] ,
1531
1459
} ,
1532
- )
1460
+ ..Default :: default ( )
1461
+ } )
1533
1462
. await
1534
1463
. unwrap ( ) ;
1535
1464
@@ -1555,17 +1484,14 @@ mod tests {
1555
1484
// this time.
1556
1485
room_event_cache
1557
1486
. inner
1558
- . handle_joined_room_update (
1559
- has_storage,
1560
- JoinedRoomUpdate {
1561
- timeline : Timeline {
1562
- limited : false ,
1563
- prev_batch : Some ( "fondue" . to_owned ( ) ) ,
1564
- events : vec ! [ f. text_msg( "sup" ) . into_sync( ) ] ,
1565
- } ,
1566
- ..Default :: default ( )
1487
+ . handle_joined_room_update ( JoinedRoomUpdate {
1488
+ timeline : Timeline {
1489
+ limited : false ,
1490
+ prev_batch : Some ( "fondue" . to_owned ( ) ) ,
1491
+ events : vec ! [ f. text_msg( "sup" ) . into_sync( ) ] ,
1567
1492
} ,
1568
- )
1493
+ ..Default :: default ( )
1494
+ } )
1569
1495
. await
1570
1496
. unwrap ( ) ;
1571
1497
0 commit comments