diff --git a/excalidraw-app/collab/Collab.tsx b/excalidraw-app/collab/Collab.tsx index 87bf7fb1ad..e083e3c5f9 100644 --- a/excalidraw-app/collab/Collab.tsx +++ b/excalidraw-app/collab/Collab.tsx @@ -355,6 +355,8 @@ class Collab extends PureComponent { }; stopCollaboration = (keepRemoteState = true) => { + this.broadcastElements.flush(); + this.broadcastElements.cancel(); this.queueBroadcastAllElements.cancel(); this.queueSaveToFirebase.cancel(); this.loadImageFiles.cancel(); @@ -940,7 +942,9 @@ class Collab extends PureComponent { this.portal.broadcastIdleChange(userState); }; - broadcastElements = (elements: readonly OrderedExcalidrawElement[]) => { + private _broadcastElements = ( + elements: readonly OrderedExcalidrawElement[], + ) => { if ( getSceneVersion(elements) > this.getLastBroadcastedOrReceivedSceneVersion() @@ -951,6 +955,13 @@ class Collab extends PureComponent { } }; + broadcastElements = throttle( + (elements: readonly OrderedExcalidrawElement[]) => + this._broadcastElements(elements), + 10, + { leading: true, trailing: true }, + ); + syncElements = (elements: readonly OrderedExcalidrawElement[]) => { this.broadcastElements(elements); this.queueSaveToFirebase();