Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(plugin-meetings): add meetingUserCount mqe #4060

Merged
merged 12 commits into from
Jan 20, 2025
4 changes: 2 additions & 2 deletions packages/@webex/plugin-meetings/src/meeting/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6450,10 +6450,10 @@ export default class Meeting extends StatelessWebexPlugin {

const {members} = this.getMembers().membersCollection;

// Count members with a 'state' of 'JOINED'
// Count members that are in the meeting
options.data.intervalMetadata.meetingUserCount = Object.values(members).filter(
// @ts-ignore
edvujic marked this conversation as resolved.
Show resolved Hide resolved
(member) => member.participant.state === 'JOINED'
(member) => member.isInMeeting === true
edvujic marked this conversation as resolved.
Show resolved Hide resolved
).length;

// @ts-ignore
Expand Down
19 changes: 5 additions & 14 deletions packages/@webex/plugin-meetings/test/unit/spec/meeting/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -3487,9 +3487,9 @@ describe('plugin-meetings', () => {
it('counts the number of JOINED members for MEDIA_QUALITY event', async () => {
let fakeMembersCollection = {
members: {
member1: { participant: { state: 'JOINED' } },
member2: { participant: { state: 'LEFT' } },
member3: { participant: { state: 'JOINED' } },
member1: { isInMeeting: true },
member2: { isInMeeting: true },
member3: { isInMeeting: false },
},
};
sinon.stub(meeting, 'getMembers').returns({ membersCollection: fakeMembersCollection });
Expand All @@ -3510,18 +3510,9 @@ describe('plugin-meetings', () => {
intervals: [sinon.match.has('intervalMetadata', sinon.match.has('meetingUserCount', 2))],
},
});
fakeMembersCollection.members.member2.isInMeeting = false;

// Update the fake members collection to simulate a change in participant states
fakeMembersCollection = {
members: {
member1: { participant: { state: 'JOINED' } },
member2: { participant: { state: 'LEFT' } },
member3: { participant: { state: 'LEFT' } },
},
};
meeting.getMembers.restore();
sinon.stub(meeting, 'getMembers').returns({ membersCollection: fakeMembersCollection });

// Simulate an MQE Interval passage
clock.tick(60000);
edvujic marked this conversation as resolved.
Show resolved Hide resolved

statsAnalyzerStub.emit(
Expand Down