You've already forked matrix-react-sdk
mirror of
https://github.com/matrix-org/matrix-react-sdk.git
synced 2025-07-30 02:21:17 +03:00
Fix unwanted ringing of other devices even though the user is already connected to the call. (#12742)
* Fix call ringing on other device when already joined. This is done by checking if a user is already connected to the call on another device before playing the ring sound. * Add test
This commit is contained in:
@ -26,6 +26,10 @@ import {
|
||||
SyncState,
|
||||
} from "matrix-js-sdk/src/matrix";
|
||||
import { waitFor } from "@testing-library/react";
|
||||
// eslint-disable-next-line no-restricted-imports
|
||||
import { MatrixRTCSession } from "matrix-js-sdk/src/matrixrtc/MatrixRTCSession";
|
||||
// eslint-disable-next-line no-restricted-imports
|
||||
import { CallMembership } from "matrix-js-sdk/src/matrixrtc/CallMembership";
|
||||
|
||||
import BasePlatform from "../src/BasePlatform";
|
||||
import Notifier from "../src/Notifier";
|
||||
@ -139,6 +143,11 @@ describe("Notifier", () => {
|
||||
getRoom: jest.fn(),
|
||||
getPushActionsForEvent: jest.fn(),
|
||||
supportsThreads: jest.fn().mockReturnValue(false),
|
||||
matrixRTC: {
|
||||
on: jest.fn(),
|
||||
off: jest.fn(),
|
||||
getRoomSession: jest.fn(),
|
||||
},
|
||||
});
|
||||
|
||||
mockClient.pushRules = {
|
||||
@ -455,6 +464,35 @@ describe("Notifier", () => {
|
||||
expect(ToastStore.sharedInstance().addOrReplaceToast).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("should not show toast when group call is already connected", () => {
|
||||
setGroupCallsEnabled(true);
|
||||
const spyCallMemberships = jest.spyOn(MatrixRTCSession, "callMembershipsForRoom").mockReturnValue([
|
||||
new CallMembership(
|
||||
mkEvent({
|
||||
event: true,
|
||||
room: testRoom.roomId,
|
||||
user: userId,
|
||||
type: EventType.GroupCallMemberPrefix,
|
||||
content: {},
|
||||
}),
|
||||
{
|
||||
call_id: "123",
|
||||
application: "m.call",
|
||||
focus_active: { type: "livekit" },
|
||||
foci_preferred: [],
|
||||
device_id: "DEVICE",
|
||||
},
|
||||
),
|
||||
]);
|
||||
|
||||
const roomSession = MatrixRTCSession.roomSessionForRoom(mockClient, testRoom);
|
||||
|
||||
mockClient.matrixRTC.getRoomSession.mockReturnValue(roomSession);
|
||||
emitCallNotifyEvent();
|
||||
expect(ToastStore.sharedInstance().addOrReplaceToast).not.toHaveBeenCalled();
|
||||
spyCallMemberships.mockRestore();
|
||||
});
|
||||
|
||||
it("should not show toast when calling with non-group call event", () => {
|
||||
setGroupCallsEnabled(true);
|
||||
|
||||
|
Reference in New Issue
Block a user