Skip to content

Commit 0f08c00

Browse files
authored
Be specific about what is considered a MSC4143 call member event. (#4328)
* Be specific about what is considered a MSC4143 call member event. * review * check for empty event first * Optimize for new session type events If its a session type event we do not want to run two "key in" checks. We expect legacy events to be the less comment type going forward. * awkward but necessary key count optimization
1 parent 6b261b9 commit 0f08c00

File tree

1 file changed

+11
-10
lines changed

1 file changed

+11
-10
lines changed

src/matrixrtc/MatrixRTCSession.ts

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -160,26 +160,27 @@ export class MatrixRTCSession extends TypedEventEmitter<MatrixRTCSessionEvent, M
160160
const callMemberships: CallMembership[] = [];
161161
for (const memberEvent of callMemberEvents) {
162162
const content = memberEvent.getContent();
163+
const eventKeysCount = Object.keys(content).length;
164+
// Dont even bother about empty events (saves us from costly type/"key in" checks in bigger rooms)
165+
if (eventKeysCount === 0) continue;
166+
163167
let membershipContents: any[] = [];
168+
164169
// We first decide if its a MSC4143 event (per device state key)
165-
if ("memberships" in content) {
170+
if (eventKeysCount > 1 && "focus_active" in content) {
171+
// We have a MSC4143 event membership event
172+
membershipContents.push(content);
173+
} else if (eventKeysCount === 1 && "memberships" in content) {
166174
// we have a legacy (one event for all devices) event
167175
if (!Array.isArray(content["memberships"])) {
168176
logger.warn(`Malformed member event from ${memberEvent.getSender()}: memberships is not an array`);
169177
continue;
170178
}
171179
membershipContents = content["memberships"];
172-
} else {
173-
// We have a MSC4143 event membership event
174-
if (Object.keys(content).length !== 0) {
175-
// We checked for empty content to not try to construct CallMembership's with {}.
176-
membershipContents.push(content);
177-
}
178-
}
179-
if (membershipContents.length === 0) {
180-
continue;
181180
}
182181

182+
if (membershipContents.length === 0) continue;
183+
183184
for (const membershipData of membershipContents) {
184185
try {
185186
const membership = new CallMembership(memberEvent, membershipData);

0 commit comments

Comments
 (0)