From 517aec79ba62eee324a6054f92b1fd1a615d88b4 Mon Sep 17 00:00:00 2001 From: congzhou09 Date: Thu, 29 May 2025 22:30:55 +0800 Subject: [PATCH] fix(editor): invoke subscriber.unsubscribe() during cleanup (#12628) --- blocksuite/framework/sync/src/doc/engine.ts | 28 ++++++++++++--------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/blocksuite/framework/sync/src/doc/engine.ts b/blocksuite/framework/sync/src/doc/engine.ts index 83fd4ff733..cd40273c3a 100644 --- a/blocksuite/framework/sync/src/doc/engine.ts +++ b/blocksuite/framework/sync/src/doc/engine.ts @@ -132,12 +132,13 @@ export class DocEngine { this.logger ); - cleanUp.push( - state.mainPeer.onStatusChange.subscribe(() => { - if (!signal.aborted) - this.updateSyncingState(state.mainPeer, state.shadowPeers); - }).unsubscribe - ); + const subscriber = state.mainPeer.onStatusChange.subscribe(() => { + if (!signal.aborted) + this.updateSyncingState(state.mainPeer, state.shadowPeers); + }); + cleanUp.push(() => { + subscriber.unsubscribe(); + }); this.updateSyncingState(state.mainPeer, state.shadowPeers); @@ -152,12 +153,15 @@ export class DocEngine { this.priorityTarget, this.logger ); - cleanUp.push( - peer.onStatusChange.subscribe(() => { - if (!signal.aborted) - this.updateSyncingState(state.mainPeer, state.shadowPeers); - }).unsubscribe - ); + + const subscriber = peer.onStatusChange.subscribe(() => { + if (!signal.aborted) + this.updateSyncingState(state.mainPeer, state.shadowPeers); + }); + cleanUp.push(() => { + subscriber.unsubscribe(); + }); + return peer; });