diff --git a/src/models/Call.ts b/src/models/Call.ts index 93a75a200d..04dc5da716 100644 --- a/src/models/Call.ts +++ b/src/models/Call.ts @@ -85,15 +85,9 @@ export enum ConnectionState { export const isConnected = (state: ConnectionState): boolean => state === ConnectionState.Connected || state === ConnectionState.Disconnecting; -export enum Layout { - Tile = "tile", - Spotlight = "spotlight", -} - export enum CallEvent { ConnectionState = "connection_state", Participants = "participants", - Layout = "layout", Close = "close", Destroy = "destroy", } @@ -104,7 +98,6 @@ interface CallEventHandlerMap { participants: Map>, prevParticipants: Map>, ) => void; - [CallEvent.Layout]: (layout: Layout) => void; [CallEvent.Close]: () => void; [CallEvent.Destroy]: () => void; } @@ -658,14 +651,6 @@ export class ElementCall extends Call { private settingsStoreCallEncryptionWatcher?: string; private terminationTimer?: number; - private _layout = Layout.Tile; - public get layout(): Layout { - return this._layout; - } - protected set layout(value: Layout) { - this._layout = value; - this.emit(CallEvent.Layout, value); - } public get presented(): boolean { return super.presented; @@ -874,8 +859,6 @@ export class ElementCall extends Call { audioInput: MediaDeviceInfo | null, videoInput: MediaDeviceInfo | null, ): Promise { - this.messaging!.on(`action:${ElementWidgetActions.TileLayout}`, this.onTileLayout); - this.messaging!.on(`action:${ElementWidgetActions.SpotlightLayout}`, this.onSpotlightLayout); this.messaging!.on(`action:${ElementWidgetActions.HangupCall}`, this.onHangup); this.messaging!.once(`action:${ElementWidgetActions.Close}`, this.onClose); this.messaging!.on(`action:${ElementWidgetActions.DeviceMute}`, this.onDeviceMute); @@ -919,8 +902,6 @@ export class ElementCall extends Call { } public setDisconnected(): void { - this.messaging!.off(`action:${ElementWidgetActions.TileLayout}`, this.onTileLayout); - this.messaging!.off(`action:${ElementWidgetActions.SpotlightLayout}`, this.onSpotlightLayout); this.messaging!.off(`action:${ElementWidgetActions.HangupCall}`, this.onHangup); this.messaging!.off(`action:${ElementWidgetActions.DeviceMute}`, this.onDeviceMute); super.setDisconnected(); @@ -945,15 +926,6 @@ export class ElementCall extends Call { if (this.session.memberships.length === 0 && !this.presented && !this.room.isCallRoom()) this.destroy(); }; - /** - * Sets the call's layout. - * @param layout The layout to switch to. - */ - public async setLayout(layout: Layout): Promise { - const action = layout === Layout.Tile ? ElementWidgetActions.TileLayout : ElementWidgetActions.SpotlightLayout; - await this.messaging!.transport.send(action, {}); - } - private readonly onMembershipChanged = (): void => this.updateParticipants(); private updateParticipants(): void { @@ -997,18 +969,6 @@ export class ElementCall extends Call { this.close(); }; - private readonly onTileLayout = async (ev: CustomEvent): Promise => { - ev.preventDefault(); - this.layout = Layout.Tile; - this.messaging!.transport.reply(ev.detail, {}); // ack - }; - - private readonly onSpotlightLayout = async (ev: CustomEvent): Promise => { - ev.preventDefault(); - this.layout = Layout.Spotlight; - this.messaging!.transport.reply(ev.detail, {}); // ack - }; - public clean(): Promise { return Promise.resolve(); } diff --git a/test/unit-tests/models/Call-test.ts b/test/unit-tests/models/Call-test.ts index 923b964325..6954ee14be 100644 --- a/test/unit-tests/models/Call-test.ts +++ b/test/unit-tests/models/Call-test.ts @@ -34,7 +34,6 @@ import type { Mocked } from "jest-mock"; import type { ClientWidgetApi } from "matrix-widget-api"; import { type JitsiCallMemberContent, - Layout, Call, CallEvent, ConnectionState, @@ -912,33 +911,6 @@ describe("ElementCall", () => { expect(call.connectionState).toBe(ConnectionState.Disconnected); }); - it("tracks layout", async () => { - await callConnectProcedure(call); - expect(call.layout).toBe(Layout.Tile); - - messaging.emit( - `action:${ElementWidgetActions.SpotlightLayout}`, - new CustomEvent("widgetapirequest", { detail: {} }), - ); - expect(call.layout).toBe(Layout.Spotlight); - - messaging.emit( - `action:${ElementWidgetActions.TileLayout}`, - new CustomEvent("widgetapirequest", { detail: {} }), - ); - expect(call.layout).toBe(Layout.Tile); - }); - - it("sets layout", async () => { - await callConnectProcedure(call); - - await call.setLayout(Layout.Spotlight); - expect(messaging.transport.send).toHaveBeenCalledWith(ElementWidgetActions.SpotlightLayout, {}); - - await call.setLayout(Layout.Tile); - expect(messaging.transport.send).toHaveBeenCalledWith(ElementWidgetActions.TileLayout, {}); - }); - it("acknowledges mute_device widget action", async () => { await callConnectProcedure(call); const preventDefault = jest.fn(); @@ -978,24 +950,6 @@ describe("ElementCall", () => { call.off(CallEvent.Participants, onParticipants); }); - it("emits events when layout changes", async () => { - await callConnectProcedure(call); - const onLayout = jest.fn(); - call.on(CallEvent.Layout, onLayout); - - messaging.emit( - `action:${ElementWidgetActions.SpotlightLayout}`, - new CustomEvent("widgetapirequest", { detail: {} }), - ); - messaging.emit( - `action:${ElementWidgetActions.TileLayout}`, - new CustomEvent("widgetapirequest", { detail: {} }), - ); - expect(onLayout.mock.calls).toEqual([[Layout.Spotlight], [Layout.Tile]]); - - call.off(CallEvent.Layout, onLayout); - }); - it("ends the call immediately if the session ended", async () => { await callConnectProcedure(call); const onDestroy = jest.fn();