@@ -490,19 +490,23 @@ export class Realm {
490
490
: ( await this . #adapter. exists ( path ) )
491
491
? 'updated'
492
492
: 'added' ;
493
- let messageHash = ` ${ type } - ${ JSON . stringify ( { [ type ] : path } ) } ` ;
493
+ let recentWritesKey = this . constructRecentWritesKey ( type , path ) ;
494
494
this . #recentWrites. set (
495
- messageHash ,
495
+ recentWritesKey ,
496
496
setTimeout ( ( ) => {
497
- this . #recentWrites. delete ( messageHash ) ;
497
+ this . #recentWrites. delete ( recentWritesKey ) ;
498
498
} , 500 ) as unknown as number , // don't use NodeJS Timeout type
499
499
) ;
500
500
}
501
501
502
+ private constructRecentWritesKey ( operation : string , path : string ) {
503
+ return `${ operation } -${ JSON . stringify ( { [ operation ] : path } ) } ` ;
504
+ }
505
+
502
506
private getTrackedWrite (
503
507
data : UpdateRealmEventContent ,
504
508
) : { isTracked : boolean ; url : URL } | undefined {
505
- let file : string | undefined ;
509
+ let file : string ;
506
510
let type : string | undefined ;
507
511
if ( 'updated' in data ) {
508
512
file = data . updated ;
@@ -516,14 +520,14 @@ export class Realm {
516
520
} else {
517
521
return ;
518
522
}
519
- let messageHash = ` ${ type } - ${ JSON . stringify ( data ) } ` ;
523
+ let recentWritesKey = this . constructRecentWritesKey ( type , file ) ;
520
524
let url = this . paths . fileURL ( file ) ;
521
- let timeout = this . #recentWrites. get ( messageHash ) ;
525
+ let timeout = this . #recentWrites. get ( recentWritesKey ) ;
522
526
if ( timeout ) {
523
527
// This is a best attempt to eliminate an echo here since it's unclear whether this update is one
524
528
// that we wrote or one that was created outside of us
525
529
clearTimeout ( timeout ) ;
526
- this . #recentWrites. delete ( messageHash ) ;
530
+ this . #recentWrites. delete ( recentWritesKey ) ;
527
531
return { isTracked : true , url } ;
528
532
}
529
533
return { isTracked : false , url } ;
0 commit comments