Fix misunderstanding of functional members (#11918)

* fix misunderstanding of functional members

Signed-off-by: Timo K <toger5@hotmail.de>

* unused import

Signed-off-by: Timo K <toger5@hotmail.de>

---------

Signed-off-by: Timo K <toger5@hotmail.de>
pull/28788/head^2
Timo 2023-11-22 13:08:16 +01:00 committed by GitHub
parent 52e3e0de1f
commit b5178e3733
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 10 additions and 25 deletions

View File

@ -53,7 +53,7 @@ import { getCurrentLanguage } from "../languageHandler";
import { FontWatcher } from "../settings/watchers/FontWatcher";
import { PosthogAnalytics } from "../PosthogAnalytics";
import { UPDATE_EVENT } from "../stores/AsyncStore";
import { getFunctionalMembers } from "../utils/room/getFunctionalMembers";
import { getJoinedNonFunctionalMembers } from "../utils/room/getJoinedNonFunctionalMembers";
const TIMEOUT_MS = 16000;
@ -773,7 +773,7 @@ export class ElementCall extends Call {
// We only want to ring in rooms that have less or equal to NOTIFY_MEMBER_LIMIT participants. For really large rooms we don't want to ring.
const NOTIFY_MEMBER_LIMIT = 15;
const memberCount = getFunctionalMembers(room).length;
const memberCount = getJoinedNonFunctionalMembers(room).length;
if (!isVideoRoom && existingRoomCallMembers.length == 0 && memberCount <= NOTIFY_MEMBER_LIMIT) {
// send ringing event
const content: ICallNotifyContent = {

View File

@ -19,7 +19,9 @@ import { Room, RoomMember } from "matrix-js-sdk/src/matrix";
import { getFunctionalMembers } from "./getFunctionalMembers";
/**
* Returns all room members that are non-functional (bots etc.).
* Returns all room members that are non-functional (all actual room members).
*
* A functional user is a user that is not a real user, but a bot, assistant, etc.
*/
export const getJoinedNonFunctionalMembers = (room: Room): RoomMember[] => {
const functionalMembers = getFunctionalMembers(room);

View File

@ -17,15 +17,7 @@ limitations under the License.
import EventEmitter from "events";
import { mocked } from "jest-mock";
import { waitFor } from "@testing-library/react";
import {
RoomType,
Room,
RoomEvent,
MatrixEvent,
RoomStateEvent,
PendingEventOrdering,
UNSTABLE_ELEMENT_FUNCTIONAL_USERS,
} from "matrix-js-sdk/src/matrix";
import { RoomType, Room, RoomEvent, MatrixEvent, RoomStateEvent, PendingEventOrdering } from "matrix-js-sdk/src/matrix";
import { Widget } from "matrix-widget-api";
// eslint-disable-next-line no-restricted-imports
import { MatrixRTCSessionManagerEvents } from "matrix-js-sdk/src/matrixrtc/MatrixRTCSessionManager";
@ -991,20 +983,11 @@ describe("ElementCall", () => {
});
});
describe("create call", () => {
function setFunctionalMembers(members: string[]) {
room.currentState.setStateEvents([
mkEvent({
event: true,
type: UNSTABLE_ELEMENT_FUNCTIONAL_USERS.name,
user: "@user:example.com",
room: room.roomId,
skey: "",
content: { service_members: members },
}),
]);
function setRoomMembers(memberIds: string[]) {
jest.spyOn(room, "getJoinedMembers").mockReturnValue(memberIds.map((id) => ({ userId: id } as RoomMember)));
}
beforeEach(async () => {
setFunctionalMembers(["@user:example.com", "@user2:example.com", "@user4:example.com"]);
setRoomMembers(["@user:example.com", "@user2:example.com", "@user4:example.com"]);
});
it("sends notify event on create in a room with more than two members", async () => {
const sendEventSpy = jest.spyOn(room.client, "sendEvent");
@ -1017,7 +1000,7 @@ describe("ElementCall", () => {
});
});
it("sends ring on create in a DM (two participants) room", async () => {
setFunctionalMembers(["@user:example.com", "@user2:example.com"]);
setRoomMembers(["@user:example.com", "@user2:example.com"]);
const sendEventSpy = jest.spyOn(room.client, "sendEvent");
await ElementCall.create(room);