@@ -501,24 +501,32 @@ export function localStoreApplyRemoteEventToLocalCache(
501
501
} )
502
502
) ;
503
503
504
- const resumeToken = change . resumeToken ;
505
- // Update the resume token if the change includes one.
506
- if ( resumeToken . approximateByteSize ( ) > 0 ) {
507
- const newTargetData = oldTargetData
508
- . withResumeToken ( resumeToken , remoteVersion )
509
- . withSequenceNumber ( txn . currentSequenceNumber ) ;
510
- newTargetDataByTargetMap = newTargetDataByTargetMap . insert (
511
- targetId ,
512
- newTargetData
504
+ let newTargetData = oldTargetData . withSequenceNumber (
505
+ txn . currentSequenceNumber
506
+ ) ;
507
+ if ( remoteEvent . targetMismatches . has ( targetId ) ) {
508
+ newTargetData = newTargetData . withResumeToken (
509
+ ByteString . EMPTY_BYTE_STRING ,
510
+ SnapshotVersion . min ( )
511
+ ) ;
512
+ } else if ( change . resumeToken . approximateByteSize ( ) > 0 ) {
513
+ newTargetData = newTargetData . withResumeToken (
514
+ change . resumeToken ,
515
+ remoteVersion
513
516
) ;
517
+ }
514
518
515
- // Update the target data if there are target changes (or if
516
- // sufficient time has passed since the last update).
517
- if ( shouldPersistTargetData ( oldTargetData , newTargetData , change ) ) {
518
- promises . push (
519
- localStoreImpl . targetCache . updateTargetData ( txn , newTargetData )
520
- ) ;
521
- }
519
+ newTargetDataByTargetMap = newTargetDataByTargetMap . insert (
520
+ targetId ,
521
+ newTargetData
522
+ ) ;
523
+
524
+ // Update the target data if there are target changes (or if
525
+ // sufficient time has passed since the last update).
526
+ if ( shouldPersistTargetData ( oldTargetData , newTargetData , change ) ) {
527
+ promises . push (
528
+ localStoreImpl . targetCache . updateTargetData ( txn , newTargetData )
529
+ ) ;
522
530
}
523
531
} ) ;
524
532
@@ -675,11 +683,6 @@ function shouldPersistTargetData(
675
683
newTargetData : TargetData ,
676
684
change : TargetChange
677
685
) : boolean {
678
- hardAssert (
679
- newTargetData . resumeToken . approximateByteSize ( ) > 0 ,
680
- 'Attempted to persist target data with no resume token'
681
- ) ;
682
-
683
686
// Always persist target data if we don't already have a resume token.
684
687
if ( oldTargetData . resumeToken . approximateByteSize ( ) === 0 ) {
685
688
return true ;
0 commit comments