@webex/plugin-meetings 3.0.0-beta.71 → 3.0.0-beta.73

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/dist/breakouts/breakout.js +1 -1
  2. package/dist/breakouts/index.js +1 -1
  3. package/dist/config.js +1 -0
  4. package/dist/config.js.map +1 -1
  5. package/dist/constants.js +6 -2
  6. package/dist/constants.js.map +1 -1
  7. package/dist/locus-info/index.js +5 -3
  8. package/dist/locus-info/index.js.map +1 -1
  9. package/dist/locus-info/selfUtils.js +17 -12
  10. package/dist/locus-info/selfUtils.js.map +1 -1
  11. package/dist/meeting/in-meeting-actions.js +5 -1
  12. package/dist/meeting/in-meeting-actions.js.map +1 -1
  13. package/dist/meeting/index.js +6 -2
  14. package/dist/meeting/index.js.map +1 -1
  15. package/dist/meeting/util.js +6 -0
  16. package/dist/meeting/util.js.map +1 -1
  17. package/dist/meeting-info/meeting-info-v2.js +14 -10
  18. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  19. package/dist/meeting-info/utilv2.js +5 -1
  20. package/dist/meeting-info/utilv2.js.map +1 -1
  21. package/dist/members/index.js +23 -0
  22. package/dist/members/index.js.map +1 -1
  23. package/dist/members/request.js +19 -0
  24. package/dist/members/request.js.map +1 -1
  25. package/dist/members/util.js +33 -0
  26. package/dist/members/util.js.map +1 -1
  27. package/dist/multistream/mediaRequestManager.js +12 -1
  28. package/dist/multistream/mediaRequestManager.js.map +1 -1
  29. package/dist/reconnection-manager/index.js +2 -4
  30. package/dist/reconnection-manager/index.js.map +1 -1
  31. package/dist/types/config.d.ts +1 -0
  32. package/dist/types/constants.d.ts +3 -0
  33. package/dist/types/locus-info/index.d.ts +1 -0
  34. package/dist/types/meeting/in-meeting-actions.d.ts +4 -0
  35. package/dist/types/meeting-info/meeting-info-v2.d.ts +2 -1
  36. package/dist/types/members/index.d.ts +10 -0
  37. package/dist/types/members/request.d.ts +11 -0
  38. package/dist/types/multistream/mediaRequestManager.d.ts +6 -0
  39. package/package.json +18 -18
  40. package/src/config.ts +1 -0
  41. package/src/constants.ts +3 -0
  42. package/src/locus-info/index.ts +7 -2
  43. package/src/locus-info/selfUtils.ts +6 -4
  44. package/src/meeting/in-meeting-actions.ts +8 -0
  45. package/src/meeting/index.ts +7 -1
  46. package/src/meeting/util.ts +5 -0
  47. package/src/meeting-info/meeting-info-v2.ts +9 -2
  48. package/src/meeting-info/utilv2.ts +5 -1
  49. package/src/members/index.ts +35 -0
  50. package/src/members/request.ts +20 -0
  51. package/src/members/util.ts +38 -0
  52. package/src/multistream/mediaRequestManager.ts +10 -1
  53. package/src/reconnection-manager/index.ts +6 -3
  54. package/test/unit/spec/locus-info/index.js +31 -2
  55. package/test/unit/spec/locus-info/selfUtils.js +28 -2
  56. package/test/unit/spec/meeting/in-meeting-actions.ts +6 -2
  57. package/test/unit/spec/meeting/index.js +15 -3
  58. package/test/unit/spec/meeting/utils.js +41 -9
  59. package/test/unit/spec/meeting-info/meetinginfov2.js +27 -0
  60. package/test/unit/spec/members/index.js +123 -15
  61. package/test/unit/spec/members/request.js +27 -1
  62. package/test/unit/spec/members/utils.js +54 -10
  63. package/test/unit/spec/multistream/mediaRequestManager.ts +36 -11
  64. package/test/unit/spec/reconnection-manager/index.js +8 -4
