@webex/plugin-meetings 3.0.0-beta.377 → 3.0.0-beta.378

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.
@@ -238,6 +238,7 @@ export declare const EVENT_TRIGGERS: {
238
238
  MEETING_UNLOCKED: string;
239
239
  MEETING_LOCKED: string;
240
240
  MEETING_INFO_AVAILABLE: string;
241
+ MEETING_INFO_UPDATED: string;
241
242
  MEETING_LOG_UPLOAD_SUCCESS: string;
242
243
  MEETING_LOG_UPLOAD_FAILURE: string;
243
244
  MEETING_ACTIONS_UPDATE: string;
@@ -62,7 +62,7 @@ var Webinar = _webexCore.WebexPlugin.extend({
62
62
  updateCanManageWebcast: function updateCanManageWebcast(canManageWebcast) {
63
63
  this.set('canManageWebcast', canManageWebcast);
64
64
  },
65
- version: "3.0.0-beta.377"
65
+ version: "3.0.0-beta.378"
66
66
  });
67
67
  var _default = Webinar;
68
68
  exports.default = _default;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webex/plugin-meetings",
3
- "version": "3.0.0-beta.377",
3
+ "version": "3.0.0-beta.378",
4
4
  "description": "",
5
5
  "license": "Cisco EULA (https://www.cisco.com/c/en/us/products/end-user-license-agreement.html)",
6
6
  "contributors": [
@@ -33,12 +33,12 @@
33
33
  },
34
34
  "devDependencies": {
35
35
  "@peculiar/webcrypto": "^1.4.3",
36
- "@webex/plugin-meetings": "3.0.0-beta.377",
37
- "@webex/test-helper-chai": "3.0.0-beta.377",
38
- "@webex/test-helper-mocha": "3.0.0-beta.377",
39
- "@webex/test-helper-mock-webex": "3.0.0-beta.377",
40
- "@webex/test-helper-retry": "3.0.0-beta.377",
41
- "@webex/test-helper-test-users": "3.0.0-beta.377",
36
+ "@webex/plugin-meetings": "3.0.0-beta.378",
37
+ "@webex/test-helper-chai": "3.0.0-beta.378",
38
+ "@webex/test-helper-mocha": "3.0.0-beta.378",
39
+ "@webex/test-helper-mock-webex": "3.0.0-beta.378",
40
+ "@webex/test-helper-retry": "3.0.0-beta.378",
41
+ "@webex/test-helper-test-users": "3.0.0-beta.378",
42
42
  "chai": "^4.3.4",
43
43
  "chai-as-promised": "^7.1.1",
44
44
  "jsdom-global": "3.0.2",
@@ -47,19 +47,19 @@
47
47
  "typescript": "^4.7.4"
48
48
  },
49
49
  "dependencies": {
50
- "@webex/common": "3.0.0-beta.377",
50
+ "@webex/common": "3.0.0-beta.378",
51
51
  "@webex/internal-media-core": "2.2.7",
52
- "@webex/internal-plugin-conversation": "3.0.0-beta.377",
53
- "@webex/internal-plugin-device": "3.0.0-beta.377",
54
- "@webex/internal-plugin-llm": "3.0.0-beta.377",
55
- "@webex/internal-plugin-mercury": "3.0.0-beta.377",
56
- "@webex/internal-plugin-metrics": "3.0.0-beta.377",
57
- "@webex/internal-plugin-support": "3.0.0-beta.377",
58
- "@webex/internal-plugin-user": "3.0.0-beta.377",
59
- "@webex/media-helpers": "3.0.0-beta.377",
60
- "@webex/plugin-people": "3.0.0-beta.377",
61
- "@webex/plugin-rooms": "3.0.0-beta.377",
62
- "@webex/webex-core": "3.0.0-beta.377",
52
+ "@webex/internal-plugin-conversation": "3.0.0-beta.378",
53
+ "@webex/internal-plugin-device": "3.0.0-beta.378",
54
+ "@webex/internal-plugin-llm": "3.0.0-beta.378",
55
+ "@webex/internal-plugin-mercury": "3.0.0-beta.378",
56
+ "@webex/internal-plugin-metrics": "3.0.0-beta.378",
57
+ "@webex/internal-plugin-support": "3.0.0-beta.378",
58
+ "@webex/internal-plugin-user": "3.0.0-beta.378",
59
+ "@webex/media-helpers": "3.0.0-beta.378",
60
+ "@webex/plugin-people": "3.0.0-beta.378",
61
+ "@webex/plugin-rooms": "3.0.0-beta.378",
62
+ "@webex/webex-core": "3.0.0-beta.378",
63
63
  "ampersand-collection": "^2.0.2",
64
64
  "bowser": "^2.11.0",
65
65
  "btoa": "^1.2.1",
package/src/constants.ts CHANGED
@@ -341,6 +341,7 @@ export const EVENT_TRIGGERS = {
341
341
  MEETING_UNLOCKED: 'meeting:unlocked',
342
342
  MEETING_LOCKED: 'meeting:locked',
343
343
  MEETING_INFO_AVAILABLE: 'meeting:meetingInfoAvailable',
344
+ MEETING_INFO_UPDATED: 'meeting:meetingInfoUpdated',
344
345
  MEETING_LOG_UPLOAD_SUCCESS: 'meeting:logUpload:success',
345
346
  MEETING_LOG_UPLOAD_FAILURE: 'meeting:logUpload:failure',
346
347
  MEETING_ACTIONS_UPDATE: 'meeting:actionsUpdate',
@@ -1169,7 +1169,10 @@ export default class LocusInfo extends EventsScope {
1169
1169
  file: 'locus-info',
1170
1170
  function: 'updateMeetingInfo',
1171
1171
  },
1172
- LOCUSINFO.EVENTS.MEETING_INFO_UPDATED
1172
+ LOCUSINFO.EVENTS.MEETING_INFO_UPDATED,
1173
+ {
1174
+ isInitializing: !self, // if self is undefined, then the update is caused by locus init
1175
+ }
1173
1176
  );
1174
1177
  }
1175
1178
  this.roles = roles;
@@ -2758,12 +2758,24 @@ export default class Meeting extends StatelessWebexPlugin {
2758
2758
  );
2759
2759
  }
