refactor: move getSyncableElements to CollabWrapper & expose isInvisiblySmallElement helper (#3471)

Co-authored-by: Aakansha Doshi <aakansha1216@gmail.com>
This commit is contained in:
David Luzar 2021-04-21 23:37:44 +02:00 committed by GitHub
parent 37d513ad59
commit 3a0b6fb41b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 27 additions and 19 deletions

View file

@ -8,7 +8,6 @@ import { ExcalidrawElement } from "../../element/types";
import {
getElementMap,
getSceneVersion,
getSyncableElements,
} from "../../packages/excalidraw/index";
import { Collaborator, Gesture } from "../../types";
import { resolvablePromise, withBatchedUpdates } from "../../utils";
@ -41,6 +40,7 @@ import { t } from "../../i18n";
import { UserIdleState } from "../../types";
import { IDLE_THRESHOLD, ACTIVE_THRESHOLD } from "../../constants";
import { trackEvent } from "../../analytics";
import { isInvisiblySmallElement } from "../../element";
interface CollabState {
modalIsShown: boolean;
@ -146,7 +146,7 @@ class CollabWrapper extends PureComponent<Props, CollabState> {
};
private beforeUnload = withBatchedUpdates((event: BeforeUnloadEvent) => {
const syncableElements = getSyncableElements(
const syncableElements = this.getSyncableElements(
this.getSceneElementsIncludingDeleted(),
);
@ -177,7 +177,7 @@ class CollabWrapper extends PureComponent<Props, CollabState> {
});
saveCollabRoomToFirebase = async (
syncableElements: ExcalidrawElement[] = getSyncableElements(
syncableElements: ExcalidrawElement[] = this.getSyncableElements(
this.excalidrawAPI.getSceneElementsIncludingDeleted(),
),
) => {
@ -565,7 +565,7 @@ class CollabWrapper extends PureComponent<Props, CollabState> {
) {
this.portal.broadcastScene(
SCENE.UPDATE,
getSyncableElements(elements),
this.getSyncableElements(elements),
false,
);
this.lastBroadcastedOrReceivedSceneVersion = getSceneVersion(elements);
@ -576,7 +576,7 @@ class CollabWrapper extends PureComponent<Props, CollabState> {
queueBroadcastAllElements = throttle(() => {
this.portal.broadcastScene(
SCENE.UPDATE,
getSyncableElements(
this.getSyncableElements(
this.excalidrawAPI.getSceneElementsIncludingDeleted(),
),
true,
@ -604,6 +604,9 @@ class CollabWrapper extends PureComponent<Props, CollabState> {
});
};
getSyncableElements = (elements: readonly ExcalidrawElement[]) =>
elements.filter((el) => el.isDeleted || !isInvisiblySmallElement(el));
/** PRIVATE. Use `this.getContextValue()` instead. */
private contextValue: CollabAPI | null = null;

View file

@ -6,7 +6,6 @@ import {
import CollabWrapper from "./CollabWrapper";
import { getSyncableElements } from "../../packages/excalidraw/index";
import { ExcalidrawElement } from "../../element/types";
import { BROADCAST, SCENE } from "../app_constants";
import { UserIdleState } from "../../types";
@ -39,7 +38,9 @@ class Portal {
this.socket.on("new-user", async (_socketId: string) => {
this.broadcastScene(
SCENE.INIT,
getSyncableElements(this.collab.getSceneElementsIncludingDeleted()),
this.collab.getSyncableElements(
this.collab.getSceneElementsIncludingDeleted(),
),
/* syncAll */ true,
);
});