fix(editor): excessive battery usage (#11377)
* fix: Excessive battery usage * chore: Refactor Eraser, Lasso and Laser pointer to use AnimationController * fix: Last laser trail element is not removed from SVG --------- Signed-off-by: Mark Tolmacs <mark@lazycat.hu> Co-authored-by: dwelle <5153846+dwelle@users.noreply.github.com>
This commit is contained in:
@@ -10,7 +10,7 @@ import { API } from "./helpers/api";
|
||||
import { Pointer } from "./helpers/ui";
|
||||
import { act, GlobalTestState, render, waitFor } from "./test-utils";
|
||||
|
||||
import type { ExcalidrawProps } from "../types";
|
||||
import type { Collaborator, ExcalidrawProps, SocketId } from "../types";
|
||||
|
||||
describe("laser tool interactions", () => {
|
||||
const h = window.h;
|
||||
@@ -128,4 +128,36 @@ describe("laser tool interactions", () => {
|
||||
expect(h.state.scrollY).toBe(initialScrollY);
|
||||
expect(GlobalTestState.interactiveCanvas.style.cursor).toContain("");
|
||||
});
|
||||
|
||||
it("cleans up remote laser trails when the last collaborator leaves", async () => {
|
||||
await render(<Excalidraw />);
|
||||
|
||||
const socketId = "socket-id" as SocketId;
|
||||
const collaborators = new Map<SocketId, Collaborator>([
|
||||
[
|
||||
socketId,
|
||||
{
|
||||
pointer: {
|
||||
x: 10,
|
||||
y: 10,
|
||||
tool: "laser",
|
||||
},
|
||||
button: "down",
|
||||
},
|
||||
],
|
||||
]);
|
||||
const svgLayer = document.querySelector(".SVGLayer svg")!;
|
||||
|
||||
act(() => {
|
||||
h.app.updateScene({ collaborators });
|
||||
});
|
||||
|
||||
expect(svgLayer.querySelectorAll("path")).toHaveLength(1);
|
||||
|
||||
act(() => {
|
||||
h.app.updateScene({ collaborators: new Map() });
|
||||
});
|
||||
|
||||
expect(svgLayer.querySelectorAll("path")).toHaveLength(0);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user