2760
2760
  });
2761
- this.locusInfo.on(LOCUSINFO.EVENTS.MEETING_INFO_UPDATED, () => {
2761
+ this.locusInfo.on(LOCUSINFO.EVENTS.MEETING_INFO_UPDATED, ({isInitializing}) => {
2762
2762
  this.updateMeetingActions();
2763
2763
  this.recordingController.setDisplayHints(this.userDisplayHints);
2764
2764
  this.recordingController.setUserPolicy(this.selfUserPolicies);
2765
2765
  this.controlsOptionsManager.setDisplayHints(this.userDisplayHints);
2766
2766
  this.handleDataChannelUrlChange(this.datachannelUrl);
2767
+
2768
+ if (!isInitializing) {
2769
+ // send updated trigger only if locus is not initializing the meeting
2770
+ Trigger.trigger(
2771
+ this,
2772
+ {
2773
+ file: 'meetings',
2774
+ function: 'setUpLocusInfoMeetingInfoListener',
2775
+ },
2776
+ EVENT_TRIGGERS.MEETING_INFO_UPDATED
2777
+ );
2778
+ }
2767
2779
  });
2768
2780
  }
2769
2781
 
@@ -1377,7 +1377,7 @@ describe('plugin-meetings', () => {
1377
1377
  );
1378
1378
  });
1379
1379
 
