@@ -31,6 +31,7 @@ import Quill, { Delta, EmitterSource, Range } from 'quill';
3131import { User } from 'realtime-server/lib/esm/common/models/user' ;
3232import { createTestUser } from 'realtime-server/lib/esm/common/models/user-test-data' ;
3333import { WritingSystem } from 'realtime-server/lib/esm/common/models/writing-system' ;
34+ import { Json0OpBuilder } from 'realtime-server/lib/esm/common/utils/json0-op-builder' ;
3435import { obj } from 'realtime-server/lib/esm/common/utils/obj-path' ;
3536import { RecursivePartial } from 'realtime-server/lib/esm/common/utils/type-utils' ;
3637import { BiblicalTerm } from 'realtime-server/lib/esm/scriptureforge/models/biblical-term' ;
@@ -70,6 +71,7 @@ import { CONSOLE } from 'xforge-common/browser-globals';
7071import { BugsnagService } from 'xforge-common/bugsnag.service' ;
7172import { createTestFeatureFlag , FeatureFlagService } from 'xforge-common/feature-flags/feature-flag.service' ;
7273import { GenericDialogComponent , GenericDialogOptions } from 'xforge-common/generic-dialog/generic-dialog.component' ;
74+ import { MemoryRealtimeDocAdapter } from 'xforge-common/memory-realtime-remote-store' ;
7375import { UserDoc } from 'xforge-common/models/user-doc' ;
7476import { NoticeService } from 'xforge-common/notice.service' ;
7577import { OnlineStatusService } from 'xforge-common/online-status.service' ;
@@ -3373,7 +3375,7 @@ describe('EditorComponent', () => {
33733375 env . dispose ( ) ;
33743376 } ) ) ;
33753377
3376- it ( 'should remove resolved notes after a remote update' , fakeAsync ( ( ) => {
3378+ it ( 'should remove resolved notes after a remote update' , fakeAsync ( async ( ) => {
33773379 const env = new TestEnvironment ( ) ;
33783380 env . setProjectUserConfig ( ) ;
33793381 env . wait ( ) ;
@@ -3382,7 +3384,7 @@ describe('EditorComponent', () => {
33823384 let noteThreadEmbedCount = env . countNoteThreadEmbeds ( contents . ops ! ) ;
33833385 expect ( noteThreadEmbedCount ) . toEqual ( 5 ) ;
33843386
3385- env . resolveNote ( 'project01' , 'dataid01' ) ;
3387+ await env . resolveNote ( 'project01' , 'dataid01' , 'remote ') ;
33863388 contents = env . targetEditor . getContents ( ) ;
33873389 noteThreadEmbedCount = env . countNoteThreadEmbeds ( contents . ops ! ) ;
33883390 expect ( noteThreadEmbedCount ) . toEqual ( 4 ) ;
@@ -5594,10 +5596,19 @@ class TestEnvironment {
55945596 return noteEmbedCount ;
55955597 }
55965598
5597- resolveNote ( projectId : string , threadId : string ) : void {
5599+ async resolveNote ( projectId : string , threadId : string , origin : 'local' | 'remote' ) : Promise < void > {
55985600 const noteDoc : NoteThreadDoc = this . getNoteThreadDoc ( projectId , threadId ) ;
5599- noteDoc . submitJson0Op ( op => op . set ( n => n . status , NoteStatus . Resolved ) ) ;
5600- this . realtimeService . updateQueryAdaptersRemote ( ) ;
5601+ const ops = op => op . set ( n => n . status , NoteStatus . Resolved ) ;
5602+
5603+ if ( origin === 'remote' ) {
5604+ const docAdapter : MemoryRealtimeDocAdapter = noteDoc . adapter as MemoryRealtimeDocAdapter ;
5605+ const builder = new Json0OpBuilder ( noteDoc . data ) ;
5606+ ops ( builder ) ;
5607+ const operations = builder . op ;
5608+ this . realtimeService . simulateRemoteChange ( docAdapter , operations ) ;
5609+ } else {
5610+ await noteDoc . submitJson0Op ( ops ) ;
5611+ }
56015612 this . wait ( ) ;
56025613 }
56035614
0 commit comments