You've already forked matrix-js-sdk
mirror of
https://github.com/matrix-org/matrix-js-sdk.git
synced 2025-11-25 05:23:13 +03:00
Ignore memberships of users that are not in the call (#4065)
* ignore memberships of users that are not in the call Signed-off-by: Timo K <toger5@hotmail.de> * recompute memberships on room member change. Signed-off-by: Timo K <toger5@hotmail.de> * fix Tests and add test for left member Signed-off-by: Timo K <toger5@hotmail.de> * fix event type Signed-off-by: Timo K <toger5@hotmail.de> * fix import desaster Signed-off-by: Timo K <toger5@hotmail.de> * fix mocks Signed-off-by: Timo K <toger5@hotmail.de> --------- Signed-off-by: Timo K <toger5@hotmail.de>
This commit is contained in:
@@ -21,6 +21,7 @@ import { Room } from "../models/room";
|
||||
import { MatrixClient } from "../client";
|
||||
import { EventType } from "../@types/event";
|
||||
import { CallMembership, CallMembershipData } from "./CallMembership";
|
||||
import { RoomStateEvent } from "../models/room-state";
|
||||
import { Focus } from "./focus";
|
||||
import { MatrixError, MatrixEvent } from "../matrix";
|
||||
import { randomString, secureRandomBase64Url } from "../randomstring";
|
||||
@@ -152,9 +153,11 @@ export class MatrixRTCSession extends TypedEventEmitter<MatrixRTCSessionEvent, M
|
||||
}
|
||||
|
||||
if (membership.isExpired()) {
|
||||
logger.info(
|
||||
`Ignoring expired device membership ${memberEvent.getSender()}/${membership.deviceId}`,
|
||||
);
|
||||
logger.info(`Ignoring expired device membership ${membership.sender}/${membership.deviceId}`);
|
||||
continue;
|
||||
}
|
||||
if (!room.hasMembershipState(membership.sender ?? "", "join")) {
|
||||
logger.info(`Ignoring membership of user ${membership.sender} who is not in the room.`);
|
||||
continue;
|
||||
}
|
||||
callMemberships.push(membership);
|
||||
@@ -191,6 +194,8 @@ export class MatrixRTCSession extends TypedEventEmitter<MatrixRTCSessionEvent, M
|
||||
) {
|
||||
super();
|
||||
this._callId = memberships[0]?.callId;
|
||||
const roomState = this.room.getLiveTimeline().getState(EventTimeline.FORWARDS);
|
||||
roomState?.on(RoomStateEvent.Members, this.onMembershipUpdate);
|
||||
this.setExpiryTimer();
|
||||
}
|
||||
|
||||
@@ -214,6 +219,8 @@ export class MatrixRTCSession extends TypedEventEmitter<MatrixRTCSessionEvent, M
|
||||
clearTimeout(this.memberEventTimeout);
|
||||
this.memberEventTimeout = undefined;
|
||||
}
|
||||
const roomState = this.room.getLiveTimeline().getState(EventTimeline.FORWARDS);
|
||||
roomState?.off(RoomStateEvent.Members, this.onMembershipUpdate);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user