From f2564ed5cc4ad9965d6c4670c56def57ba13a91d Mon Sep 17 00:00:00 2001 From: Bruno Windels <274386+bwindels@users.noreply.github.com> Date: Fri, 30 Sep 2022 11:20:00 +0200 Subject: [PATCH] also emit updates for expired, connected members that we didn't kick --- src/matrix/calls/group/GroupCall.ts | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/matrix/calls/group/GroupCall.ts b/src/matrix/calls/group/GroupCall.ts index 0c9d3e90..db908004 100644 --- a/src/matrix/calls/group/GroupCall.ts +++ b/src/matrix/calls/group/GroupCall.ts @@ -102,14 +102,15 @@ export class GroupCall extends EventEmitter<{change: never}> { this._memberOptions = Object.assign({}, options, { confId: this.id, emitUpdate: member => { - if (!member.isExpired) { - this._members.update(getMemberKey(member.userId, member.deviceId), member); - } else if (!member.isConnected) { - // don't just kick out connected members, even if their timestamp expired - this._members.remove(getMemberKey(member.userId, member.deviceId)); - } - if (member.isExpired && member.isConnected) { - console.trace("was about to kick a connected but expired member"); + const memberKey = getMemberKey(member.userId, member.deviceId); + // only remove expired members from the call if we don't have a peer conn with them + if (member.isExpired && !member.isConnected) { + this._members.remove(memberKey); + } else { + if (member.isExpired && member.isConnected) { + console.trace("was about to kick a connected but expired member"); + } + this._members.update(memberKey, member); } }, encryptDeviceMessage: (userId: string, deviceId: string, message: SignallingMessage, log) => {