1380
- const checkMeetingInfoUpdatedCalled = (expected) => {
1380
+ const checkMeetingInfoUpdatedCalled = (expected, payload) => {
1381
1381
  const expectedArgs = [
1382
1382
  locusInfo.emitScoped,
1383
1383
  {
@@ -1385,6 +1385,7 @@ describe('plugin-meetings', () => {
1385
1385
  function: 'updateMeetingInfo',
1386
1386
  },
1387
1387
  LOCUSINFO.EVENTS.MEETING_INFO_UPDATED,
1388
+ payload
1388
1389
  ];
1389
1390
 
1390
1391
  if (expected) {
@@ -1395,7 +1396,7 @@ describe('plugin-meetings', () => {
1395
1396
  locusInfo.emitScoped.resetHistory();
1396
1397
  };
1397
1398
 
1398
- const checkMeetingInfoUpdatedCalledForRoles = (expected) => {
1399
+ const checkMeetingInfoUpdatedCalledForRoles = (expected, payload) => {
1399
1400
  const expectedArgs = [
1400
1401
  locusInfo.emitScoped,
1401
1402
  {
@@ -1403,6 +1404,7 @@ describe('plugin-meetings', () => {
1403
1404
  function: 'updateMeetingInfo',
1404
1405
  },
1405
1406
  LOCUSINFO.EVENTS.MEETING_INFO_UPDATED,
1407
+ payload
1406
1408
  ];
1407
1409
 
1408
1410
  if (expected) {
@@ -1447,7 +1449,7 @@ describe('plugin-meetings', () => {
1447
1449
 
1448
1450
  // since it was initially undefined, this should trigger the event
1449
1451
 
1450
- checkMeetingInfoUpdatedCalled(true);
1452
+ checkMeetingInfoUpdatedCalled(true, {isInitializing: false});
1451
1453
 
1452
1454
  const newInfo = cloneDeep(meetingInfo);
1453
1455
 
@@ -1472,7 +1474,7 @@ describe('plugin-meetings', () => {
1472
1474
  };
1473
1475
  locusInfo.updateMeetingInfo(newInfo, self);
1474
1476
 
1475
- checkMeetingInfoUpdatedCalled(true);
1477
+ checkMeetingInfoUpdatedCalled(true, {isInitializing: false});
1476
1478
 
1477
1479
  // update it with the same info
1478
1480
  expectedMeeting = {
@@ -1494,7 +1496,7 @@ describe('plugin-meetings', () => {
1494
1496
  locusInfo.updateMeetingInfo(newInfo, self);
1495
1497
 
1496
1498
  // since the info is the same it should not call trigger the event
1497
- checkMeetingInfoUpdatedCalled(false);
1499
+ checkMeetingInfoUpdatedCalled(false, {isInitializing: false});
1498
1500
 
1499
1501
  // update it with the same info, but roles changed
1500
1502
  const updateSelf = cloneDeep(self);
@@ -1525,7 +1527,7 @@ describe('plugin-meetings', () => {
1525
1527
  };
1526
1528
  locusInfo.updateMeetingInfo(newInfo, updateSelf);
1527
1529
  // since the info is the same but roles changed, it should call trigger the event
1528
- checkMeetingInfoUpdatedCalledForRoles(true);
1530
+ checkMeetingInfoUpdatedCalledForRoles(true, {isInitializing: false});
1529
1531
  });
1530
1532
 
1531
1533
  it('gets roles from self if available', () => {
@@ -1546,12 +1548,17 @@ describe('plugin-meetings', () => {
1546
1548
  roles: ['MODERATOR', 'COHOST'],
1547
1549
  };
1548
1550
 
1551
+ sinon.stub(locusInfo, 'emitScoped');
1552
+
1549
1553
  const parsedLocusInfo = cloneDeep(locusInfo.parsedLocus.info);
1550
1554
 
1551
1555
  locusInfo.updateMeetingInfo(initialInfo);
1552
1556
  assert.calledWith(isJoinedSpy, locusInfo.parsedLocus.self);
1553
1557
  assert.neverCalledWith(getRolesSpy, self);
1554
1558
  assert.calledWith(getInfosSpy, parsedLocusInfo, initialInfo, ['MODERATOR', 'COHOST']);
1559
+
1560
+ // since self is not passed to updateMeetingInfo, MEETING_INFO_UPDATED should be triggered with isIntializing: true
1561
+ checkMeetingInfoUpdatedCalledForRoles(true, {isInitializing: true});
1555
1562
  });
1556
1563
  });
1557
1564
 
@@ -2512,6 +2512,7 @@ describe('plugin-meetings', () => {
2512
2512
  clientErrorCode: ICE_FAILED_WITH_TURN_TLS_CLIENT_CODE,
2513
2513
  expectedErrorPayload: {
2514
2514
  errorDescription: ERROR_DESCRIPTIONS.ICE_FAILED_WITH_TURN_TLS,
2515
+ category: 'network',
2515
2516
  },
2516
2517
  },
2517
2518
  ].forEach(({clientErrorCode, expectedErrorPayload}) => {
@@ -8155,13 +8156,41 @@ describe('plugin-meetings', () => {
8155
8156
  assert.equal(locusInfoOnSpy.thirdCall.args[0], 'MEETING_INFO_UPDATED');
8156
8157
  const callback = locusInfoOnSpy.thirdCall.args[1];
8157
8158
 
8158
- callback();
8159
+ callback({isInitializing: true});
8159
8160
 
8160
8161
  assert.calledWith(updateMeetingActionsSpy);
8161
8162
  assert.calledWith(setRecordingDisplayHintsSpy, userDisplayHints);
8162
8163
  assert.calledWith(setUserPolicySpy, userDisplayPolicy);
8163
8164
  assert.calledWith(setControlsDisplayHintsSpy, userDisplayHints);
8164
8165
  assert.calledWith(handleDataChannelUrlChangeSpy, datachannelUrl);
8166
+
8167
+ assert.neverCalledWith(
8168
+ TriggerProxy.trigger,
8169
+ meeting,
8170
+ {
8171
+ file: 'meetings',
8172
+ function: 'setUpLocusInfoMeetingInfoListener',
8173
+ },
8174
+ 'meeting:meetingInfoUpdated'
8175
+ )
8176
+
8177
+ callback({isIntialized: false});
8178
+
8179
+ assert.calledWith(updateMeetingActionsSpy);
8180
+ assert.calledWith(setRecordingDisplayHintsSpy, userDisplayHints);
8181
+ assert.calledWith(setUserPolicySpy, userDisplayPolicy);
8182
+ assert.calledWith(setControlsDisplayHintsSpy, userDisplayHints);
8183
+ assert.calledWith(handleDataChannelUrlChangeSpy, datachannelUrl);
8184
+
8185
+ assert.calledWith(
8186
+ TriggerProxy.trigger,
8187
+ meeting,
8188
+ {
8189
+ file: 'meetings',
8190
+ function: 'setUpLocusInfoMeetingInfoListener',
8191
+ },
8192
+ 'meeting:meetingInfoUpdated'
8193
+ )
8165
8194
  });
8166
8195
  });
8167
8196