also emit updates for expired, connected members that we didn't kick

This commit is contained in:
Bruno Windels 2022-09-30 11:20:00 +02:00
parent b5f686b10e
commit f2564ed5cc

View File

@ -102,15 +102,16 @@ export class GroupCall extends EventEmitter<{change: never}> {
this._memberOptions = Object.assign({}, options, { this._memberOptions = Object.assign({}, options, {
confId: this.id, confId: this.id,
emitUpdate: member => { emitUpdate: member => {
if (!member.isExpired) { const memberKey = getMemberKey(member.userId, member.deviceId);
this._members.update(getMemberKey(member.userId, member.deviceId), member); // only remove expired members from the call if we don't have a peer conn with them
} else if (!member.isConnected) { if (member.isExpired && !member.isConnected) {
// don't just kick out connected members, even if their timestamp expired this._members.remove(memberKey);
this._members.remove(getMemberKey(member.userId, member.deviceId)); } else {
}
if (member.isExpired && member.isConnected) { if (member.isExpired && member.isConnected) {
console.trace("was about to kick a connected but expired member"); console.trace("was about to kick a connected but expired member");
} }
this._members.update(memberKey, member);
}
}, },
encryptDeviceMessage: (userId: string, deviceId: string, message: SignallingMessage<MGroupCallBase>, log) => { encryptDeviceMessage: (userId: string, deviceId: string, message: SignallingMessage<MGroupCallBase>, log) => {
return this.options.encryptDeviceMessage(this.roomId, userId, deviceId, message, log); return this.options.encryptDeviceMessage(this.roomId, userId, deviceId, message, log);