@@ -15,27 +15,48 @@ describe('plugin-meetings', () => {
15
15
  describe('#generateRoleAssignmentMemberOptions', () => {
16
16
  it('returns the correct options', () => {
17
17
  const memberId = 'test';
18
- const roles = [{type: 'PRESENTER', hasRole: true}, {type: 'MODERATOR', hasRole: true}, {type: 'COHOST', hasRole: true}]
18
+ const roles = [
19
+ {type: 'PRESENTER', hasRole: true},
20
+ {type: 'MODERATOR', hasRole: true},
21
+ {type: 'COHOST', hasRole: true},
22
+ ];
19
23
  const locusUrl = 'urlTest1';
20
24
 
21
- assert.deepEqual(MembersUtil.generateRoleAssignmentMemberOptions(memberId, roles, locusUrl), {
22
- memberId,
23
- roles,
24
- locusUrl,
25
- });
25
+ assert.deepEqual(
26
+ MembersUtil.generateRoleAssignmentMemberOptions(memberId, roles, locusUrl),
27
+ {
28
+ memberId,
29
+ roles,
30
+ locusUrl,
31
+ }
32
+ );
26
33
  });
27
34
  });
28
35
 
29
36
  describe('#getRoleAssignmentMemberRequestParams', () => {
30
37
  it('returns the correct request params', () => {
31
- const format = {locusUrl: 'locusUrl', memberId: 'test', roles: [{type: 'PRESENTER', hasRole: true}, {type: 'MODERATOR', hasRole: false}, {type: 'COHOST', hasRole: true}]};
38
+ const format = {
39
+ locusUrl: 'locusUrl',
40
+ memberId: 'test',
41
+ roles: [
42
+ {type: 'PRESENTER', hasRole: true},
43
+ {type: 'MODERATOR', hasRole: false},
44
+ {type: 'COHOST', hasRole: true},
45
+ ],
46
+ };
32
47
 
33
48
  assert.deepEqual(MembersUtil.getRoleAssignmentMemberRequestParams(format), {
34
49
  method: 'PATCH',
35
50
  uri: `locusUrl/${PARTICIPANT}/test/${CONTROLS}`,
36
- body: {role: {
37
- roles: [{type: 'PRESENTER', hasRole: true}, {type: 'MODERATOR', hasRole: false}, {type: 'COHOST', hasRole: true}]
38
- }},
51
+ body: {
52
+ role: {
53
+ roles: [
54
+ {type: 'PRESENTER', hasRole: true},
55
+ {type: 'MODERATOR', hasRole: false},
56
+ {type: 'COHOST', hasRole: true},
57
+ ],
58
+ },
59
+ },
39
60
  });
40
61
  });
41
62
  });
@@ -67,6 +88,29 @@ describe('plugin-meetings', () => {
67
88
  );
68
89
  });
69
90
  });
