Delegate the sending of call notifications to Element Call (#30507)
* Move Element Call event types to a more appropriate file To remove the potential for import cycles in src/models/Call.ts, which I was accidentally creating when I tried to reference data from the RoomListStore in the ElementCall class. * Make sure ElementCall tests clean up the call object * Upgrade Element Call to v0.14.1 * Delegate the sending of call notifications to Element Call As of Element Call version 0.14.0, the widget is now capable of sending call notifications itself if we just request this with the sendNotificationType URL parameter. This makes Element Web's group call code a little bit more succinct. * Fix createRoom test
This commit is contained in:
@@ -48,7 +48,7 @@ import SettingsStore from "../../../../../../src/settings/SettingsStore";
|
||||
import SdkConfig from "../../../../../../src/SdkConfig";
|
||||
import dispatcher from "../../../../../../src/dispatcher/dispatcher";
|
||||
import { CallStore } from "../../../../../../src/stores/CallStore";
|
||||
import { type Call, ElementCall } from "../../../../../../src/models/Call";
|
||||
import { type Call } from "../../../../../../src/models/Call";
|
||||
import * as ShieldUtils from "../../../../../../src/utils/ShieldUtils";
|
||||
import { Container, WidgetLayoutStore } from "../../../../../../src/stores/widgets/WidgetLayoutStore";
|
||||
import MatrixClientContext from "../../../../../../src/contexts/MatrixClientContext";
|
||||
@@ -58,6 +58,7 @@ import { SdkContextClass } from "../../../../../../src/contexts/SDKContext";
|
||||
import WidgetStore, { type IApp } from "../../../../../../src/stores/WidgetStore";
|
||||
import { UIFeature } from "../../../../../../src/settings/UIFeature";
|
||||
import { SettingLevel } from "../../../../../../src/settings/SettingLevel";
|
||||
import { ElementCallMemberEventType } from "../../../../../../src/call-types";
|
||||
|
||||
jest.mock("../../../../../../src/utils/ShieldUtils");
|
||||
jest.mock("../../../../../../src/hooks/right-panel/useCurrentPhase", () => ({
|
||||
@@ -599,7 +600,7 @@ describe("RoomHeader", () => {
|
||||
mockRoomMembers(room, 3);
|
||||
|
||||
jest.spyOn(room.currentState, "mayClientSendStateEvent").mockImplementation((key) => {
|
||||
if (key === ElementCall.MEMBER_EVENT_TYPE.name) return true;
|
||||
if (key === ElementCallMemberEventType.name) return true;
|
||||
return false;
|
||||
});
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ import RolesRoomSettingsTab from "../../../../../../../src/components/views/sett
|
||||
import { mkStubRoom, withClientContextRenderOptions, stubClient } from "../../../../../../test-utils";
|
||||
import { MatrixClientPeg } from "../../../../../../../src/MatrixClientPeg";
|
||||
import SettingsStore from "../../../../../../../src/settings/SettingsStore";
|
||||
import { ElementCall } from "../../../../../../../src/models/Call";
|
||||
import { ElementCallEventType, ElementCallMemberEventType } from "../../../../../../../src/call-types";
|
||||
|
||||
describe("RolesRoomSettingsTab", () => {
|
||||
const userId = "@alice:server.org";
|
||||
@@ -116,7 +116,7 @@ describe("RolesRoomSettingsTab", () => {
|
||||
expect(getJoinCallSelectedOption(tab)?.textContent).toBe("Default");
|
||||
expect(cli.sendStateEvent).toHaveBeenCalledWith(roomId, EventType.RoomPowerLevels, {
|
||||
events: {
|
||||
[ElementCall.MEMBER_EVENT_TYPE.name]: 0,
|
||||
[ElementCallMemberEventType.name]: 0,
|
||||
},
|
||||
});
|
||||
});
|
||||
@@ -137,7 +137,7 @@ describe("RolesRoomSettingsTab", () => {
|
||||
expect(getStartCallSelectedOption(tab)?.textContent).toBe("Default");
|
||||
expect(cli.sendStateEvent).toHaveBeenCalledWith(roomId, EventType.RoomPowerLevels, {
|
||||
events: {
|
||||
[ElementCall.CALL_EVENT_TYPE.name]: 0,
|
||||
[ElementCallEventType.name]: 0,
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
@@ -13,7 +13,7 @@ import { type MatrixClient, type Room, type MatrixEvent, EventType, JoinRule } f
|
||||
import { mkStubRoom, stubClient } from "../../../../../../test-utils";
|
||||
import { MatrixClientPeg } from "../../../../../../../src/MatrixClientPeg";
|
||||
import { VoipRoomSettingsTab } from "../../../../../../../src/components/views/settings/tabs/room/VoipRoomSettingsTab";
|
||||
import { ElementCall } from "../../../../../../../src/models/Call";
|
||||
import { ElementCallEventType, ElementCallMemberEventType } from "../../../../../../../src/call-types";
|
||||
|
||||
describe("VoipRoomSettingsTab", () => {
|
||||
const roomId = "!room:example.com";
|
||||
@@ -48,7 +48,7 @@ describe("VoipRoomSettingsTab", () => {
|
||||
|
||||
describe("correct state", () => {
|
||||
it("shows enabled when call member power level is 0", () => {
|
||||
mockPowerLevels({ [ElementCall.MEMBER_EVENT_TYPE.name]: 0 });
|
||||
mockPowerLevels({ [ElementCallMemberEventType.name]: 0 });
|
||||
|
||||
const tab = renderTab();
|
||||
|
||||
@@ -56,7 +56,7 @@ describe("VoipRoomSettingsTab", () => {
|
||||
});
|
||||
|
||||
it.each([1, 50, 100])("shows disabled when call member power level is 0", (level: number) => {
|
||||
mockPowerLevels({ [ElementCall.MEMBER_EVENT_TYPE.name]: level });
|
||||
mockPowerLevels({ [ElementCallMemberEventType.name]: level });
|
||||
|
||||
const tab = renderTab();
|
||||
|
||||
@@ -67,7 +67,7 @@ describe("VoipRoomSettingsTab", () => {
|
||||
describe("enabling/disabling", () => {
|
||||
describe("enabling Element calls", () => {
|
||||
beforeEach(() => {
|
||||
mockPowerLevels({ [ElementCall.MEMBER_EVENT_TYPE.name]: 100 });
|
||||
mockPowerLevels({ [ElementCallMemberEventType.name]: 100 });
|
||||
});
|
||||
|
||||
it("enables Element calls in public room", async () => {
|
||||
@@ -82,8 +82,8 @@ describe("VoipRoomSettingsTab", () => {
|
||||
EventType.RoomPowerLevels,
|
||||
expect.objectContaining({
|
||||
events: {
|
||||
[ElementCall.CALL_EVENT_TYPE.name]: 50,
|
||||
[ElementCall.MEMBER_EVENT_TYPE.name]: 0,
|
||||
[ElementCallEventType.name]: 50,
|
||||
[ElementCallMemberEventType.name]: 0,
|
||||
},
|
||||
}),
|
||||
),
|
||||
@@ -102,8 +102,8 @@ describe("VoipRoomSettingsTab", () => {
|
||||
EventType.RoomPowerLevels,
|
||||
expect.objectContaining({
|
||||
events: {
|
||||
[ElementCall.CALL_EVENT_TYPE.name]: 0,
|
||||
[ElementCall.MEMBER_EVENT_TYPE.name]: 0,
|
||||
[ElementCallEventType.name]: 0,
|
||||
[ElementCallMemberEventType.name]: 0,
|
||||
},
|
||||
}),
|
||||
),
|
||||
@@ -112,7 +112,7 @@ describe("VoipRoomSettingsTab", () => {
|
||||
});
|
||||
|
||||
it("disables Element calls", async () => {
|
||||
mockPowerLevels({ [ElementCall.MEMBER_EVENT_TYPE.name]: 0 });
|
||||
mockPowerLevels({ [ElementCallMemberEventType.name]: 0 });
|
||||
|
||||
const tab = renderTab();
|
||||
|
||||
@@ -123,8 +123,8 @@ describe("VoipRoomSettingsTab", () => {
|
||||
EventType.RoomPowerLevels,
|
||||
expect.objectContaining({
|
||||
events: {
|
||||
[ElementCall.CALL_EVENT_TYPE.name]: 100,
|
||||
[ElementCall.MEMBER_EVENT_TYPE.name]: 100,
|
||||
[ElementCallEventType.name]: 100,
|
||||
[ElementCallMemberEventType.name]: 100,
|
||||
},
|
||||
}),
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user