fix: Collab event throttling
Signed-off-by: Mark Tolmacs <mark@lazycat.hu>
This commit is contained in:
@@ -355,6 +355,8 @@ class Collab extends PureComponent<CollabProps, CollabState> {
|
|||||||
};
|
};
|
||||||
|
|
||||||
stopCollaboration = (keepRemoteState = true) => {
|
stopCollaboration = (keepRemoteState = true) => {
|
||||||
|
this.broadcastElements.flush();
|
||||||
|
this.broadcastElements.cancel();
|
||||||
this.queueBroadcastAllElements.cancel();
|
this.queueBroadcastAllElements.cancel();
|
||||||
this.queueSaveToFirebase.cancel();
|
this.queueSaveToFirebase.cancel();
|
||||||
this.loadImageFiles.cancel();
|
this.loadImageFiles.cancel();
|
||||||
@@ -941,7 +943,9 @@ class Collab extends PureComponent<CollabProps, CollabState> {
|
|||||||
this.portal.broadcastIdleChange(userState);
|
this.portal.broadcastIdleChange(userState);
|
||||||
};
|
};
|
||||||
|
|
||||||
broadcastElements = (elements: readonly OrderedExcalidrawElement[]) => {
|
private _broadcastElements = (
|
||||||
|
elements: readonly OrderedExcalidrawElement[],
|
||||||
|
) => {
|
||||||
if (
|
if (
|
||||||
getSceneVersion(elements) >
|
getSceneVersion(elements) >
|
||||||
this.getLastBroadcastedOrReceivedSceneVersion()
|
this.getLastBroadcastedOrReceivedSceneVersion()
|
||||||
@@ -952,6 +956,13 @@ class Collab extends PureComponent<CollabProps, CollabState> {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
broadcastElements = throttle(
|
||||||
|
(elements: readonly OrderedExcalidrawElement[]) =>
|
||||||
|
this._broadcastElements(elements),
|
||||||
|
10,
|
||||||
|
{ leading: true, trailing: true },
|
||||||
|
);
|
||||||
|
|
||||||
syncElements = (elements: readonly OrderedExcalidrawElement[]) => {
|
syncElements = (elements: readonly OrderedExcalidrawElement[]) => {
|
||||||
this.broadcastElements(elements);
|
this.broadcastElements(elements);
|
||||||
this.queueSaveToFirebase();
|
this.queueSaveToFirebase();
|
||||||
|
|||||||
Reference in New Issue
Block a user