91
+ describe('#generateEditDisplayNameMemberOptions', () => {
92
+ it('returns the correct options', () => {
93
+ const locusUrl = 'urlTest1';
94
+ const memberId = 'test1';
95
+ const requestingParticipantId = 'test2';
96
+ const alias = 'alias';
97
+
98
+ assert.deepEqual(
99
+ MembersUtil.generateEditDisplayNameMemberOptions(
100
+ memberId,
101
+ requestingParticipantId,
102
+ alias,
103
+ locusUrl
104
+ ),
105
+ {
106
+ memberId,
107
+ requestingParticipantId,
108
+ alias,
109
+ locusUrl,
110
+ }
111
+ );
112
+ });
113
+ });
70
114
  describe('#getAdmitMemberRequestBody', () => {
71
115
  it('returns the correct request body', () => {
72
116
  const option1 = {memberIds: ['uuid']};
@@ -572,7 +572,6 @@ describe('MediaRequestManager', () => {
572
572
  // nothing should be sent out as we didn't commit the requests
573
573
  assert.notCalled(sendMediaRequestsCallback);
574
574
 
575
-
576
575
  mediaRequestManager.commit();
577
576
  checkMediaRequestsSent([
578
577
  {
@@ -601,7 +600,6 @@ describe('MediaRequestManager', () => {
601
600
  },
602
601
  ]);
603
602
 
604
-
605
603
  // check that when calling commit()
606
604
  // all requests are not re-sent again (avoid duplicate requests)
607
605
  mediaRequestManager.commit();
@@ -621,7 +619,6 @@ describe('MediaRequestManager', () => {
621
619
 
622
620
  assert.notCalled(sendMediaRequestsCallback);
623
621
 
624
-
625
622
  mediaRequestManager.commit();
626
623
  checkMediaRequestsSent([
627
624
  {
@@ -635,11 +632,11 @@ describe('MediaRequestManager', () => {
635
632
  // now reset everything
636
633
  mediaRequestManager.reset();
637
634
 
638
- // calling commit now should not cause any requests to be sent out
639
- mediaRequestManager.commit();
640
- checkMediaRequestsSent([]);
635
+ // calling commit now should not cause any requests to be sent out
636
+ mediaRequestManager.commit();
637
+ checkMediaRequestsSent([]);
641
638
 
642
- //add new request
639
+ //add new request
643
640
  addReceiverSelectedRequest(1501, fakeReceiveSlots[1], RECEIVER_SELECTED_MAX_FS, false);
644
641
 
645
642
  // commit
@@ -653,8 +650,38 @@ describe('MediaRequestManager', () => {
653
650
  receiveSlot: fakeWcmeSlots[1],
654
651
  maxFs: RECEIVER_SELECTED_MAX_FS,
655
652
  },
656
- ])
657
- })
653
+ ]);
654
+ });
655
+
656
+ it('can send same media request after previous requests have been cleared', () => {
657
+ // add a request and commit
658
+ addReceiverSelectedRequest(1500, fakeReceiveSlots[0], RECEIVER_SELECTED_MAX_FS, false);
659
+ mediaRequestManager.commit();
660
+ checkMediaRequestsSent([
661
+ {
662
+ policy: 'receiver-selected',
663
+ csi: 1500,
664
+ receiveSlot: fakeWcmeSlots[0],
665
+ maxFs: RECEIVER_SELECTED_MAX_FS,
666
+ },
667
+ ]);
668
+
669
+ // clear previous requests
670
+ mediaRequestManager.clearPreviousRequests();
671
+
672
+ // commit same request
673
+ mediaRequestManager.commit();
674
+
675
+ // check the request was sent
676
+ checkMediaRequestsSent([
677
+ {
678
+ policy: 'receiver-selected',
679
+ csi: 1500,
680
+ receiveSlot: fakeWcmeSlots[0],
681
+ maxFs: RECEIVER_SELECTED_MAX_FS,
682
+ },
683
+ ]);
684
+ });
658
685
 
659
686
  it('re-sends media requests after degradation preferences are set', () => {
660
687
  // set max macroblocks limit
@@ -785,7 +812,6 @@ describe('MediaRequestManager', () => {
785
812
 
786
813
  sendMediaRequestsCallback.resetHistory();
787
814
 
788
-
789
815
  const maxFsHandlerCall = fakeReceiveSlots[0].on.getCall(1);
790
816
 
791
817
  const maxFsHandler = maxFsHandlerCall.args[1];
@@ -812,5 +838,4 @@ describe('MediaRequestManager', () => {
812
838
  },
813
839
  ]);
814
840
  });
815
-
816
841
  });
@@ -43,8 +43,8 @@ describe('plugin-meetings', () => {
43
43
  webrtcMediaConnection: fakeMediaConnection,
44
44
  },
45
45
  mediaRequestManagers: {
46
- audio: {commit: sinon.stub()},
47
- video: {commit: sinon.stub()},
46
+ audio: {commit: sinon.stub(), clearPreviousRequests: sinon.stub()},
47
+ video: {commit: sinon.stub(), clearPreviousRequests: sinon.stub()},
48
48
  },
49
49
  roap: {
50
50
  doTurnDiscovery: sinon.stub().resolves({
@@ -84,22 +84,26 @@ describe('plugin-meetings', () => {
84
84
  ]);
85
85
  });
86
86
 
87
- it('does not re-request media for non-multistream meetings', async () => {
87
+ it('does not clear previous requests and re-request media for non-multistream meetings', async () => {
88
88
  fakeMeeting.isMultistream = false;
89
89
  const rm = new ReconnectionManager(fakeMeeting);
90
90
 
91
91
  await rm.reconnect();
92
92
 
93
+ assert.notCalled(fakeMeeting.mediaRequestManagers.audio.clearPreviousRequests);
94
+ assert.notCalled(fakeMeeting.mediaRequestManagers.video.clearPreviousRequests);
93
95
  assert.notCalled(fakeMeeting.mediaRequestManagers.audio.commit);
94
96
  assert.notCalled(fakeMeeting.mediaRequestManagers.video.commit);
95
97
  });
96
98
 
97
- it('does re-request media for multistream meetings', async () => {
99
+ it('does clear previous requests and re-request media for multistream meetings', async () => {
98
100
  fakeMeeting.isMultistream = true;
99
101
  const rm = new ReconnectionManager(fakeMeeting);
100
102
 
101
103
  await rm.reconnect();
102
104
 
105
+ assert.calledOnce(fakeMeeting.mediaRequestManagers.audio.clearPreviousRequests);
106
+ assert.calledOnce(fakeMeeting.mediaRequestManagers.video.clearPreviousRequests);
103
107
  assert.calledOnce(fakeMeeting.mediaRequestManagers.audio.commit);
104
108
  assert.calledOnce(fakeMeeting.mediaRequestManagers.video.commit);
105
109
  });