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:
parent
72e7df0f13
commit
2e0716cc59
2 changed files with 47 additions and 1 deletions
|
@ -32,6 +32,8 @@ import {
|
|||
} from "matrix-js-sdk/src/matrix";
|
||||
import { logger } from "matrix-js-sdk/src/logger";
|
||||
import { PermissionChanged as PermissionChangedEvent } from "@matrix-org/analytics-events/types/typescript/PermissionChanged";
|
||||
// eslint-disable-next-line no-restricted-imports
|
||||
import { MatrixRTCSession } from "matrix-js-sdk/src/matrixrtc/MatrixRTCSession";
|
||||
|
||||
import { MatrixClientPeg } from "./MatrixClientPeg";
|
||||
import { PosthogAnalytics } from "./PosthogAnalytics";
|
||||
|
@ -505,10 +507,16 @@ class NotifierClass {
|
|||
* Some events require special handling such as showing in-app toasts
|
||||
*/
|
||||
private performCustomEventHandling(ev: MatrixEvent): void {
|
||||
const cli = MatrixClientPeg.safeGet();
|
||||
const room = cli.getRoom(ev.getRoomId());
|
||||
const thisUserHasConnectedDevice =
|
||||
room && MatrixRTCSession.callMembershipsForRoom(room).some((m) => m.sender === cli.getUserId());
|
||||
|
||||
if (
|
||||
EventType.CallNotify === ev.getType() &&
|
||||
SettingsStore.getValue("feature_group_calls") &&
|
||||
(ev.getAge() ?? 0) < 10000
|
||||
(ev.getAge() ?? 0) < 10000 &&
|
||||
!thisUserHasConnectedDevice
|
||||
) {
|
||||
const content = ev.getContent();
|
||||
const roomId = ev.getRoomId();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue