@@ -18,6 +18,7 @@ import {
1818import {
1919 type ChangeMessage ,
2020 ValidationResultSet ,
21+ makeUserSessionId ,
2122} from '@apollo-annotation/shared'
2223import { getConf } from '@jbrowse/core/configuration'
2324import { type BaseInternetAccountModel } from '@jbrowse/core/pluggableElementTypes'
@@ -154,6 +155,10 @@ export class CollaborationServerDriver extends BackendDriver {
154155 ) {
155156 const { socket } = internetAccount
156157 const token = internetAccount . retrieveToken ( )
158+ if ( ! token ) {
159+ return
160+ }
161+ const localSessionId = makeUserSessionId ( token )
157162 const channel = `${ assembly } -${ refSeq } `
158163 const changeManager = new ChangeManager ( this . clientStore )
159164
@@ -163,11 +168,12 @@ export class CollaborationServerDriver extends BackendDriver {
163168 internetAccount . setLastChangeSequenceNumber (
164169 Number ( message . changeSequence ) ,
165170 )
166- if ( message . userSessionId !== token && message . channel === channel ) {
167- const change = Change . fromJSON ( message . changeInfo )
168- if ( isFeatureChange ( change ) && this . haveDataForChange ( change ) ) {
169- await changeManager . submit ( change , { submitToBackend : false } )
170- }
171+ if ( message . userSessionId === localSessionId ) {
172+ return // we did this change, no need to apply it again
173+ }
174+ const change = Change . fromJSON ( message . changeInfo )
175+ if ( isFeatureChange ( change ) && this . haveDataForChange ( change ) ) {
176+ await changeManager . submit ( change , { submitToBackend : false } )
171177 }
172178 } )
173179 }
0 commit comments