toWidget `io.lotus.set_screenshare { on?: boolean }` (omit to toggle)
starts/stops sharing via the view model instead of the host clicking EC's
hidden button. The host sends it with Capability Delegation
(`delegate: "display-capture"`) where supported, so getDisplayMedia keeps
the user's click on engines that require it. `controls_state` now carries
`screenshareAction: true` so the host only uses it on a fork that has it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PPmy3tPq869XDW4njjVaKA
54 lines
1.9 KiB
TypeScript
54 lines
1.9 KiB
TypeScript
/*
|
|
Copyright 2026 Lotus Guild
|
|
|
|
SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
|
|
Please see LICENSE in the repository root for full details.
|
|
*/
|
|
|
|
import { describe, expect, it } from "vitest";
|
|
|
|
import {
|
|
parseLayoutPayload,
|
|
parseSettingsPayload,
|
|
shouldToggleScreenshare,
|
|
} from "./lotusControls";
|
|
|
|
describe("parseLayoutPayload", () => {
|
|
it("accepts grid and spotlight", () => {
|
|
expect(parseLayoutPayload({ layout: "grid" })).toBe("grid");
|
|
expect(parseLayoutPayload({ layout: "spotlight" })).toBe("spotlight");
|
|
});
|
|
it("rejects anything else", () => {
|
|
expect(parseLayoutPayload({ layout: "pip" })).toBeUndefined();
|
|
expect(parseLayoutPayload({})).toBeUndefined();
|
|
expect(parseLayoutPayload(null)).toBeUndefined();
|
|
expect(parseLayoutPayload("grid")).toBeUndefined();
|
|
});
|
|
});
|
|
|
|
describe("parseSettingsPayload", () => {
|
|
it("uses an explicit open flag", () => {
|
|
expect(parseSettingsPayload({ open: true }, true)).toBe(true);
|
|
expect(parseSettingsPayload({ open: false }, false)).toBe(false);
|
|
});
|
|
it("toggles when open is missing or not a boolean", () => {
|
|
expect(parseSettingsPayload({}, false)).toBe(true);
|
|
expect(parseSettingsPayload(undefined, true)).toBe(false);
|
|
expect(parseSettingsPayload({ open: "yes" }, true)).toBe(false);
|
|
});
|
|
});
|
|
|
|
describe("shouldToggleScreenshare", () => {
|
|
it("toggles only when an explicit on differs from the current state", () => {
|
|
expect(shouldToggleScreenshare({ on: true }, false)).toBe(true);
|
|
expect(shouldToggleScreenshare({ on: true }, true)).toBe(false);
|
|
expect(shouldToggleScreenshare({ on: false }, true)).toBe(true);
|
|
expect(shouldToggleScreenshare({ on: false }, false)).toBe(false);
|
|
});
|
|
it("toggles when on is missing or not a boolean", () => {
|
|
expect(shouldToggleScreenshare({}, false)).toBe(true);
|
|
expect(shouldToggleScreenshare({ on: "yes" }, true)).toBe(true);
|
|
expect(shouldToggleScreenshare(null, true)).toBe(true);
|
|
});
|
|
});
|