@webex/plugin-meetings 3.6.0-next.2 → 3.6.0-next.20

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 (108) hide show
  1. package/README.md +2 -1
  2. package/dist/breakouts/breakout.js +1 -1
  3. package/dist/breakouts/index.js +1 -1
  4. package/dist/common/errors/webinar-registration-error.js +50 -0
  5. package/dist/common/errors/webinar-registration-error.js.map +1 -0
  6. package/dist/config.js +2 -1
  7. package/dist/config.js.map +1 -1
  8. package/dist/constants.js +31 -2
  9. package/dist/constants.js.map +1 -1
  10. package/dist/controls-options-manager/enums.js +1 -0
  11. package/dist/controls-options-manager/enums.js.map +1 -1
  12. package/dist/controls-options-manager/index.js +10 -3
  13. package/dist/controls-options-manager/index.js.map +1 -1
  14. package/dist/controls-options-manager/types.js.map +1 -1
  15. package/dist/controls-options-manager/util.js +12 -0
  16. package/dist/controls-options-manager/util.js.map +1 -1
  17. package/dist/index.js +7 -0
  18. package/dist/index.js.map +1 -1
  19. package/dist/interpretation/index.js +1 -1
  20. package/dist/interpretation/siLanguage.js +1 -1
  21. package/dist/locus-info/controlsUtils.js +28 -4
  22. package/dist/locus-info/controlsUtils.js.map +1 -1
  23. package/dist/locus-info/fullState.js +2 -1
  24. package/dist/locus-info/fullState.js.map +1 -1
  25. package/dist/locus-info/index.js +61 -3
  26. package/dist/locus-info/index.js.map +1 -1
  27. package/dist/locus-info/parser.js +5 -1
  28. package/dist/locus-info/parser.js.map +1 -1
  29. package/dist/meeting/in-meeting-actions.js +19 -1
  30. package/dist/meeting/in-meeting-actions.js.map +1 -1
  31. package/dist/meeting/index.js +594 -431
  32. package/dist/meeting/index.js.map +1 -1
  33. package/dist/meeting/muteState.js +5 -2
  34. package/dist/meeting/muteState.js.map +1 -1
  35. package/dist/meeting-info/meeting-info-v2.js +68 -17
  36. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  37. package/dist/meetings/index.js +2 -1
  38. package/dist/meetings/index.js.map +1 -1
  39. package/dist/members/index.js +3 -2
  40. package/dist/members/index.js.map +1 -1
  41. package/dist/members/util.js +9 -5
  42. package/dist/members/util.js.map +1 -1
  43. package/dist/metrics/constants.js +2 -1
  44. package/dist/metrics/constants.js.map +1 -1
  45. package/dist/multistream/remoteMedia.js +4 -0
  46. package/dist/multistream/remoteMedia.js.map +1 -1
  47. package/dist/reachability/index.js +3 -3
  48. package/dist/reachability/index.js.map +1 -1
  49. package/dist/reachability/request.js +2 -1
  50. package/dist/reachability/request.js.map +1 -1
  51. package/dist/types/common/errors/webinar-registration-error.d.ts +14 -0
  52. package/dist/types/config.d.ts +1 -0
  53. package/dist/types/constants.d.ts +25 -0
  54. package/dist/types/controls-options-manager/enums.d.ts +2 -1
  55. package/dist/types/controls-options-manager/index.d.ts +2 -1
  56. package/dist/types/controls-options-manager/types.d.ts +2 -0
  57. package/dist/types/index.d.ts +2 -1
  58. package/dist/types/locus-info/index.d.ts +9 -0
  59. package/dist/types/meeting/in-meeting-actions.d.ts +18 -0
  60. package/dist/types/meeting/index.d.ts +12 -1
  61. package/dist/types/meeting/muteState.d.ts +2 -1
  62. package/dist/types/meeting-info/meeting-info-v2.d.ts +23 -0
  63. package/dist/types/members/index.d.ts +2 -1
  64. package/dist/types/members/util.d.ts +3 -1
  65. package/dist/types/metrics/constants.d.ts +1 -0
  66. package/dist/types/multistream/remoteMedia.d.ts +1 -0
  67. package/dist/webinar/index.js +32 -19
  68. package/dist/webinar/index.js.map +1 -1
  69. package/package.json +22 -22
  70. package/src/common/errors/webinar-registration-error.ts +27 -0
  71. package/src/config.ts +1 -0
  72. package/src/constants.ts +31 -0
  73. package/src/controls-options-manager/enums.ts +1 -0
  74. package/src/controls-options-manager/index.ts +19 -2
  75. package/src/controls-options-manager/types.ts +2 -0
  76. package/src/controls-options-manager/util.ts +12 -0
  77. package/src/index.ts +2 -0
  78. package/src/locus-info/controlsUtils.ts +46 -2
  79. package/src/locus-info/fullState.ts +1 -0
  80. package/src/locus-info/index.ts +60 -0
  81. package/src/locus-info/parser.ts +8 -1
  82. package/src/meeting/in-meeting-actions.ts +37 -0
  83. package/src/meeting/index.ts +139 -20
  84. package/src/meeting/muteState.ts +6 -2
  85. package/src/meeting-info/meeting-info-v2.ts +51 -0
  86. package/src/meetings/index.ts +3 -1
  87. package/src/members/index.ts +4 -2
  88. package/src/members/util.ts +3 -1
  89. package/src/metrics/constants.ts +1 -0
  90. package/src/multistream/remoteMedia.ts +5 -0
  91. package/src/reachability/index.ts +3 -3
  92. package/src/reachability/request.ts +1 -0
  93. package/src/webinar/index.ts +31 -17
  94. package/test/unit/spec/controls-options-manager/index.js +56 -32
  95. package/test/unit/spec/controls-options-manager/util.js +44 -0
  96. package/test/unit/spec/locus-info/controlsUtils.js +80 -4
  97. package/test/unit/spec/locus-info/index.js +88 -2
  98. package/test/unit/spec/meeting/in-meeting-actions.ts +18 -0
  99. package/test/unit/spec/meeting/index.js +263 -64
  100. package/test/unit/spec/meeting/muteState.js +8 -4
  101. package/test/unit/spec/meeting-info/meetinginfov2.js +37 -0
  102. package/test/unit/spec/members/index.js +25 -2
  103. package/test/unit/spec/members/request.js +37 -3
  104. package/test/unit/spec/members/utils.js +15 -1
  105. package/test/unit/spec/multistream/remoteMedia.ts +16 -2
  106. package/test/unit/spec/reachability/index.ts +1 -1
  107. package/test/unit/spec/reachability/request.js +13 -8
  108. package/test/unit/spec/webinar/index.ts +82 -16
@@ -86,6 +86,7 @@ var _controlsOptionsManager = _interopRequireDefault(require("../controls-option
86
86
  var _permission = _interopRequireDefault(require("../common/errors/permission"));
87
87
  var _locusMediaRequest = require("./locusMediaRequest");
88
88
  var _connectionStateHandler = require("./connectionStateHandler");
89
+ var _webinarRegistrationError = _interopRequireDefault(require("../common/errors/webinar-registration-error"));
89
90
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof _Symbol !== "undefined" && o[_Symbol$iterator] || o["@@iterator"]; if (!it) { if (_Array$isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
90
91
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return _Array$from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
91
92
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
@@ -1003,7 +1004,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
1003
1004
  });
1004
1005
  _this.iceCandidatesCount = 0;
1005
1006
  _this.mediaProperties.webrtcMediaConnection.on(_internalMediaCore.MediaConnectionEventNames.ICE_CANDIDATE, function (event) {
1006
- if (event.candidate) {
1007
+ if (event.candidate && event.candidate.candidate && event.candidate.candidate.length > 0) {
1007
1008
  _this.iceCandidatesCount += 1;
1008
1009
  }
1009
1010
  });
@@ -2421,8 +2422,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2421
2422
  }
2422
2423
  throw new _permission.default();
2423
2424
  case 21:
2425
+ if (!(_context5.t0 instanceof _meetingInfoV.MeetingInfoV2WebinarRegistrationError)) {
2426
+ _context5.next = 28;
2427
+ break;
2428
+ }
2429
+ this.meetingInfoFailureReason = _constants.MEETING_INFO_FAILURE_REASON.WEBINAR_REGISTRATION;
2430
+ this.meetingInfoFailureCode = _context5.t0.wbxAppApiCode;
2431
+ if (_context5.t0.meetingInfo) {
2432
+ this.meetingInfo = _context5.t0.meetingInfo;
2433
+ }
2434
+ throw new _webinarRegistrationError.default();
2435
+ case 28:
2424
2436
  if (!(_context5.t0 instanceof _meetingInfoV.MeetingInfoV2PasswordError)) {
2425
- _context5.next = 33;
2437
+ _context5.next = 40;
2426
2438
  break;
2427
2439
  }
2428
2440
  _loggerProxy.default.logger.info( // @ts-ignore
@@ -2437,16 +2449,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2437
2449
  this.passwordStatus = _constants.PASSWORD_STATUS.REQUIRED;
2438
2450
  this.meetingInfoFailureReason = _constants.MEETING_INFO_FAILURE_REASON.WRONG_PASSWORD;
2439
2451
  if (!this.requiredCaptcha) {
2440
- _context5.next = 30;
2452
+ _context5.next = 37;
2441
2453
  break;
2442
2454
  }
2443
- _context5.next = 30;
2455
+ _context5.next = 37;
2444
2456
  return this.refreshCaptcha();
2445
- case 30:
2457
+ case 37:
2446
2458
  throw new _passwordError.default();
2447
- case 33:
2459
+ case 40:
2448
2460
  if (!(_context5.t0 instanceof _meetingInfoV.MeetingInfoV2CaptchaError)) {
2449
- _context5.next = 42;
2461
+ _context5.next = 49;
2450
2462
  break;
2451
2463
  }
2452
2464
  _loggerProxy.default.logger.info( // @ts-ignore
@@ -2458,10 +2470,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2458
2470
  }
2459
2471
  this.requiredCaptcha = _context5.t0.captchaInfo;
2460
2472
  throw new _captchaError.default();
2461
- case 42:
2473
+ case 49:
2462
2474
  this.meetingInfoFailureReason = _constants.MEETING_INFO_FAILURE_REASON.OTHER;
2463
2475
  throw _context5.t0;
2464
- case 44:
2476
+ case 51:
2465
2477
  case "end":
2466
2478
  return _context5.stop();
2467
2479
  }
@@ -2690,6 +2702,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2690
2702
  this.setUpLocusInfoSelfListener();
2691
2703
  this.setUpLocusInfoMeetingListener();
2692
2704
  this.setUpLocusServicesListener();
2705
+ this.setUpLocusResourcesListener();
2693
2706
  // members update listeners
2694
2707
  this.setUpLocusFullStateListener();
2695
2708
  this.setUpLocusUrlListener();
@@ -3206,8 +3219,44 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3206
3219
  state: state
3207
3220
  });
3208
3221
  });
3209
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_VIDEO_CHANGED, function (_ref22) {
3222
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_WEBCAST_CHANGED, function (_ref22) {
3210
3223
  var state = _ref22.state;
3224
+ _triggerProxy.default.trigger(_this13, {
3225
+ file: 'meeting/index',
3226
+ function: 'setupLocusControlsListener'
3227
+ }, _constants.EVENT_TRIGGERS.MEETING_CONTROLS_WEBCAST_UPDATED, {
3228
+ state: state
3229
+ });
3230
+ });
3231
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_FULL_CHANGED, function (_ref23) {
3232
+ var state = _ref23.state;
3233
+ _triggerProxy.default.trigger(_this13, {
3234
+ file: 'meeting/index',
3235
+ function: 'setupLocusControlsListener'
3236
+ }, _constants.EVENT_TRIGGERS.MEETING_CONTROLS_MEETING_FULL_UPDATED, {
3237
+ state: state
3238
+ });
3239
+ });
3240
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_PRACTICE_SESSION_STATUS_UPDATED, function (_ref24) {
3241
+ var state = _ref24.state;
3242
+ _triggerProxy.default.trigger(_this13, {
3243
+ file: 'meeting/index',
3244
+ function: 'setupLocusControlsListener'
3245
+ }, _constants.EVENT_TRIGGERS.MEETING_CONTROLS_PRACTICE_SESSION_STATUS_UPDATED, {
3246
+ state: state
3247
+ });
3248
+ });
3249
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_STAGE_VIEW_UPDATED, function (_ref25) {
3250
+ var state = _ref25.state;
3251
+ _triggerProxy.default.trigger(_this13, {
3252
+ file: 'meeting/index',
3253
+ function: 'setupLocusControlsListener'
3254
+ }, _constants.EVENT_TRIGGERS.MEETING_CONTROLS_STAGE_VIEW_UPDATED, {
3255
+ state: state
3256
+ });
3257
+ });
3258
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_VIDEO_CHANGED, function (_ref26) {
3259
+ var state = _ref26.state;
3211
3260
  _triggerProxy.default.trigger(_this13, {
3212
3261
  file: 'meeting/index',
3213
3262
  function: 'setupLocusControlsListener'
@@ -3254,7 +3303,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3254
3303
  var _this14 = this;
3255
3304
  // Will get triggered on local and remote share
3256
3305
  this.locusInfo.on(_constants.EVENTS.LOCUS_INFO_UPDATE_MEDIA_SHARES, /*#__PURE__*/function () {
3257
- var _ref23 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8(payload) {
3306
+ var _ref27 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8(payload) {
3258
3307
  var _payload$previous, _payload$previous2;
3259
3308
  var _payload$current, contentShare, whiteboardShare, previousContentShare, previousWhiteboardShare, newShareStatus, oldShareStatus, sendStartedSharingRemote, _this14$mediaProperti;
3260
3309
  return _regenerator.default.wrap(function _callee8$(_context8) {
@@ -3452,7 +3501,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3452
3501
  }, _callee8, null, [[27,, 31, 34]]);
3453
3502
  }));
3454
3503
  return function (_x8) {
3455
- return _ref23.apply(this, arguments);
3504
+ return _ref27.apply(this, arguments);
3456
3505
  };
3457
3506
  }());
3458
3507
  }
@@ -3502,14 +3551,29 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3502
3551
  value: function setUpLocusServicesListener() {
3503
3552
  var _this16 = this;
3504
3553
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.LINKS_SERVICES, function (payload) {
3505
- var _payload$services, _payload$services$rec, _this16$locusInfo, _this16$locusInfo$ful, _payload$services2, _payload$services2$br, _payload$services3, _payload$services3$ap, _payload$services4, _payload$services4$ap, _payload$services5, _payload$services5$we, _payload$services6, _payload$services6$we;
3554
+ var _payload$services, _payload$services$rec, _this16$locusInfo, _this16$locusInfo$ful, _payload$services2, _payload$services2$br, _payload$services3, _payload$services3$ap, _payload$services4, _payload$services4$ap;
3506
3555
  _this16.recordingController.setServiceUrl(payload === null || payload === void 0 ? void 0 : (_payload$services = payload.services) === null || _payload$services === void 0 ? void 0 : (_payload$services$rec = _payload$services.record) === null || _payload$services$rec === void 0 ? void 0 : _payload$services$rec.url);
3507
3556
  _this16.recordingController.setSessionId((_this16$locusInfo = _this16.locusInfo) === null || _this16$locusInfo === void 0 ? void 0 : (_this16$locusInfo$ful = _this16$locusInfo.fullState) === null || _this16$locusInfo$ful === void 0 ? void 0 : _this16$locusInfo$ful.sessionId);
3508
3557
  _this16.breakouts.breakoutServiceUrlUpdate(payload === null || payload === void 0 ? void 0 : (_payload$services2 = payload.services) === null || _payload$services2 === void 0 ? void 0 : (_payload$services2$br = _payload$services2.breakout) === null || _payload$services2$br === void 0 ? void 0 : _payload$services2$br.url);
3509
3558
  _this16.annotation.approvalUrlUpdate(payload === null || payload === void 0 ? void 0 : (_payload$services3 = payload.services) === null || _payload$services3 === void 0 ? void 0 : (_payload$services3$ap = _payload$services3.approval) === null || _payload$services3$ap === void 0 ? void 0 : _payload$services3$ap.url);
3510
3559
  _this16.simultaneousInterpretation.approvalUrlUpdate(payload === null || payload === void 0 ? void 0 : (_payload$services4 = payload.services) === null || _payload$services4 === void 0 ? void 0 : (_payload$services4$ap = _payload$services4.approval) === null || _payload$services4$ap === void 0 ? void 0 : _payload$services4$ap.url);
3511
- _this16.webinar.webcastUrlUpdate(payload === null || payload === void 0 ? void 0 : (_payload$services5 = payload.services) === null || _payload$services5 === void 0 ? void 0 : (_payload$services5$we = _payload$services5.webcast) === null || _payload$services5$we === void 0 ? void 0 : _payload$services5$we.url);
3512
- _this16.webinar.webinarAttendeesSearchingUrlUpdate(payload === null || payload === void 0 ? void 0 : (_payload$services6 = payload.services) === null || _payload$services6 === void 0 ? void 0 : (_payload$services6$we = _payload$services6.webinarAttendeesSearching) === null || _payload$services6$we === void 0 ? void 0 : _payload$services6$we.url);
3560
+ });
3561
+ }
3562
+
3563
+ /**
3564
+ * Set up the locus info resources link listener
3565
+ * update the locusInfo for webcast instance url
3566
+ * @param {Object} payload - The event payload
3567
+ * @returns {undefined}
3568
+ * @private
3569
+ * @memberof Meeting
3570
+ */
3571
+ }, {
3572
+ key: "setUpLocusResourcesListener",
3573
+ value: function setUpLocusResourcesListener() {
3574
+ var _this17 = this;
3575
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.LINKS_RESOURCES, function (payload) {
3576
+ _this17.webinar.updateWebcastUrl(payload);
3513
3577
  });
3514
3578
  }
3515
3579
 
@@ -3522,10 +3586,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3522
3586
  }, {
3523
3587
  key: "setUpLocusInfoMeetingInfoListener",
3524
3588
  value: function setUpLocusInfoMeetingInfoListener() {
3525
- var _this17 = this;
3589
+ var _this18 = this;
3526
3590
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.MEETING_LOCKED, function (payload) {
3527
3591
  if (payload) {
3528
- _triggerProxy.default.trigger(_this17, {
3592
+ _triggerProxy.default.trigger(_this18, {
3529
3593
  file: 'meeting/index',
3530
3594
  function: 'setUpLocusInfoMeetingInfoListener'
3531
3595
  }, _constants.EVENT_TRIGGERS.MEETING_LOCKED, {
@@ -3535,7 +3599,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3535
3599
  });
3536
3600
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.MEETING_UNLOCKED, function (payload) {
3537
3601
  if (payload) {
3538
- _triggerProxy.default.trigger(_this17, {
3602
+ _triggerProxy.default.trigger(_this18, {
3539
3603
  file: 'meeting/index',
3540
3604
  function: 'setUpLocusInfoMeetingInfoListener'
3541
3605
  }, _constants.EVENT_TRIGGERS.MEETING_UNLOCKED, {
@@ -3543,16 +3607,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3543
3607
  });
3544
3608
  }
3545
3609
  });
3546
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.MEETING_INFO_UPDATED, function (_ref24) {
3547
- var isInitializing = _ref24.isInitializing;
3548
- _this17.updateMeetingActions();
3549
- _this17.recordingController.setDisplayHints(_this17.userDisplayHints);
3550
- _this17.recordingController.setUserPolicy(_this17.selfUserPolicies);
3551
- _this17.controlsOptionsManager.setDisplayHints(_this17.userDisplayHints);
3552
- _this17.handleDataChannelUrlChange(_this17.datachannelUrl);
3610
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.MEETING_INFO_UPDATED, function (_ref28) {
3611
+ var isInitializing = _ref28.isInitializing;
3612
+ _this18.updateMeetingActions();
3613
+ _this18.recordingController.setDisplayHints(_this18.userDisplayHints);
3614
+ _this18.recordingController.setUserPolicy(_this18.selfUserPolicies);
3615
+ _this18.controlsOptionsManager.setDisplayHints(_this18.userDisplayHints);
3616
+ _this18.handleDataChannelUrlChange(_this18.datachannelUrl);
3553
3617
  if (!isInitializing) {
3554
3618
  // send updated trigger only if locus is not initializing the meeting
3555
- _triggerProxy.default.trigger(_this17, {
3619
+ _triggerProxy.default.trigger(_this18, {
3556
3620
  file: 'meetings',
3557
3621
  function: 'setUpLocusInfoMeetingInfoListener'
3558
3622
  }, _constants.EVENT_TRIGGERS.MEETING_INFO_UPDATED);
@@ -3583,10 +3647,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3583
3647
  }, {
3584
3648
  key: "setUpLocusEmbeddedAppsListener",
3585
3649
  value: function setUpLocusEmbeddedAppsListener() {
3586
- var _this18 = this;
3650
+ var _this19 = this;
3587
3651
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.EMBEDDED_APPS_UPDATED, function (embeddedApps) {
3588
3652
  if (embeddedApps) {
3589
- _triggerProxy.default.trigger(_this18, {
3653
+ _triggerProxy.default.trigger(_this19, {
3590
3654
  file: 'meeting/index',
3591
3655
  function: 'setUpLocusEmbeddedAppsListener'
3592
3656
  }, _constants.EVENT_TRIGGERS.MEETING_EMBEDDED_APPS_UPDATE, embeddedApps);
@@ -3603,11 +3667,11 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3603
3667
  }, {
3604
3668
  key: "setUpLocusInfoSelfListener",
3605
3669
  value: function setUpLocusInfoSelfListener() {
3606
- var _this19 = this;
3670
+ var _this20 = this;
3607
3671
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.LOCAL_UNMUTE_REQUIRED, function (payload) {
3608
- if (_this19.audio) {
3609
- _this19.audio.handleServerLocalUnmuteRequired(_this19);
3610
- _triggerProxy.default.trigger(_this19, {
3672
+ if (_this20.audio) {
3673
+ _this20.audio.handleServerLocalUnmuteRequired(_this20, payload.unmuteAllowed);
3674
+ _triggerProxy.default.trigger(_this20, {
3611
3675
  file: 'meeting/index',
3612
3676
  function: 'setUpLocusInfoSelfListener'
3613
3677
  }, _constants.EVENT_TRIGGERS.MEETING_SELF_UNMUTED_BY_OTHERS, {
@@ -3617,13 +3681,13 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3617
3681
  });
3618
3682
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED, function (payload) {
3619
3683
  if (payload) {
3620
- if (_this19.video) {
3684
+ if (_this20.video) {
3621
3685
  var _payload$muted, _payload$unmuteAllowe;
3622
- payload.muted = (_payload$muted = payload.muted) !== null && _payload$muted !== void 0 ? _payload$muted : _this19.video.isRemotelyMuted();
3623
- payload.unmuteAllowed = (_payload$unmuteAllowe = payload.unmuteAllowed) !== null && _payload$unmuteAllowe !== void 0 ? _payload$unmuteAllowe : _this19.video.isUnmuteAllowed();
3624
- _this19.video.handleServerRemoteMuteUpdate(_this19, payload.muted, payload.unmuteAllowed);
3686
+ payload.muted = (_payload$muted = payload.muted) !== null && _payload$muted !== void 0 ? _payload$muted : _this20.video.isRemotelyMuted();
3687
+ payload.unmuteAllowed = (_payload$unmuteAllowe = payload.unmuteAllowed) !== null && _payload$unmuteAllowe !== void 0 ? _payload$unmuteAllowe : _this20.video.isUnmuteAllowed();
3688
+ _this20.video.handleServerRemoteMuteUpdate(_this20, payload.muted, payload.unmuteAllowed);
3625
3689
  }
3626
- _triggerProxy.default.trigger(_this19, {
3690
+ _triggerProxy.default.trigger(_this20, {
3627
3691
  file: 'meeting/index',
3628
3692
  function: 'setUpLocusInfoSelfListener'
3629
3693
  }, payload.muted ? _constants.EVENT_TRIGGERS.MEETING_SELF_VIDEO_MUTED_BY_OTHERS : _constants.EVENT_TRIGGERS.MEETING_SELF_VIDEO_UNMUTED_BY_OTHERS, {
@@ -3633,15 +3697,15 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3633
3697
  });
3634
3698
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_REMOTE_MUTE_STATUS_UPDATED, function (payload) {
3635
3699
  if (payload) {
3636
- var _this19$audio;
3637
- if (_this19.audio) {
3638
- _this19.audio.handleServerRemoteMuteUpdate(_this19, payload.muted, payload.unmuteAllowed);
3700
+ var _this20$audio;
3701
+ if (_this20.audio) {
3702
+ _this20.audio.handleServerRemoteMuteUpdate(_this20, payload.muted, payload.unmuteAllowed);
3639
3703
  }
3640
3704
  // with "mute on entry" server will send us remote mute even if we don't have media configured,
3641
3705
  // so if being muted by others, always send the notification,
3642
3706
  // but if being unmuted, only send it if we are also locally unmuted
3643
- if (payload.muted || !((_this19$audio = _this19.audio) !== null && _this19$audio !== void 0 && _this19$audio.isMuted())) {
3644
- _triggerProxy.default.trigger(_this19, {
3707
+ if (payload.muted || !((_this20$audio = _this20.audio) !== null && _this20$audio !== void 0 && _this20$audio.isMuted())) {
3708
+ _triggerProxy.default.trigger(_this20, {
3645
3709
  file: 'meeting/index',
3646
3710
  function: 'setUpLocusInfoSelfListener'
3647
3711
  }, payload.muted ? _constants.EVENT_TRIGGERS.MEETING_SELF_MUTED_BY_OTHERS : _constants.EVENT_TRIGGERS.MEETING_SELF_UNMUTED_BY_OTHERS, {
@@ -3651,7 +3715,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3651
3715
  }
3652
3716
  });
3653
3717
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.LOCAL_UNMUTE_REQUESTED, function (payload) {
3654
- _triggerProxy.default.trigger(_this19, {
3718
+ _triggerProxy.default.trigger(_this20, {
3655
3719
  file: 'meeting/index',
3656
3720
  function: 'setUpLocusInfoSelfListener'
3657
3721
  }, _constants.EVENT_TRIGGERS.MEETING_SELF_REQUESTED_TO_UNMUTE, {
@@ -3660,8 +3724,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3660
3724
  });
3661
3725
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_UNADMITTED_GUEST, function (payload) {
3662
3726
  if (payload) {
3663
- _this19.startKeepAlive();
3664
- _triggerProxy.default.trigger(_this19, {
3727
+ _this20.startKeepAlive();
3728
+ _triggerProxy.default.trigger(_this20, {
3665
3729
  file: 'meeting/index',
3666
3730
  function: 'setUpLocusInfoSelfListener'
3667
3731
  }, _constants.EVENT_TRIGGERS.MEETING_SELF_LOBBY_WAITING, {
@@ -3669,24 +3733,24 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3669
3733
  });
3670
3734
 
3671
3735
  // @ts-ignore
3672
- _this19.webex.internal.newMetrics.submitClientEvent({
3736
+ _this20.webex.internal.newMetrics.submitClientEvent({
3673
3737
  name: 'client.lobby.entered',
3674
3738
  options: {
3675
- meetingId: _this19.id
3739
+ meetingId: _this20.id
3676
3740
  }
3677
3741
  });
3678
3742
  }
3679
- _this19.updateLLMConnection();
3743
+ _this20.updateLLMConnection();
3680
3744
  });
3681
3745
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_ADMITTED_GUEST, /*#__PURE__*/function () {
3682
- var _ref25 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9(payload) {
3683
- var _this19$rtcMetrics;
3746
+ var _ref29 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9(payload) {
3747
+ var _this20$rtcMetrics;
3684
3748
  return _regenerator.default.wrap(function _callee9$(_context9) {
3685
3749
  while (1) switch (_context9.prev = _context9.next) {
3686
3750
  case 0:
3687
- _this19.stopKeepAlive();
3751
+ _this20.stopKeepAlive();
3688
3752
  if (payload) {
3689
- _triggerProxy.default.trigger(_this19, {
3753
+ _triggerProxy.default.trigger(_this20, {
3690
3754
  file: 'meeting/index',
3691
3755
  function: 'setUpLocusInfoSelfListener'
3692
3756
  }, _constants.EVENT_TRIGGERS.MEETING_SELF_GUEST_ADMITTED, {
@@ -3694,15 +3758,15 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3694
3758
  });
3695
3759
 
3696
3760
  // @ts-ignore
3697
- _this19.webex.internal.newMetrics.submitClientEvent({
3761
+ _this20.webex.internal.newMetrics.submitClientEvent({
3698
3762
  name: 'client.lobby.exited',
3699
3763
  options: {
3700
- meetingId: _this19.id
3764
+ meetingId: _this20.id
3701
3765
  }
3702
3766
  });
3703
3767
  }
3704
- (_this19$rtcMetrics = _this19.rtcMetrics) === null || _this19$rtcMetrics === void 0 ? void 0 : _this19$rtcMetrics.sendNextMetrics();
3705
- _this19.updateLLMConnection();
3768
+ (_this20$rtcMetrics = _this20.rtcMetrics) === null || _this20$rtcMetrics === void 0 ? void 0 : _this20$rtcMetrics.sendNextMetrics();
3769
+ _this20.updateLLMConnection();
3706
3770
  case 4:
3707
3771
  case "end":
3708
3772
  return _context9.stop();
@@ -3710,42 +3774,42 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3710
3774
  }, _callee9);
3711
3775
  }));
3712
3776
  return function (_x9) {
3713
- return _ref25.apply(this, arguments);
3777
+ return _ref29.apply(this, arguments);
3714
3778
  };
3715
3779
  }());
3716
3780
 
3717
3781
  // @ts-ignore - check if MEDIA_INACTIVITY exists
3718
3782
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.MEDIA_INACTIVITY, function () {
3719
3783
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_MEDIA_INACTIVE, {
3720
- correlation_id: _this19.correlationId,
3721
- locus_id: _this19.locusId
3784
+ correlation_id: _this20.correlationId,
3785
+ locus_id: _this20.locusId
3722
3786
  });
3723
3787
  _loggerProxy.default.logger.info('Meeting:index#setUpLocusInfoSelfListener --> MEDIA_INACTIVITY received, reconnecting...');
3724
- _this19.reconnect();
3788
+ _this20.reconnect();
3725
3789
  });
3726
3790
 
3727
3791
  // There is two stats for mute one is the actual media being sent or received
3728
3792
  // The second on is if the audio is muted, we need to tell the statsAnalyzer when
3729
3793
  // the audio is muted or the user is not willing to send media
3730
3794
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.MEDIA_STATUS_CHANGE, function (status) {
3731
- if (_this19.statsAnalyzer) {
3732
- var _this19$mediaProperti, _this19$audio2, _this19$mediaProperti2, _this19$video, _this19$mediaProperti3, _this19$mediaProperti4, _this19$mediaProperti5, _this19$mediaProperti6;
3733
- _this19.statsAnalyzer.updateMediaStatus({
3795
+ if (_this20.statsAnalyzer) {
3796
+ var _this20$mediaProperti, _this20$audio2, _this20$mediaProperti2, _this20$video, _this20$mediaProperti3, _this20$mediaProperti4, _this20$mediaProperti5, _this20$mediaProperti6;
3797
+ _this20.statsAnalyzer.updateMediaStatus({
3734
3798
  actual: status,
3735
3799
  expected: {
3736
3800
  // We need to check what should be the actual direction of media
3737
- sendAudio: ((_this19$mediaProperti = _this19.mediaProperties.mediaDirection) === null || _this19$mediaProperti === void 0 ? void 0 : _this19$mediaProperti.sendAudio) && !((_this19$audio2 = _this19.audio) !== null && _this19$audio2 !== void 0 && _this19$audio2.isMuted()),
3738
- sendVideo: ((_this19$mediaProperti2 = _this19.mediaProperties.mediaDirection) === null || _this19$mediaProperti2 === void 0 ? void 0 : _this19$mediaProperti2.sendVideo) && !((_this19$video = _this19.video) !== null && _this19$video !== void 0 && _this19$video.isMuted()),
3739
- sendShare: (_this19$mediaProperti3 = _this19.mediaProperties.mediaDirection) === null || _this19$mediaProperti3 === void 0 ? void 0 : _this19$mediaProperti3.sendShare,
3740
- receiveAudio: (_this19$mediaProperti4 = _this19.mediaProperties.mediaDirection) === null || _this19$mediaProperti4 === void 0 ? void 0 : _this19$mediaProperti4.receiveAudio,
3741
- receiveVideo: (_this19$mediaProperti5 = _this19.mediaProperties.mediaDirection) === null || _this19$mediaProperti5 === void 0 ? void 0 : _this19$mediaProperti5.receiveVideo,
3742
- receiveShare: (_this19$mediaProperti6 = _this19.mediaProperties.mediaDirection) === null || _this19$mediaProperti6 === void 0 ? void 0 : _this19$mediaProperti6.receiveShare
3801
+ sendAudio: ((_this20$mediaProperti = _this20.mediaProperties.mediaDirection) === null || _this20$mediaProperti === void 0 ? void 0 : _this20$mediaProperti.sendAudio) && !((_this20$audio2 = _this20.audio) !== null && _this20$audio2 !== void 0 && _this20$audio2.isMuted()),
3802
+ sendVideo: ((_this20$mediaProperti2 = _this20.mediaProperties.mediaDirection) === null || _this20$mediaProperti2 === void 0 ? void 0 : _this20$mediaProperti2.sendVideo) && !((_this20$video = _this20.video) !== null && _this20$video !== void 0 && _this20$video.isMuted()),
3803
+ sendShare: (_this20$mediaProperti3 = _this20.mediaProperties.mediaDirection) === null || _this20$mediaProperti3 === void 0 ? void 0 : _this20$mediaProperti3.sendShare,
3804
+ receiveAudio: (_this20$mediaProperti4 = _this20.mediaProperties.mediaDirection) === null || _this20$mediaProperti4 === void 0 ? void 0 : _this20$mediaProperti4.receiveAudio,
3805
+ receiveVideo: (_this20$mediaProperti5 = _this20.mediaProperties.mediaDirection) === null || _this20$mediaProperti5 === void 0 ? void 0 : _this20$mediaProperti5.receiveVideo,
3806
+ receiveShare: (_this20$mediaProperti6 = _this20.mediaProperties.mediaDirection) === null || _this20$mediaProperti6 === void 0 ? void 0 : _this20$mediaProperti6.receiveShare
3743
3807
  }
3744
3808
  });
3745
3809
  }
3746
3810
  });
3747
3811
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE, function (payload) {
3748
- _triggerProxy.default.trigger(_this19, {
3812
+ _triggerProxy.default.trigger(_this20, {
3749
3813
  file: 'meeting/index',
3750
3814
  function: 'setUpLocusInfoSelfListener'
3751
3815
  }, _constants.EVENT_TRIGGERS.MEETING_SELF_CANNOT_VIEW_PARTICIPANT_LIST, {
@@ -3753,29 +3817,29 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3753
3817
  });
3754
3818
  });
3755
3819
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_MEETING_BREAKOUTS_CHANGED, function (payload) {
3756
- _this19.breakouts.updateBreakoutSessions(payload);
3757
- _triggerProxy.default.trigger(_this19, {
3820
+ _this20.breakouts.updateBreakoutSessions(payload);
3821
+ _triggerProxy.default.trigger(_this20, {
3758
3822
  file: 'meeting/index',
3759
3823
  function: 'setUpLocusInfoSelfListener'
3760
3824
  }, _constants.EVENT_TRIGGERS.MEETING_BREAKOUTS_UPDATE);
3761
3825
  });
3762
3826
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_MEETING_INTERPRETATION_CHANGED, function (payload) {
3763
- var targetChanged = _this19.simultaneousInterpretation.updateSelfInterpretation(payload);
3764
- _triggerProxy.default.trigger(_this19, {
3827
+ var targetChanged = _this20.simultaneousInterpretation.updateSelfInterpretation(payload);
3828
+ _triggerProxy.default.trigger(_this20, {
3765
3829
  file: 'meeting/index',
3766
3830
  function: 'setUpLocusInfoSelfListener'
3767
3831
  }, _constants.EVENT_TRIGGERS.MEETING_INTERPRETATION_UPDATE);
3768
- if (targetChanged && _this19.mediaProperties.audioStream) {
3769
- _this19.setSendNamedMediaGroup(_internalMediaCore.MediaType.AudioMain);
3832
+ if (targetChanged && _this20.mediaProperties.audioStream) {
3833
+ _this20.setSendNamedMediaGroup(_internalMediaCore.MediaType.AudioMain);
3770
3834
  }
3771
3835
  });
3772
3836
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_ROLES_CHANGED, function (payload) {
3773
- var _payload$newRoles, _payload$newRoles2, _payload$newRoles3, _payload$newRoles4;
3837
+ var _payload$newRoles, _payload$newRoles2, _payload$newRoles3;
3774
3838
  var isModeratorOrCohost = ((_payload$newRoles = payload.newRoles) === null || _payload$newRoles === void 0 ? void 0 : _payload$newRoles.includes(_constants.SELF_ROLES.MODERATOR)) || ((_payload$newRoles2 = payload.newRoles) === null || _payload$newRoles2 === void 0 ? void 0 : _payload$newRoles2.includes(_constants.SELF_ROLES.COHOST));
3775
- _this19.breakouts.updateCanManageBreakouts(isModeratorOrCohost);
3776
- _this19.simultaneousInterpretation.updateCanManageInterpreters((_payload$newRoles3 = payload.newRoles) === null || _payload$newRoles3 === void 0 ? void 0 : _payload$newRoles3.includes(_constants.SELF_ROLES.MODERATOR));
3777
- _this19.webinar.updateCanManageWebcast((_payload$newRoles4 = payload.newRoles) === null || _payload$newRoles4 === void 0 ? void 0 : _payload$newRoles4.includes(_constants.SELF_ROLES.MODERATOR));
3778
- _triggerProxy.default.trigger(_this19, {
3839
+ _this20.breakouts.updateCanManageBreakouts(isModeratorOrCohost);
3840
+ _this20.simultaneousInterpretation.updateCanManageInterpreters((_payload$newRoles3 = payload.newRoles) === null || _payload$newRoles3 === void 0 ? void 0 : _payload$newRoles3.includes(_constants.SELF_ROLES.MODERATOR));
3841
+ _this20.webinar.updateRoleChanged(payload);
3842
+ _triggerProxy.default.trigger(_this20, {
3779
3843
  file: 'meeting/index',
3780
3844
  function: 'setUpLocusInfoSelfListener'
3781
3845
  }, _constants.EVENT_TRIGGERS.MEETING_SELF_ROLES_CHANGED, {
@@ -3783,7 +3847,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3783
3847
  });
3784
3848
  });
3785
3849
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_IS_SHARING_BLOCKED_CHANGE, function (payload) {
3786
- _triggerProxy.default.trigger(_this19, {
3850
+ _triggerProxy.default.trigger(_this20, {
3787
3851
  file: 'meeting/index',
3788
3852
  function: 'setUpLocusInfoSelfListener'
3789
3853
  }, _constants.EVENT_TRIGGERS.MEETING_SELF_IS_SHARING_BLOCKED, {
@@ -3801,42 +3865,42 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3801
3865
  }, {
3802
3866
  key: "setUpLocusInfoMeetingListener",
3803
3867
  value: function setUpLocusInfoMeetingListener() {
3804
- var _this20 = this;
3868
+ var _this21 = this;
3805
3869
  this.locusInfo.on(_constants.EVENTS.REMOTE_RESPONSE, function (payload) {
3806
- _this20.meetingFiniteStateMachine.remote(payload);
3870
+ _this21.meetingFiniteStateMachine.remote(payload);
3807
3871
  if (payload.remoteDeclined) {
3808
- _this20.leave({
3872
+ _this21.leave({
3809
3873
  reason: payload.reason
3810
3874
  }).then(function () {
3811
3875
  _loggerProxy.default.logger.info('Meeting:index#setUpLocusInfoMeetingListener --> REMOTE_RESPONSE. Attempting to leave meeting.');
3812
3876
  }).catch(function (error) {
3813
3877
  // @ts-ignore
3814
- _loggerProxy.default.logger.error("Meeting:index#setUpLocusInfoMeetingListener --> REMOTE_RESPONSE. Issue with leave for meeting, meeting still in collection: ".concat(_this20, ", error: ").concat(error));
3878
+ _loggerProxy.default.logger.error("Meeting:index#setUpLocusInfoMeetingListener --> REMOTE_RESPONSE. Issue with leave for meeting, meeting still in collection: ".concat(_this21, ", error: ").concat(error));
3815
3879
  });
3816
3880
  }
3817
3881
  });
3818
3882
  this.locusInfo.on(_constants.EVENTS.DESTROY_MEETING, /*#__PURE__*/function () {
3819
- var _ref26 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10(payload) {
3883
+ var _ref30 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10(payload) {
3820
3884
  return _regenerator.default.wrap(function _callee10$(_context10) {
3821
3885
  while (1) switch (_context10.prev = _context10.next) {
3822
3886
  case 0:
3823
- if (!_this20.wirelessShare) {
3887
+ if (!_this21.wirelessShare) {
3824
3888
  _context10.next = 7;
3825
3889
  break;
3826
3890
  }
3827
- if (!_this20.mediaProperties.shareVideoStream) {
3891
+ if (!_this21.mediaProperties.shareVideoStream) {
3828
3892
  _context10.next = 4;
3829
3893
  break;
3830
3894
  }
3831
3895
  _context10.next = 4;
3832
- return _this20.setLocalShareVideoStream(undefined);
3896
+ return _this21.setLocalShareVideoStream(undefined);
3833
3897
  case 4:
3834
- if (!_this20.mediaProperties.shareAudioStream) {
3898
+ if (!_this21.mediaProperties.shareAudioStream) {
3835
3899
  _context10.next = 7;
3836
3900
  break;
3837
3901
  }
3838
3902
  _context10.next = 7;
3839
- return _this20.setLocalShareAudioStream(undefined);
3903
+ return _this21.setLocalShareAudioStream(undefined);
3840
3904
  case 7:
3841
3905
  if (!payload.shouldLeave) {
3842
3906
  _context10.next = 19;
@@ -3844,7 +3908,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3844
3908
  }
3845
3909
  _context10.prev = 8;
3846
3910
  _context10.next = 11;
3847
- return _this20.leave({
3911
+ return _this21.leave({
3848
3912
  reason: payload.reason
3849
3913
  });
3850
3914
  case 11:
@@ -3855,19 +3919,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3855
3919
  _context10.prev = 14;
3856
3920
  _context10.t0 = _context10["catch"](8);
3857
3921
  // @ts-ignore
3858
- _loggerProxy.default.logger.error("Meeting:index#setUpLocusInfoMeetingListener --> DESTROY_MEETING. Issue with leave for meeting, meeting still in collection: ".concat(_this20, ", error: ").concat(_context10.t0));
3922
+ _loggerProxy.default.logger.error("Meeting:index#setUpLocusInfoMeetingListener --> DESTROY_MEETING. Issue with leave for meeting, meeting still in collection: ".concat(_this21, ", error: ").concat(_context10.t0));
3859
3923
  case 17:
3860
3924
  _context10.next = 22;
3861
3925
  break;
3862
3926
  case 19:
3863
3927
  _loggerProxy.default.logger.info('Meeting:index#setUpLocusInfoMeetingListener --> MEETING_REMOVED_REASON', payload.reason);
3864
- _util2.default.cleanUp(_this20);
3865
- _triggerProxy.default.trigger(_this20, {
3928
+ _util2.default.cleanUp(_this21);
3929
+ _triggerProxy.default.trigger(_this21, {
3866
3930
  file: 'meeting/index',
3867
3931
  function: 'setUpLocusInfoMeetingListener'
3868
3932
  }, _constants.EVENTS.DESTROY_MEETING, {
3869
3933
  reason: payload.reason,
3870
- meetingId: _this20.id
3934
+ meetingId: _this21.id
3871
3935
  });
3872
3936
  case 22:
3873
3937
  case "end":
@@ -3876,7 +3940,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3876
3940
  }, _callee10, null, [[8, 14]]);
3877
3941
  }));
3878
3942
  return function (_x10) {
3879
- return _ref26.apply(this, arguments);
3943
+ return _ref30.apply(this, arguments);
3880
3944
  };
3881
3945
  }());
3882
3946
  }
@@ -3892,13 +3956,13 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3892
3956
  }, {
3893
3957
  key: "updateMeetingObject",
3894
3958
  value: function updateMeetingObject(object) {
3895
- var _this21 = this;
3959
+ var _this22 = this;
3896
3960
  // Validate if these are valid meeting object property
3897
3961
  // TODO: add a check to make sure the value passed in the constructor
3898
3962
  // is not changed by any delta event
3899
3963
  if (object && (0, _keys.default)(object).length) {
3900
3964
  (0, _keys.default)(object).forEach(function (key) {
3901
- _this21[key] = object[key];
3965
+ _this22[key] = object[key];
3902
3966
  });
3903
3967
  }
3904
3968
  }
@@ -4228,6 +4292,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4228
4292
  requiredHints: [_constants.DISPLAY_HINTS.DISABLE_VIEW_THE_PARTICIPANT_LIST],
4229
4293
  displayHints: this.userDisplayHints
4230
4294
  }),
4295
+ canEnableViewTheParticipantsListPanelist: _util5.default.hasHints({
4296
+ requiredHints: [_constants.DISPLAY_HINTS.ENABLE_VIEW_THE_PARTICIPANT_LIST_PANELIST],
4297
+ displayHints: this.userDisplayHints
4298
+ }),
4299
+ canDisableViewTheParticipantsListPanelist: _util5.default.hasHints({
4300
+ requiredHints: [_constants.DISPLAY_HINTS.DISABLE_VIEW_THE_PARTICIPANT_LIST_PANELIST],
4301
+ displayHints: this.userDisplayHints
4302
+ }),
4303
+ canEnableShowAttendeeCount: _util5.default.hasHints({
4304
+ requiredHints: [_constants.DISPLAY_HINTS.ENABLE_SHOW_ATTENDEE_COUNT],
4305
+ displayHints: this.userDisplayHints
4306
+ }),
4307
+ canDisableShowAttendeeCount: _util5.default.hasHints({
4308
+ requiredHints: [_constants.DISPLAY_HINTS.DISABLE_SHOW_ATTENDEE_COUNT],
4309
+ displayHints: this.userDisplayHints
4310
+ }),
4231
4311
  canEnableRaiseHand: _util5.default.hasHints({
4232
4312
  requiredHints: [_constants.DISPLAY_HINTS.ENABLE_RAISE_HAND],
4233
4313
  displayHints: this.userDisplayHints
@@ -4244,6 +4324,26 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4244
4324
  requiredHints: [_constants.DISPLAY_HINTS.DISABLE_VIDEO],
4245
4325
  displayHints: this.userDisplayHints
4246
4326
  }),
4327
+ canStartWebcast: _util5.default.hasHints({
4328
+ requiredHints: [_constants.DISPLAY_HINTS.WEBCAST_CONTROL_START],
4329
+ displayHints: this.userDisplayHints
4330
+ }),
4331
+ canStopWebcast: _util5.default.hasHints({
4332
+ requiredHints: [_constants.DISPLAY_HINTS.WEBCAST_CONTROL_STOP],
4333
+ displayHints: this.userDisplayHints
4334
+ }),
4335
+ canShowStageView: _util5.default.hasHints({
4336
+ requiredHints: [_constants.DISPLAY_HINTS.STAGE_VIEW_ACTIVE],
4337
+ displayHints: this.userDisplayHints
4338
+ }),
4339
+ canEnableStageView: _util5.default.hasHints({
4340
+ requiredHints: [_constants.DISPLAY_HINTS.ENABLE_STAGE_VIEW],
4341
+ displayHints: this.userDisplayHints
4342
+ }),
4343
+ canDisableStageView: _util5.default.hasHints({
4344
+ requiredHints: [_constants.DISPLAY_HINTS.DISABLE_STAGE_VIEW],
4345
+ displayHints: this.userDisplayHints
4346
+ }),
4247
4347
  canShareFile: _util5.default.hasHints({
4248
4348
  requiredHints: [_constants.DISPLAY_HINTS.SHARE_FILE],
4249
4349
  displayHints: this.userDisplayHints
@@ -4422,7 +4522,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4422
4522
  }, {
4423
4523
  key: "closeRemoteStreams",
4424
4524
  value: function closeRemoteStreams() {
4425
- var _this22 = this;
4525
+ var _this23 = this;
4426
4526
  var _this$mediaProperties4 = this.mediaProperties,
4427
4527
  remoteAudioStream = _this$mediaProperties4.remoteAudioStream,
4428
4528
  remoteVideoStream = _this$mediaProperties4.remoteVideoStream,
@@ -4436,7 +4536,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4436
4536
  */
4437
4537
  // eslint-disable-next-line @typescript-eslint/no-shadow
4438
4538
  var triggerMediaStoppedEvent = function triggerMediaStoppedEvent(mediaType) {
4439
- _triggerProxy.default.trigger(_this22, {
4539
+ _triggerProxy.default.trigger(_this23, {
4440
4540
  file: 'meeting/index',
4441
4541
  function: 'closeRemoteStreams'
4442
4542
  }, _constants.EVENT_TRIGGERS.MEDIA_STOPPED, {
@@ -4744,7 +4844,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4744
4844
  }, {
4745
4845
  key: "setMercuryListener",
4746
4846
  value: function setMercuryListener() {
4747
- var _this23 = this;
4847
+ var _this24 = this;
4748
4848
  // Client will have a socket manager and handle reconnecting to mercury, when we reconnect to mercury
4749
4849
  // if the meeting has active peer connections, it should try to reconnect.
4750
4850
  // @ts-ignore
@@ -4752,33 +4852,33 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4752
4852
  _loggerProxy.default.logger.info('Meeting:index#setMercuryListener --> Web socket online');
4753
4853
 
4754
4854
  // Only send restore event when it was disconnected before and for connected later
4755
- if (!_this23.hasWebsocketConnected) {
4855
+ if (!_this24.hasWebsocketConnected) {
4756
4856
  // @ts-ignore
4757
- _this23.webex.internal.newMetrics.submitClientEvent({
4857
+ _this24.webex.internal.newMetrics.submitClientEvent({
4758
4858
  name: 'client.mercury.connection.restored',
4759
4859
  options: {
4760
- meetingId: _this23.id
4860
+ meetingId: _this24.id
4761
4861
  }
4762
4862
  });
4763
4863
  _metrics.default.sendBehavioralMetric(_constants2.default.MERCURY_CONNECTION_RESTORED, {
4764
- correlation_id: _this23.correlationId
4864
+ correlation_id: _this24.correlationId
4765
4865
  });
4766
4866
  }
4767
- _this23.hasWebsocketConnected = true;
4867
+ _this24.hasWebsocketConnected = true;
4768
4868
  });
4769
4869
 
4770
4870
  // @ts-ignore
4771
4871
  this.webex.internal.mercury.on(_constants.OFFLINE, function () {
4772
4872
  _loggerProxy.default.logger.error('Meeting:index#setMercuryListener --> Web socket offline');
4773
4873
  // @ts-ignore
4774
- _this23.webex.internal.newMetrics.submitClientEvent({
4874
+ _this24.webex.internal.newMetrics.submitClientEvent({
4775
4875
  name: 'client.mercury.connection.lost',
4776
4876
  options: {
4777
- meetingId: _this23.id
4877
+ meetingId: _this24.id
4778
4878
  }
4779
4879
  });
4780
4880
  _metrics.default.sendBehavioralMetric(_constants2.default.MERCURY_CONNECTION_FAILURE, {
4781
- correlation_id: _this23.correlationId
4881
+ correlation_id: _this24.correlationId
4782
4882
  });
4783
4883
  });
4784
4884
  }
@@ -4880,7 +4980,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4880
4980
  }, {
4881
4981
  key: "muteAudio",
4882
4982
  value: function muteAudio() {
4883
- var _this24 = this;
4983
+ var _this25 = this;
4884
4984
  if (!_util2.default.isUserInJoinedState(this.locusInfo)) {
4885
4985
  return _promise.default.reject(new _webexErrors.UserNotJoinedError());
4886
4986
  }
@@ -4896,22 +4996,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4896
4996
 
4897
4997
  // First, stop sending the local audio media
4898
4998
  return logRequest(this.audio.handleClientRequest(this, true).then(function () {
4899
- _util2.default.handleAudioLogging(_this24.mediaProperties.audioStream);
4999
+ _util2.default.handleAudioLogging(_this25.mediaProperties.audioStream);
4900
5000
  // @ts-ignore
4901
- _this24.webex.internal.newMetrics.submitClientEvent({
5001
+ _this25.webex.internal.newMetrics.submitClientEvent({
4902
5002
  name: 'client.muted',
4903
5003
  payload: {
4904
5004
  trigger: 'user-interaction',
4905
5005
  mediaType: 'audio'
4906
5006
  },
4907
5007
  options: {
4908
- meetingId: _this24.id
5008
+ meetingId: _this25.id
4909
5009
  }
4910
5010
  });
4911
5011
  }).catch(function (error) {
4912
5012
  _metrics.default.sendBehavioralMetric(_constants2.default.MUTE_AUDIO_FAILURE, {
4913
- correlation_id: _this24.correlationId,
4914
- locus_id: _this24.locusUrl.split('/').pop(),
5013
+ correlation_id: _this25.correlationId,
5014
+ locus_id: _this25.locusUrl.split('/').pop(),
4915
5015
  reason: error.message,
4916
5016
  stack: error.stack
4917
5017
  });
@@ -4930,7 +5030,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4930
5030
  }, {
4931
5031
  key: "unmuteAudio",
4932
5032
  value: function unmuteAudio() {
4933
- var _this25 = this;
5033
+ var _this26 = this;
4934
5034
  if (!_util2.default.isUserInJoinedState(this.locusInfo)) {
4935
5035
  return _promise.default.reject(new _webexErrors.UserNotJoinedError());
4936
5036
  }
@@ -4946,22 +5046,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4946
5046
 
4947
5047
  // First, send the control to unmute the participant on the server
4948
5048
  return logRequest(this.audio.handleClientRequest(this, false).then(function () {
4949
- _util2.default.handleAudioLogging(_this25.mediaProperties.audioStream);
5049
+ _util2.default.handleAudioLogging(_this26.mediaProperties.audioStream);
4950
5050
  // @ts-ignore
4951
- _this25.webex.internal.newMetrics.submitClientEvent({
5051
+ _this26.webex.internal.newMetrics.submitClientEvent({
4952
5052
  name: 'client.unmuted',
4953
5053
  payload: {
4954
5054
  trigger: 'user-interaction',
4955
5055
  mediaType: 'audio'
4956
5056
  },
4957
5057
  options: {
4958
- meetingId: _this25.id
5058
+ meetingId: _this26.id
4959
5059
  }
4960
5060
  });
4961
5061
  }).catch(function (error) {
4962
5062
  _metrics.default.sendBehavioralMetric(_constants2.default.UNMUTE_AUDIO_FAILURE, {
4963
- correlation_id: _this25.correlationId,
4964
- locus_id: _this25.locusUrl.split('/').pop(),
5063
+ correlation_id: _this26.correlationId,
5064
+ locus_id: _this26.locusUrl.split('/').pop(),
4965
5065
  reason: error.message,
4966
5066
  stack: error.stack
4967
5067
  });
@@ -4980,7 +5080,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4980
5080
  }, {
4981
5081
  key: "muteVideo",
4982
5082
  value: function muteVideo() {
4983
- var _this26 = this;
5083
+ var _this27 = this;
4984
5084
  if (!_util2.default.isUserInJoinedState(this.locusInfo)) {
4985
5085
  return _promise.default.reject(new _webexErrors.UserNotJoinedError());
4986
5086
  }
@@ -4994,22 +5094,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4994
5094
  return _promise.default.reject(new _parameter.default('no video control associated to the meeting'));
4995
5095
  }
4996
5096
  return logRequest(this.video.handleClientRequest(this, true).then(function () {
4997
- _util2.default.handleVideoLogging(_this26.mediaProperties.videoStream);
5097
+ _util2.default.handleVideoLogging(_this27.mediaProperties.videoStream);
4998
5098
  // @ts-ignore
4999
- _this26.webex.internal.newMetrics.submitClientEvent({
5099
+ _this27.webex.internal.newMetrics.submitClientEvent({
5000
5100
  name: 'client.muted',
5001
5101
  payload: {
5002
5102
  trigger: 'user-interaction',
5003
5103
  mediaType: 'video'
5004
5104
  },
5005
5105
  options: {
5006
- meetingId: _this26.id
5106
+ meetingId: _this27.id
5007
5107
  }
5008
5108
  });
5009
5109
  }).catch(function (error) {
5010
5110
  _metrics.default.sendBehavioralMetric(_constants2.default.MUTE_VIDEO_FAILURE, {
5011
- correlation_id: _this26.correlationId,
5012
- locus_id: _this26.locusUrl.split('/').pop(),
5111
+ correlation_id: _this27.correlationId,
5112
+ locus_id: _this27.locusUrl.split('/').pop(),
5013
5113
  reason: error.message,
5014
5114
  stack: error.stack
5015
5115
  });
@@ -5028,7 +5128,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5028
5128
  }, {
5029
5129
  key: "unmuteVideo",
5030
5130
  value: function unmuteVideo() {
5031
- var _this27 = this;
5131
+ var _this28 = this;
5032
5132
  if (!_util2.default.isUserInJoinedState(this.locusInfo)) {
5033
5133
  return _promise.default.reject(new _webexErrors.UserNotJoinedError());
5034
5134
  }
@@ -5042,22 +5142,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5042
5142
  return _promise.default.reject(new _parameter.default('no audio control associated to the meeting'));
5043
5143
  }
5044
5144
  return logRequest(this.video.handleClientRequest(this, false).then(function () {
5045
- _util2.default.handleVideoLogging(_this27.mediaProperties.videoStream);
5145
+ _util2.default.handleVideoLogging(_this28.mediaProperties.videoStream);
5046
5146
  // @ts-ignore
5047
- _this27.webex.internal.newMetrics.submitClientEvent({
5147
+ _this28.webex.internal.newMetrics.submitClientEvent({
5048
5148
  name: 'client.unmuted',
5049
5149
  payload: {
5050
5150
  trigger: 'user-interaction',
5051
5151
  mediaType: 'video'
5052
5152
  },
5053
5153
  options: {
5054
- meetingId: _this27.id
5154
+ meetingId: _this28.id
5055
5155
  }
5056
5156
  });
5057
5157
  }).catch(function (error) {
5058
5158
  _metrics.default.sendBehavioralMetric(_constants2.default.UNMUTE_VIDEO_FAILURE, {
5059
- correlation_id: _this27.correlationId,
5060
- locus_id: _this27.locusUrl.split('/').pop(),
5159
+ correlation_id: _this28.correlationId,
5160
+ locus_id: _this28.locusUrl.split('/').pop(),
5061
5161
  reason: error.message,
5062
5162
  stack: error.stack
5063
5163
  });
@@ -5087,7 +5187,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5087
5187
  key: "joinWithMedia",
5088
5188
  value: (function () {
5089
5189
  var _joinWithMedia = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee15() {
5090
- var _this28 = this;
5190
+ var _this29 = this;
5091
5191
  var options,
5092
5192
  mediaOptions,
5093
5193
  _options$joinOptions,
@@ -5174,7 +5274,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5174
5274
  case 38:
5175
5275
  _context15.next = 40;
5176
5276
  return this.addMediaInternal(function () {
5177
- return _this28.joinWithMediaRetryInfo.isRetry ? 'JOIN_MEETING_FINAL' : 'JOIN_MEETING_RETRY';
5277
+ return _this29.joinWithMediaRetryInfo.isRetry ? 'JOIN_MEETING_FINAL' : 'JOIN_MEETING_RETRY';
5178
5278
  }, turnServerInfo, forceTurnDiscovery, mediaOptions);
5179
5279
  case 40:
5180
5280
  mediaResponse = _context15.sent;
@@ -5266,7 +5366,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5266
5366
  }, {
5267
5367
  key: "reconnect",
5268
5368
  value: function reconnect(options) {
5269
- var _this29 = this;
5369
+ var _this30 = this;
5270
5370
  _loggerProxy.default.logger.log("Meeting:index#reconnect --> attempting to reconnect meeting ".concat(this.id));
5271
5371
  if (!this.reconnectionManager || !this.reconnectionManager.reconnect) {
5272
5372
  return _promise.default.reject(new _parameter.default('Cannot reconnect, ReconnectionManager must first be defined.'));
@@ -5276,15 +5376,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5276
5376
  if (!_util2.default.isMediaEstablished(this.currentMediaStatus)) {
5277
5377
  return _promise.default.reject(new _parameter.default('Cannot reconnect, Media has not established to reconnect'));
5278
5378
  }
5379
+ this.cleanUpBeforeReconnection();
5279
5380
  return this.reconnectionManager.reconnect(options, /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee16() {
5280
5381
  return _regenerator.default.wrap(function _callee16$(_context16) {
5281
5382
  while (1) switch (_context16.prev = _context16.next) {
5282
5383
  case 0:
5283
5384
  _context16.next = 2;
5284
- return _this29.waitForRemoteSDPAnswer();
5385
+ return _this30.waitForRemoteSDPAnswer();
5285
5386
  case 2:
5286
5387
  _context16.next = 4;
5287
- return _this29.waitForMediaConnectionConnected();
5388
+ return _this30.waitForMediaConnectionConnected();
5288
5389
  case 4:
5289
5390
  case "end":
5290
5391
  return _context16.stop();
@@ -5298,7 +5399,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5298
5399
  return _promise.default.resolve();
5299
5400
  }
5300
5401
  _loggerProxy.default.logger.error('Meeting:index#reconnect --> Meeting reconnect failed', error);
5301
- _this29.uploadLogs({
5402
+ _this30.uploadLogs({
5302
5403
  file: 'meeting/index',
5303
5404
  function: 'reconnect'
5304
5405
  });
@@ -5345,19 +5446,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5345
5446
  }, {
5346
5447
  key: "setCaptionLanguage",
5347
5448
  value: function setCaptionLanguage(language) {
5348
- var _this30 = this;
5449
+ var _this31 = this;
5349
5450
  return new _promise.default(function (resolve, reject) {
5350
- if (!_this30.isTranscriptionSupported()) {
5451
+ if (!_this31.isTranscriptionSupported()) {
5351
5452
  _loggerProxy.default.logger.error('Meeting:index#setCaptionLanguage --> Webex Assistant is not enabled/supported');
5352
5453
  reject(new Error('Webex Assistant is not enabled/supported'));
5353
5454
  }
5354
5455
  try {
5355
5456
  var voiceaListenerCaptionUpdate = function voiceaListenerCaptionUpdate(payload) {
5356
5457
  // @ts-ignore
5357
- _this30.webex.internal.voicea.off(_internalPluginVoicea.EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, voiceaListenerCaptionUpdate);
5458
+ _this31.webex.internal.voicea.off(_internalPluginVoicea.EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, voiceaListenerCaptionUpdate);
5358
5459
  var statusCode = payload.statusCode;
5359
5460
  if (statusCode === 200) {
5360
- _this30.transcription.languageOptions = _objectSpread(_objectSpread({}, _this30.transcription.languageOptions), {}, {
5461
+ _this31.transcription.languageOptions = _objectSpread(_objectSpread({}, _this31.transcription.languageOptions), {}, {
5361
5462
  currentCaptionLanguage: language
5362
5463
  });
5363
5464
  resolve(language);
@@ -5366,9 +5467,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5366
5467
  }
5367
5468
  };
5368
5469
  // @ts-ignore
5369
- _this30.webex.internal.voicea.on(_internalPluginVoicea.EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, voiceaListenerCaptionUpdate);
5470
+ _this31.webex.internal.voicea.on(_internalPluginVoicea.EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, voiceaListenerCaptionUpdate);
5370
5471
  // @ts-ignore
5371
- _this30.webex.internal.voicea.requestLanguage(language);
5472
+ _this31.webex.internal.voicea.requestLanguage(language);
5372
5473
  } catch (error) {
5373
5474
  _loggerProxy.default.logger.error("Meeting:index#setCaptionLanguage --> ".concat(error));
5374
5475
  reject(error);
@@ -5384,23 +5485,23 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5384
5485
  }, {
5385
5486
  key: "setSpokenLanguage",
5386
5487
  value: function setSpokenLanguage(language) {
5387
- var _this31 = this;
5488
+ var _this32 = this;
5388
5489
  return new _promise.default(function (resolve, reject) {
5389
- if (!_this31.isTranscriptionSupported()) {
5490
+ if (!_this32.isTranscriptionSupported()) {
5390
5491
  _loggerProxy.default.logger.error('Meeting:index#setCaptionLanguage --> Webex Assistant is not enabled/supported');
5391
5492
  reject(new Error('Webex Assistant is not enabled/supported'));
5392
5493
  }
5393
- if (_this31.getCurUserType() !== 'host') {
5494
+ if (_this32.getCurUserType() !== 'host') {
5394
5495
  _loggerProxy.default.logger.error('Meeting:index#setSpokenLanguage --> Only host can set spoken language');
5395
5496
  reject(new Error('Only host can set spoken language'));
5396
5497
  }
5397
5498
  try {
5398
5499
  var voiceaListenerLanguageUpdate = function voiceaListenerLanguageUpdate(payload) {
5399
5500
  // @ts-ignore
5400
- _this31.webex.internal.voicea.off(_internalPluginVoicea.EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE, voiceaListenerLanguageUpdate);
5501
+ _this32.webex.internal.voicea.off(_internalPluginVoicea.EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE, voiceaListenerLanguageUpdate);
5401
5502
  var languageCode = payload.languageCode;
5402
5503
  if (languageCode) {
5403
- _this31.transcription.languageOptions = _objectSpread(_objectSpread({}, _this31.transcription.languageOptions), {}, {
5504
+ _this32.transcription.languageOptions = _objectSpread(_objectSpread({}, _this32.transcription.languageOptions), {}, {
5404
5505
  currentSpokenLanguage: languageCode
5405
5506
  });
5406
5507
  resolve(languageCode);
@@ -5410,10 +5511,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5410
5511
  };
5411
5512
 
5412
5513
  // @ts-ignore
5413
- _this31.webex.internal.voicea.on(_internalPluginVoicea.EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE, voiceaListenerLanguageUpdate);
5514
+ _this32.webex.internal.voicea.on(_internalPluginVoicea.EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE, voiceaListenerLanguageUpdate);
5414
5515
 
5415
5516
  // @ts-ignore
5416
- _this31.webex.internal.voicea.setSpokenLanguage(language);
5517
+ _this32.webex.internal.voicea.setSpokenLanguage(language);
5417
5518
  } catch (error) {
5418
5519
  _loggerProxy.default.logger.error("Meeting:index#setSpokenLanguage --> ".concat(error));
5419
5520
  reject(error);
@@ -5533,7 +5634,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5533
5634
  */
5534
5635
  function () {
5535
5636
  var _join = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee18() {
5536
- var _this32 = this;
5637
+ var _this33 = this;
5537
5638
  var options,
5538
5639
  errorMessage,
5539
5640
  error,
@@ -5679,62 +5780,62 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5679
5780
  return _context18.abrupt("return", _promise.default.reject(_context18.t0));
5680
5781
  case 51:
5681
5782
  return _context18.abrupt("return", _util2.default.joinMeetingOptions(this, options).then(function (join) {
5682
- _this32.meetingFiniteStateMachine.join();
5683
- _this32.setupLocusMediaRequest();
5783
+ _this33.meetingFiniteStateMachine.join();
5784
+ _this33.setupLocusMediaRequest();
5684
5785
 
5685
5786
  // @ts-ignore
5686
- _this32.webex.internal.device.meetingStarted();
5687
- (0, _classPrivateFieldSet2.default)(_this32, _isoLocalClientMeetingJoinTime, new Date().toISOString());
5787
+ _this33.webex.internal.device.meetingStarted();
5788
+ (0, _classPrivateFieldSet2.default)(_this33, _isoLocalClientMeetingJoinTime, new Date().toISOString());
5688
5789
  _loggerProxy.default.logger.log('Meeting:index#join --> Success');
5689
5790
  _metrics.default.sendBehavioralMetric(_constants2.default.JOIN_SUCCESS, {
5690
- correlation_id: _this32.correlationId
5791
+ correlation_id: _this33.correlationId
5691
5792
  });
5692
5793
  joinSuccess(join);
5693
- _this32.deferJoin = undefined;
5794
+ _this33.deferJoin = undefined;
5694
5795
  return join;
5695
5796
  }).catch(function (error) {
5696
- var _this32$meetingInfo, _error$error;
5697
- _this32.meetingFiniteStateMachine.fail(error);
5797
+ var _this33$meetingInfo, _error$error;
5798
+ _this33.meetingFiniteStateMachine.fail(error);
5698
5799
  _loggerProxy.default.logger.error('Meeting:index#join --> Failed', error);
5699
5800
 
5700
5801
  // @ts-ignore
5701
- _this32.webex.internal.newMetrics.submitClientEvent({
5802
+ _this33.webex.internal.newMetrics.submitClientEvent({
5702
5803
  name: 'client.locus.join.response',
5703
5804
  payload: {
5704
5805
  identifiers: {
5705
- meetingLookupUrl: (_this32$meetingInfo = _this32.meetingInfo) === null || _this32$meetingInfo === void 0 ? void 0 : _this32$meetingInfo.meetingLookupUrl
5806
+ meetingLookupUrl: (_this33$meetingInfo = _this33.meetingInfo) === null || _this33$meetingInfo === void 0 ? void 0 : _this33$meetingInfo.meetingLookupUrl
5706
5807
  }
5707
5808
  },
5708
5809
  options: {
5709
- meetingId: _this32.id,
5810
+ meetingId: _this33.id,
5710
5811
  rawError: error
5711
5812
  }
5712
5813
  });
5713
5814
 
5714
5815
  // TODO: change this to error codes and pre defined dictionary
5715
5816
  _metrics.default.sendBehavioralMetric(_constants2.default.JOIN_FAILURE, {
5716
- correlation_id: _this32.correlationId,
5817
+ correlation_id: _this33.correlationId,
5717
5818
  reason: (_error$error = error.error) === null || _error$error === void 0 ? void 0 : _error$error.message,
5718
5819
  stack: error.stack
5719
5820
  });
5720
5821
 
5721
5822
  // Upload logs on join Failure
5722
- _triggerProxy.default.trigger(_this32, {
5823
+ _triggerProxy.default.trigger(_this33, {
5723
5824
  file: 'meeting/index',
5724
5825
  function: 'join'
5725
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this32);
5826
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this33);
5726
5827
  joinFailed(error);
5727
- _this32.deferJoin = undefined;
5828
+ _this33.deferJoin = undefined;
5728
5829
  return _promise.default.reject(error);
5729
5830
  }).then(function (join) {
5730
5831
  // @ts-ignore - config coming from registerPlugin
5731
- if (_this32.config.enableAutomaticLLM) {
5832
+ if (_this33.config.enableAutomaticLLM) {
5732
5833
  // @ts-ignore
5733
- _this32.webex.internal.llm.on('online', _this32.handleLLMOnline);
5734
- _this32.updateLLMConnection().catch(function (error) {
5834
+ _this33.webex.internal.llm.on('online', _this33.handleLLMOnline);
5835
+ _this33.updateLLMConnection().catch(function (error) {
5735
5836
  _loggerProxy.default.logger.error('Meeting:index#join --> Transcription Socket Connection Failed', error);
5736
5837
  _metrics.default.sendBehavioralMetric(_constants2.default.LLM_CONNECTION_AFTER_JOIN_FAILURE, {
5737
- correlation_id: _this32.correlationId,
5838
+ correlation_id: _this33.correlationId,
5738
5839
  reason: error === null || error === void 0 ? void 0 : error.message,
5739
5840
  stack: error.stack
5740
5841
  });
@@ -5766,7 +5867,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5766
5867
  key: "updateLLMConnection",
5767
5868
  value: (function () {
5768
5869
  var _updateLLMConnection = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee19() {
5769
- var _this33 = this;
5870
+ var _this34 = this;
5770
5871
  var _this$locusInfo6, url, _this$locusInfo6$info, _this$locusInfo6$info2, datachannelUrl, isJoined;
5771
5872
  return _regenerator.default.wrap(function _callee19$(_context19) {
5772
5873
  while (1) switch (_context19.prev = _context19.next) {
@@ -5802,9 +5903,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5802
5903
  case 10:
5803
5904
  return _context19.abrupt("return", this.webex.internal.llm.registerAndConnect(url, datachannelUrl).then(function (registerAndConnectResult) {
5804
5905
  // @ts-ignore - Fix type
5805
- _this33.webex.internal.llm.off('event:relay.event', _this33.processRelayEvent);
5906
+ _this34.webex.internal.llm.off('event:relay.event', _this34.processRelayEvent);
5806
5907
  // @ts-ignore - Fix type
5807
- _this33.webex.internal.llm.on('event:relay.event', _this33.processRelayEvent);
5908
+ _this34.webex.internal.llm.on('event:relay.event', _this34.processRelayEvent);
5808
5909
  _loggerProxy.default.logger.info('Meeting:index#updateLLMConnection --> enabled to receive relay events!');
5809
5910
  return _promise.default.resolve(registerAndConnectResult);
5810
5911
  }));
@@ -5858,7 +5959,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5858
5959
  }, {
5859
5960
  key: "dialInPstn",
5860
5961
  value: function dialInPstn() {
5861
- var _this34 = this;
5962
+ var _this35 = this;
5862
5963
  if (this.isPhoneProvisioned(this.dialInDeviceStatus)) return _promise.default.resolve(); // prevent multiple dial in devices from being provisioned
5863
5964
 
5864
5965
  var correlationId = this.correlationId,
@@ -5874,10 +5975,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5874
5975
  }).catch(function (error) {
5875
5976
  var _error$error2;
5876
5977
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_DIAL_IN_FAILURE, {
5877
- correlation_id: _this34.correlationId,
5878
- dial_in_url: _this34.dialInUrl,
5978
+ correlation_id: _this35.correlationId,
5979
+ dial_in_url: _this35.dialInUrl,
5879
5980
  locus_id: locusUrl.split('/').pop(),
5880
- client_url: _this34.deviceUrl,
5981
+ client_url: _this35.deviceUrl,
5881
5982
  reason: (_error$error2 = error.error) === null || _error$error2 === void 0 ? void 0 : _error$error2.message,
5882
5983
  stack: error.stack
5883
5984
  });
@@ -5895,7 +5996,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5895
5996
  }, {
5896
5997
  key: "dialOutPstn",
5897
5998
  value: function dialOutPstn(phoneNumber) {
5898
- var _this35 = this;
5999
+ var _this36 = this;
5899
6000
  if (this.isPhoneProvisioned(this.dialOutDeviceStatus)) return _promise.default.resolve(); // prevent multiple dial out devices from being provisioned
5900
6001
 
5901
6002
  var correlationId = this.correlationId,
@@ -5912,10 +6013,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5912
6013
  }).catch(function (error) {
5913
6014
  var _error$error3;
5914
6015
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_DIAL_OUT_FAILURE, {
5915
- correlation_id: _this35.correlationId,
5916
- dial_out_url: _this35.dialOutUrl,
6016
+ correlation_id: _this36.correlationId,
6017
+ dial_out_url: _this36.dialOutUrl,
5917
6018
  locus_id: locusUrl.split('/').pop(),
5918
- client_url: _this35.deviceUrl,
6019
+ client_url: _this36.deviceUrl,
5919
6020
  reason: (_error$error3 = error.error) === null || _error$error3 === void 0 ? void 0 : _error$error3.message,
5920
6021
  stack: error.stack
5921
6022
  });
@@ -5946,7 +6047,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5946
6047
  }, {
5947
6048
  key: "moveTo",
5948
6049
  value: function moveTo(resourceId) {
5949
- var _this36 = this;
6050
+ var _this37 = this;
5950
6051
  if (!resourceId) {
5951
6052
  throw new _parameter.default('Cannot move call without a resourceId.');
5952
6053
  }
@@ -5990,12 +6091,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5990
6091
  while (1) switch (_context20.prev = _context20.next) {
5991
6092
  case 0:
5992
6093
  _context20.prev = 0;
5993
- if (!(_this36.screenShareFloorState === ScreenShareFloorStatus.GRANTED)) {
6094
+ if (!(_this37.screenShareFloorState === ScreenShareFloorStatus.GRANTED)) {
5994
6095
  _context20.next = 4;
5995
6096
  break;
5996
6097
  }
5997
6098
  _context20.next = 4;
5998
- return _this36.releaseScreenShareFloor();
6099
+ return _this37.releaseScreenShareFloor();
5999
6100
  case 4:
6000
6101
  mediaSettings = {
6001
6102
  mediaDirection: {
@@ -6007,37 +6108,37 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6007
6108
  receiveShare: true
6008
6109
  }
6009
6110
  };
6010
- _this36.mediaProperties.setMediaDirection(mediaSettings.mediaDirection);
6011
- _this36.mediaProperties.unsetRemoteMedia();
6111
+ _this37.mediaProperties.setMediaDirection(mediaSettings.mediaDirection);
6112
+ _this37.mediaProperties.unsetRemoteMedia();
6012
6113
 
6013
6114
  // when a move to is intiated by the client , Locus delets the existing media node from the server as soon the device answers the meeting
6014
6115
  // once the device answers we close the old connection and create new media server connection with only share enabled
6015
- if (!_this36.statsAnalyzer) {
6116
+ if (!_this37.statsAnalyzer) {
6016
6117
  _context20.next = 10;
6017
6118
  break;
6018
6119
  }
6019
6120
  _context20.next = 10;
6020
- return _this36.statsAnalyzer.stopAnalyzer();
6121
+ return _this37.statsAnalyzer.stopAnalyzer();
6021
6122
  case 10:
6022
6123
  _context20.next = 12;
6023
- return _this36.closeRemoteStreams();
6124
+ return _this37.closeRemoteStreams();
6024
6125
  case 12:
6025
6126
  _context20.next = 14;
6026
- return _this36.closePeerConnections();
6127
+ return _this37.closePeerConnections();
6027
6128
  case 14:
6028
- _this36.cleanupLocalStreams();
6029
- _this36.unsetRemoteStreams();
6030
- _this36.unsetPeerConnections();
6031
- _this36.reconnectionManager.cleanUp();
6129
+ _this37.cleanupLocalStreams();
6130
+ _this37.unsetRemoteStreams();
6131
+ _this37.unsetPeerConnections();
6132
+ _this37.reconnectionManager.cleanUp();
6032
6133
  _context20.next = 20;
6033
- return _this36.addMedia({
6134
+ return _this37.addMedia({
6034
6135
  audioEnabled: false,
6035
6136
  videoEnabled: false,
6036
6137
  shareVideoEnabled: true
6037
6138
  });
6038
6139
  case 20:
6039
6140
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_TO_SUCCESS);
6040
- _this36.isMoveToInProgress = false;
6141
+ _this37.isMoveToInProgress = false;
6041
6142
  _context20.next = 29;
6042
6143
  break;
6043
6144
  case 24:
@@ -6045,12 +6146,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6045
6146
  _context20.t0 = _context20["catch"](0);
6046
6147
  _loggerProxy.default.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId', _context20.t0);
6047
6148
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_TO_FAILURE, {
6048
- correlation_id: _this36.correlationId,
6049
- locus_id: _this36.locusUrl.split('/').pop(),
6149
+ correlation_id: _this37.correlationId,
6150
+ locus_id: _this37.locusUrl.split('/').pop(),
6050
6151
  reason: _context20.t0.message,
6051
6152
  stack: _context20.t0.stack
6052
6153
  });
6053
- _this36.isMoveToInProgress = false;
6154
+ _this37.isMoveToInProgress = false;
6054
6155
  case 29:
6055
6156
  case "end":
6056
6157
  return _context20.stop();
@@ -6066,17 +6167,17 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6066
6167
  resourceId: resourceId,
6067
6168
  moveToResource: true
6068
6169
  }).then(function () {
6069
- _this36.meetingFiniteStateMachine.join();
6170
+ _this37.meetingFiniteStateMachine.join();
6070
6171
  }).catch(function (error) {
6071
- _this36.meetingFiniteStateMachine.fail(error);
6172
+ _this37.meetingFiniteStateMachine.fail(error);
6072
6173
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_TO_FAILURE, {
6073
- correlation_id: _this36.correlationId,
6074
- locus_id: _this36.locusUrl.split('/').pop(),
6174
+ correlation_id: _this37.correlationId,
6175
+ locus_id: _this37.locusUrl.split('/').pop(),
6075
6176
  reason: error.message,
6076
6177
  stack: error.stack
6077
6178
  });
6078
6179
  _loggerProxy.default.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId', error);
6079
- _this36.isMoveToInProgress = false;
6180
+ _this37.isMoveToInProgress = false;
6080
6181
  return _promise.default.reject(error);
6081
6182
  });
6082
6183
  }
@@ -6091,7 +6192,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6091
6192
  }, {
6092
6193
  key: "moveFrom",
6093
6194
  value: function moveFrom(resourceId) {
6094
- var _this37 = this;
6195
+ var _this38 = this;
6095
6196
  // On moveFrom ask the developer to re capture it moveFrom then updateMedia
6096
6197
  if (!resourceId) {
6097
6198
  throw new _parameter.default('Cannot move call without a resourceId.');
@@ -6106,19 +6207,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6106
6207
  }
6107
6208
  });
6108
6209
  return _util2.default.joinMeetingOptions(this).then(function () {
6109
- return _util2.default.leaveMeeting(_this37, {
6210
+ return _util2.default.leaveMeeting(_this38, {
6110
6211
  resourceId: resourceId,
6111
6212
  correlationId: oldCorrelationId,
6112
6213
  moveMeeting: true
6113
6214
  }).then(function () {
6114
- _this37.resourceId = '';
6215
+ _this38.resourceId = '';
6115
6216
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_FROM_SUCCESS);
6116
6217
  });
6117
6218
  }).catch(function (error) {
6118
- _this37.meetingFiniteStateMachine.fail(error);
6219
+ _this38.meetingFiniteStateMachine.fail(error);
6119
6220
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_FROM_FAILURE, {
6120
- correlation_id: _this37.correlationId,
6121
- locus_id: _this37.locusUrl.split('/').pop(),
6221
+ correlation_id: _this38.correlationId,
6222
+ locus_id: _this38.locusUrl.split('/').pop(),
6122
6223
  reason: error.message,
6123
6224
  stack: error.stack
6124
6225
  });
@@ -6231,9 +6332,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6231
6332
  }, {
6232
6333
  key: "forwardEvent",
6233
6334
  value: function forwardEvent(eventEmitter, eventTypeToForward, meetingEventType) {
6234
- var _this38 = this;
6335
+ var _this39 = this;
6235
6336
  eventEmitter.on(eventTypeToForward, function (data) {
6236
- return _triggerProxy.default.trigger(_this38, {
6337
+ return _triggerProxy.default.trigger(_this39, {
6237
6338
  file: 'meetings',
6238
6339
  function: 'addMedia'
6239
6340
  }, meetingEventType, data);
@@ -6420,7 +6521,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6420
6521
  */
6421
6522
  function () {
6422
6523
  var _waitForRemoteSDPAnswer = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee24() {
6423
- var _this39 = this;
6524
+ var _this40 = this;
6424
6525
  var LOG_HEADER, deferSDPAnswer;
6425
6526
  return _regenerator.default.wrap(function _callee24$(_context24) {
6426
6527
  while (1) switch (_context24.prev = _context24.next) {
@@ -6437,18 +6538,18 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6437
6538
  this.sdpResponseTimer = setTimeout(function () {
6438
6539
  _loggerProxy.default.logger.warn("".concat(LOG_HEADER, " timeout! no REMOTE SDP ANSWER received within ").concat(_constants.ROAP_OFFER_ANSWER_EXCHANGE_TIMEOUT / 1000, " seconds"));
6439
6540
  // @ts-ignore
6440
- _this39.webex.internal.newMetrics.submitClientEvent({
6541
+ _this40.webex.internal.newMetrics.submitClientEvent({
6441
6542
  name: 'client.media-engine.remote-sdp-received',
6442
6543
  payload: {
6443
6544
  canProceed: false,
6444
6545
  errors: [
6445
6546
  // @ts-ignore
6446
- _this39.webex.internal.newMetrics.callDiagnosticMetrics.getErrorPayloadForClientErrorCode({
6547
+ _this40.webex.internal.newMetrics.callDiagnosticMetrics.getErrorPayloadForClientErrorCode({
6447
6548
  clientErrorCode: _internalPluginMetrics.CALL_DIAGNOSTIC_CONFIG.MISSING_ROAP_ANSWER_CLIENT_CODE
6448
6549
  })]
6449
6550
  },
6450
6551
  options: {
6451
- meetingId: _this39.id,
6552
+ meetingId: _this40.id,
6452
6553
  rawError: new Error('Timeout waiting for SDP answer')
6453
6554
  }
6454
6555
  });
@@ -6834,6 +6935,43 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6834
6935
  return _cleanUpBeforeRetryWithTurnServer.apply(this, arguments);
6835
6936
  }
6836
6937
  return cleanUpBeforeRetryWithTurnServer;
6938
+ }())
6939
+ }, {
6940
+ key: "cleanUpBeforeReconnection",
6941
+ value: function () {
6942
+ var _cleanUpBeforeReconnection = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee32() {
6943
+ return _regenerator.default.wrap(function _callee32$(_context32) {
6944
+ while (1) switch (_context32.prev = _context32.next) {
6945
+ case 0:
6946
+ _context32.prev = 0;
6947
+ _context32.next = 3;
6948
+ return this.forceSendStatsReport({
6949
+ callFrom: 'cleanUpBeforeReconnection'
6950
+ });
6951
+ case 3:
6952
+ if (!this.statsAnalyzer) {
6953
+ _context32.next = 6;
6954
+ break;
6955
+ }
6956
+ _context32.next = 6;
6957
+ return this.statsAnalyzer.stopAnalyzer();
6958
+ case 6:
6959
+ _context32.next = 11;
6960
+ break;
6961
+ case 8:
6962
+ _context32.prev = 8;
6963
+ _context32.t0 = _context32["catch"](0);
6964
+ _loggerProxy.default.logger.error('Meeting:index#cleanUpBeforeReconnection --> Error during cleanup: ', _context32.t0);
6965
+ case 11:
6966
+ case "end":
6967
+ return _context32.stop();
6968
+ }
6969
+ }, _callee32, this, [[0, 8]]);
6970
+ }));
6971
+ function cleanUpBeforeReconnection() {
6972
+ return _cleanUpBeforeReconnection.apply(this, arguments);
6973
+ }
6974
+ return cleanUpBeforeReconnection;
6837
6975
  }()
6838
6976
  /**
6839
6977
  * Creates an instance of LocusMediaRequest for this meeting - it is needed for doing any calls
@@ -6841,7 +6979,6 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6841
6979
  *
6842
6980
  * @returns {void}
6843
6981
  */
6844
- )
6845
6982
  }, {
6846
6983
  key: "setupLocusMediaRequest",
6847
6984
  value: function setupLocusMediaRequest() {
@@ -6876,10 +7013,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6876
7013
  }, {
6877
7014
  key: "addMedia",
6878
7015
  value: function addMedia() {
6879
- var _this40 = this;
7016
+ var _this41 = this;
6880
7017
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
6881
7018
  return this.addMediaInternal(function () {
6882
- return _this40.turnServerUsed ? 'JOIN_MEETING_FINAL' : 'JOIN_MEETING_RETRY';
7019
+ return _this41.turnServerUsed ? 'JOIN_MEETING_FINAL' : 'JOIN_MEETING_RETRY';
6883
7020
  }, undefined, false, options);
6884
7021
  }
6885
7022
 
@@ -6897,7 +7034,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6897
7034
  }, {
6898
7035
  key: "addMediaInternal",
6899
7036
  value: (function () {
6900
- var _addMediaInternal = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee32(icePhaseCallback, turnServerInfo, forceTurnDiscovery) {
7037
+ var _addMediaInternal = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee33(icePhaseCallback, turnServerInfo, forceTurnDiscovery) {
6901
7038
  var options,
6902
7039
  LOG_HEADER,
6903
7040
  localStreams,
@@ -6910,6 +7047,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6910
7047
  _options$shareVideoEn,
6911
7048
  shareVideoEnabled,
6912
7049
  remoteMediaManagerConfig,
7050
+ _options$bundlePolicy,
6913
7051
  bundlePolicy,
6914
7052
  _this$remoteMediaMana,
6915
7053
  _yield$this$mediaProp,
@@ -6944,35 +7082,35 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6944
7082
  _selectedCandidatePairChanges,
6945
7083
  _numTransports,
6946
7084
  _iceCandidateErrors,
6947
- _args32 = arguments;
6948
- return _regenerator.default.wrap(function _callee32$(_context32) {
6949
- while (1) switch (_context32.prev = _context32.next) {
7085
+ _args33 = arguments;
7086
+ return _regenerator.default.wrap(function _callee33$(_context33) {
7087
+ while (1) switch (_context33.prev = _context33.next) {
6950
7088
  case 0:
6951
- options = _args32.length > 3 && _args32[3] !== undefined ? _args32[3] : {};
7089
+ options = _args33.length > 3 && _args33[3] !== undefined ? _args33[3] : {};
6952
7090
  this.addMediaData.retriedWithTurnServer = false;
6953
7091
  this.addMediaData.icePhaseCallback = icePhaseCallback;
6954
7092
  this.hasMediaConnectionConnectedAtLeastOnce = false;
6955
7093
  LOG_HEADER = 'Meeting:index#addMedia -->';
6956
7094
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " called with: options=").concat((0, _stringify.default)(options), ", turnServerInfo=").concat((0, _stringify.default)(turnServerInfo), ", forceTurnDiscovery=").concat(forceTurnDiscovery));
6957
7095
  if (!(options.allowMediaInLobby !== true && this.meetingState !== _constants.FULL_STATE.ACTIVE)) {
6958
- _context32.next = 8;
7096
+ _context33.next = 8;
6959
7097
  break;
6960
7098
  }
6961
7099
  throw new _webexErrors.MeetingNotActiveError();
6962
7100
  case 8:
6963
7101
  if (!_util2.default.isUserInLeftState(this.locusInfo)) {
6964
- _context32.next = 10;
7102
+ _context33.next = 10;
6965
7103
  break;
6966
7104
  }
6967
7105
  throw new _webexErrors.UserNotJoinedError();
6968
7106
  case 10:
6969
- localStreams = options.localStreams, _options$audioEnabled = options.audioEnabled, audioEnabled = _options$audioEnabled === void 0 ? true : _options$audioEnabled, _options$videoEnabled = options.videoEnabled, videoEnabled = _options$videoEnabled === void 0 ? true : _options$videoEnabled, _options$shareAudioEn = options.shareAudioEnabled, shareAudioEnabled = _options$shareAudioEn === void 0 ? true : _options$shareAudioEn, _options$shareVideoEn = options.shareVideoEnabled, shareVideoEnabled = _options$shareVideoEn === void 0 ? true : _options$shareVideoEn, remoteMediaManagerConfig = options.remoteMediaManagerConfig, bundlePolicy = options.bundlePolicy;
7107
+ localStreams = options.localStreams, _options$audioEnabled = options.audioEnabled, audioEnabled = _options$audioEnabled === void 0 ? true : _options$audioEnabled, _options$videoEnabled = options.videoEnabled, videoEnabled = _options$videoEnabled === void 0 ? true : _options$videoEnabled, _options$shareAudioEn = options.shareAudioEnabled, shareAudioEnabled = _options$shareAudioEn === void 0 ? true : _options$shareAudioEn, _options$shareVideoEn = options.shareVideoEnabled, shareVideoEnabled = _options$shareVideoEn === void 0 ? true : _options$shareVideoEn, remoteMediaManagerConfig = options.remoteMediaManagerConfig, _options$bundlePolicy = options.bundlePolicy, bundlePolicy = _options$bundlePolicy === void 0 ? 'max-bundle' : _options$bundlePolicy;
6970
7108
  this.allowMediaInLobby = options === null || options === void 0 ? void 0 : options.allowMediaInLobby;
6971
7109
 
6972
7110
  // If the user is unjoined or guest waiting in lobby dont allow the user to addMedia
6973
7111
  // @ts-ignore - isUserUnadmitted coming from SelfUtil
6974
7112
  if (!(this.isUserUnadmitted && !this.wirelessShare && !this.allowMediaInLobby)) {
6975
- _context32.next = 14;
7113
+ _context33.next = 14;
6976
7114
  break;
6977
7115
  }
6978
7116
  throw new _webexErrors.UserInLobbyError();
@@ -7015,45 +7153,45 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7015
7153
  });
7016
7154
  this.audio = (0, _muteState.createMuteState)(_constants.AUDIO, this, audioEnabled);
7017
7155
  this.video = (0, _muteState.createMuteState)(_constants.VIDEO, this, videoEnabled);
7018
- _context32.prev = 18;
7019
- _context32.next = 21;
7156
+ _context33.prev = 18;
7157
+ _context33.next = 21;
7020
7158
  return this.setUpLocalStreamReferences(localStreams);
7021
7159
  case 21:
7022
7160
  this.setMercuryListener();
7023
7161
  this.createStatsAnalyzer();
7024
- _context32.next = 25;
7162
+ _context33.next = 25;
7025
7163
  return this.establishMediaConnection(remoteMediaManagerConfig, bundlePolicy, forceTurnDiscovery, turnServerInfo);
7026
7164
  case 25:
7027
7165
  if (!(audioEnabled || videoEnabled)) {
7028
- _context32.next = 30;
7166
+ _context33.next = 30;
7029
7167
  break;
7030
7168
  }
7031
- _context32.next = 28;
7169
+ _context33.next = 28;
7032
7170
  return Meeting.handleDeviceLogging(audioEnabled, videoEnabled);
7033
7171
  case 28:
7034
- _context32.next = 31;
7172
+ _context33.next = 31;
7035
7173
  break;
7036
7174
  case 30:
7037
7175
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " device logging not required"));
7038
7176
  case 31:
7039
7177
  if (!this.mediaProperties.hasLocalShareStream()) {
7040
- _context32.next = 34;
7178
+ _context33.next = 34;
7041
7179
  break;
7042
7180
  }
7043
- _context32.next = 34;
7181
+ _context33.next = 34;
7044
7182
  return this.enqueueScreenShareFloorRequest();
7045
7183
  case 34:
7046
- _context32.next = 36;
7184
+ _context33.next = 36;
7047
7185
  return this.mediaProperties.getCurrentConnectionInfo();
7048
7186
  case 36:
7049
- _yield$this$mediaProp = _context32.sent;
7187
+ _yield$this$mediaProp = _context33.sent;
7050
7188
  connectionType = _yield$this$mediaProp.connectionType;
7051
7189
  selectedCandidatePairChanges = _yield$this$mediaProp.selectedCandidatePairChanges;
7052
7190
  numTransports = _yield$this$mediaProp.numTransports;
7053
- _context32.next = 42;
7191
+ _context33.next = 42;
7054
7192
  return this.webex.meetings.reachability.getReachabilityMetrics();
7055
7193
  case 42:
7056
- reachabilityStats = _context32.sent;
7194
+ reachabilityStats = _context33.sent;
7057
7195
  iceCandidateErrors = Object.fromEntries(this.iceCandidateErrors);
7058
7196
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_MEDIA_SUCCESS, _objectSpread(_objectSpread(_objectSpread({
7059
7197
  correlation_id: this.correlationId,
@@ -7078,31 +7216,31 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7078
7216
 
7079
7217
  // We can log ReceiveSlot SSRCs only after the SDP exchange, so doing it here:
7080
7218
  (_this$remoteMediaMana = this.remoteMediaManager) === null || _this$remoteMediaMana === void 0 ? void 0 : _this$remoteMediaMana.logAllReceiveSlots();
7081
- _context32.next = 68;
7219
+ _context33.next = 68;
7082
7220
  break;
7083
7221
  case 50:
7084
- _context32.prev = 50;
7085
- _context32.t0 = _context32["catch"](18);
7086
- _loggerProxy.default.logger.error("".concat(LOG_HEADER, " failed to establish media connection: "), _context32.t0);
7222
+ _context33.prev = 50;
7223
+ _context33.t0 = _context33["catch"](18);
7224
+ _loggerProxy.default.logger.error("".concat(LOG_HEADER, " failed to establish media connection: "), _context33.t0);
7087
7225
 
7088
7226
  // @ts-ignore
7089
- _context32.next = 55;
7227
+ _context33.next = 55;
7090
7228
  return this.webex.meetings.reachability.getReachabilityMetrics();
7091
7229
  case 55:
7092
- reachabilityMetrics = _context32.sent;
7093
- _context32.next = 58;
7230
+ reachabilityMetrics = _context33.sent;
7231
+ _context33.next = 58;
7094
7232
  return this.mediaProperties.getCurrentConnectionInfo();
7095
7233
  case 58:
7096
- _yield$this$mediaProp2 = _context32.sent;
7234
+ _yield$this$mediaProp2 = _context33.sent;
7097
7235
  _selectedCandidatePairChanges = _yield$this$mediaProp2.selectedCandidatePairChanges;
7098
7236
  _numTransports = _yield$this$mediaProp2.numTransports;
7099
7237
  _iceCandidateErrors = Object.fromEntries(this.iceCandidateErrors);
7100
7238
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_MEDIA_FAILURE, _objectSpread(_objectSpread(_objectSpread({
7101
7239
  correlation_id: this.correlationId,
7102
7240
  locus_id: this.locusUrl.split('/').pop(),
7103
- reason: _context32.t0.message,
7104
- stack: _context32.t0.stack,
7105
- code: _context32.t0.code,
7241
+ reason: _context33.t0.message,
7242
+ stack: _context33.t0.stack,
7243
+ code: _context33.t0.code,
7106
7244
  selectedCandidatePairChanges: _selectedCandidatePairChanges,
7107
7245
  numTransports: _numTransports,
7108
7246
  turnDiscoverySkippedReason: this.turnDiscoverySkippedReason,
@@ -7116,7 +7254,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7116
7254
  }, reachabilityMetrics), _iceCandidateErrors), {}, {
7117
7255
  iceCandidatesCount: this.iceCandidatesCount
7118
7256
  }));
7119
- _context32.next = 65;
7257
+ _context33.next = 65;
7120
7258
  return this.cleanUpOnAddMediaFailure();
7121
7259
  case 65:
7122
7260
  // Upload logs on error while adding media
@@ -7124,21 +7262,21 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7124
7262
  file: 'meeting/index',
7125
7263
  function: 'addMedia'
7126
7264
  }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, this);
7127
- if (_context32.t0 instanceof _internalMediaCore.Errors.SdpError) {
7265
+ if (_context33.t0 instanceof _internalMediaCore.Errors.SdpError) {
7128
7266
  this.leave({
7129
7267
  reason: _constants.MEETING_REMOVED_REASON.MEETING_CONNECTION_FAILED
7130
7268
  });
7131
7269
  }
7132
- throw _context32.t0;
7270
+ throw _context33.t0;
7133
7271
  case 68:
7134
- _context32.prev = 68;
7272
+ _context33.prev = 68;
7135
7273
  this.addMediaData.icePhaseCallback = DEFAULT_ICE_PHASE_CALLBACK;
7136
- return _context32.finish(68);
7274
+ return _context33.finish(68);
7137
7275
  case 71:
7138
7276
  case "end":
7139
- return _context32.stop();
7277
+ return _context33.stop();
7140
7278
  }
7141
- }, _callee32, this, [[18, 50, 68, 71]]);
7279
+ }, _callee33, this, [[18, 50, 68, 71]]);
7142
7280
  }));
7143
7281
  function addMediaInternal(_x32, _x33, _x34) {
7144
7282
  return _addMediaInternal.apply(this, arguments);
@@ -7170,7 +7308,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7170
7308
  * @memberof Meeting
7171
7309
  */
7172
7310
  function enqueueMediaUpdate(mediaUpdateType) {
7173
- var _this41 = this;
7311
+ var _this42 = this;
7174
7312
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
7175
7313
  var canUpdateMediaNow = this.canUpdateMedia();
7176
7314
  return new _promise.default(function (resolve, reject) {
@@ -7181,9 +7319,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7181
7319
  options: options
7182
7320
  };
7183
7321
  _loggerProxy.default.logger.log("Meeting:index#enqueueMediaUpdate --> enqueuing media update type=".concat(mediaUpdateType));
7184
- _this41.queuedMediaUpdates.push(queueItem);
7322
+ _this42.queuedMediaUpdates.push(queueItem);
7185
7323
  if (canUpdateMediaNow) {
7186
- _this41.processNextQueuedMediaUpdate();
7324
+ _this42.processNextQueuedMediaUpdate();
7187
7325
  }
7188
7326
  });
7189
7327
  }
@@ -7206,35 +7344,35 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7206
7344
  * @memberof Meeting
7207
7345
  */
7208
7346
  function () {
7209
- var _updateMedia = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee33(options) {
7347
+ var _updateMedia = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee34(options) {
7210
7348
  var audioEnabled, videoEnabled, shareAudioEnabled, shareVideoEnabled, _this$audio3, _this$video3;
7211
- return _regenerator.default.wrap(function _callee33$(_context33) {
7212
- while (1) switch (_context33.prev = _context33.next) {
7349
+ return _regenerator.default.wrap(function _callee34$(_context34) {
7350
+ while (1) switch (_context34.prev = _context34.next) {
7213
7351
  case 0:
7214
7352
  this.checkMediaConnection();
7215
7353
  audioEnabled = options.audioEnabled, videoEnabled = options.videoEnabled, shareAudioEnabled = options.shareAudioEnabled, shareVideoEnabled = options.shareVideoEnabled;
7216
7354
  _loggerProxy.default.logger.log("Meeting:index#updateMedia --> called with options=".concat((0, _stringify.default)(options)));
7217
7355
  if (this.canUpdateMedia()) {
7218
- _context33.next = 5;
7356
+ _context34.next = 5;
7219
7357
  break;
7220
7358
  }
7221
- return _context33.abrupt("return", this.enqueueMediaUpdate(MEDIA_UPDATE_TYPE.UPDATE_MEDIA, options));
7359
+ return _context34.abrupt("return", this.enqueueMediaUpdate(MEDIA_UPDATE_TYPE.UPDATE_MEDIA, options));
7222
7360
  case 5:
7223
7361
  if (!this.isMultistream) {
7224
- _context33.next = 10;
7362
+ _context34.next = 10;
7225
7363
  break;
7226
7364
  }
7227
7365
  if (!(shareAudioEnabled !== undefined || shareVideoEnabled !== undefined)) {
7228
- _context33.next = 8;
7366
+ _context34.next = 8;
7229
7367
  break;
7230
7368
  }
7231
7369
  throw new Error('toggling shareAudioEnabled or shareVideoEnabled in a multistream meeting is not supported, to control receiving screen share call meeting.remoteMediaManager.setLayout() with appropriate layout');
7232
7370
  case 8:
7233
- _context33.next = 12;
7371
+ _context34.next = 12;
7234
7372
  break;
7235
7373
  case 10:
7236
7374
  if (!(shareAudioEnabled !== undefined)) {
7237
- _context33.next = 12;
7375
+ _context34.next = 12;
7238
7376
  break;
7239
7377
  }
7240
7378
  throw new Error('toggling shareAudioEnabled in a transcoded meeting is not supported as of now');
@@ -7259,18 +7397,18 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7259
7397
  this.mediaProperties.mediaDirection.receiveShare = !!(shareAudioEnabled || shareVideoEnabled);
7260
7398
  }
7261
7399
  if (this.isMultistream) {
7262
- _context33.next = 18;
7400
+ _context34.next = 18;
7263
7401
  break;
7264
7402
  }
7265
- _context33.next = 18;
7403
+ _context34.next = 18;
7266
7404
  return this.updateTranscodedMediaConnection();
7267
7405
  case 18:
7268
- return _context33.abrupt("return", undefined);
7406
+ return _context34.abrupt("return", undefined);
7269
7407
  case 19:
7270
7408
  case "end":
7271
- return _context33.stop();
7409
+ return _context34.stop();
7272
7410
  }
7273
- }, _callee33, this);
7411
+ }, _callee34, this);
7274
7412
  }));
7275
7413
  function updateMedia(_x35) {
7276
7414
  return _updateMedia.apply(this, arguments);
@@ -7288,7 +7426,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7288
7426
  }, {
7289
7427
  key: "acknowledge",
7290
7428
  value: function acknowledge(type) {
7291
- var _this42 = this;
7429
+ var _this43 = this;
7292
7430
  if (!type) {
7293
7431
  return _promise.default.reject(new _parameter.default('Type must be set to acknowledge the meeting.'));
7294
7432
  }
@@ -7300,12 +7438,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7300
7438
  }).then(function (response) {
7301
7439
  return _promise.default.resolve(response);
7302
7440
  }).then(function (response) {
7303
- _this42.meetingFiniteStateMachine.ring(type);
7441
+ _this43.meetingFiniteStateMachine.ring(type);
7304
7442
  // @ts-ignore
7305
- _this42.webex.internal.newMetrics.submitClientEvent({
7443
+ _this43.webex.internal.newMetrics.submitClientEvent({
7306
7444
  name: 'client.alert.displayed',
7307
7445
  options: {
7308
- meetingId: _this42.id
7446
+ meetingId: _this43.id
7309
7447
  }
7310
7448
  });
7311
7449
  return _promise.default.resolve({
@@ -7330,12 +7468,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7330
7468
  }, {
7331
7469
  key: "decline",
7332
7470
  value: function decline(reason) {
7333
- var _this43 = this;
7471
+ var _this44 = this;
7334
7472
  return _util2.default.declineMeeting(this, reason).then(function (decline) {
7335
- _this43.meetingFiniteStateMachine.decline();
7473
+ _this44.meetingFiniteStateMachine.decline();
7336
7474
  return _promise.default.resolve(decline);
7337
7475
  }).catch(function (error) {
7338
- _this43.meetingFiniteStateMachine.fail(error);
7476
+ _this44.meetingFiniteStateMachine.fail(error);
7339
7477
  return _promise.default.reject(error);
7340
7478
  });
7341
7479
  }
@@ -7386,7 +7524,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7386
7524
  }, {
7387
7525
  key: "leave",
7388
7526
  value: function leave() {
7389
- var _this44 = this;
7527
+ var _this45 = this;
7390
7528
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
7391
7529
  var leaveReason = options.reason || _constants.MEETING_REMOVED_REASON.CLIENT_LEAVE_REQUEST;
7392
7530
 
@@ -7398,7 +7536,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7398
7536
  var payload = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
7399
7537
  return (
7400
7538
  // @ts-ignore
7401
- _this44.webex.internal.newMetrics.submitClientEvent({
7539
+ _this45.webex.internal.newMetrics.submitClientEvent({
7402
7540
  name: 'client.call.leave',
7403
7541
  payload: _objectSpread({
7404
7542
  trigger: 'user-interaction',
@@ -7406,7 +7544,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7406
7544
  leaveReason: options.clientEventLeaveReason
7407
7545
  }, payload),
7408
7546
  options: {
7409
- meetingId: _this44.id
7547
+ meetingId: _this45.id
7410
7548
  }
7411
7549
  })
7412
7550
  );
@@ -7415,24 +7553,24 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7415
7553
  return _util2.default.leaveMeeting(this, options).then(function (leave) {
7416
7554
  // CA team recommends submitting this *after* locus /leave
7417
7555
  submitLeaveMetric();
7418
- _this44.meetingFiniteStateMachine.leave();
7419
- _this44.clearMeetingData();
7556
+ _this45.meetingFiniteStateMachine.leave();
7557
+ _this45.clearMeetingData();
7420
7558
 
7421
7559
  // upload logs on leave irrespective of meeting delete
7422
- _triggerProxy.default.trigger(_this44, {
7560
+ _triggerProxy.default.trigger(_this45, {
7423
7561
  file: 'meeting/index',
7424
7562
  function: 'leave'
7425
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this44);
7563
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this45);
7426
7564
 
7427
7565
  // TODO: more testing before we remove this code, we are not sure the scenarios for destroy here
7428
- if (_this44.wirelessShare || _this44.guest) {
7566
+ if (_this45.wirelessShare || _this45.guest) {
7429
7567
  // If screen sharing clean the meeting object
7430
- _triggerProxy.default.trigger(_this44, {
7568
+ _triggerProxy.default.trigger(_this45, {
7431
7569
  file: 'meeting/index',
7432
7570
  function: 'leave'
7433
7571
  }, _constants.EVENTS.DESTROY_MEETING, {
7434
7572
  reason: options.reason,
7435
- meetingId: _this44.id
7573
+ meetingId: _this45.id
7436
7574
  });
7437
7575
  }
7438
7576
  _loggerProxy.default.logger.log('Meeting:index#leave --> LEAVE REASON ', leaveReason);
@@ -7449,16 +7587,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7449
7587
  shownToUser: false
7450
7588
  }]
7451
7589
  });
7452
- _this44.meetingFiniteStateMachine.fail(error);
7590
+ _this45.meetingFiniteStateMachine.fail(error);
7453
7591
  _loggerProxy.default.logger.error('Meeting:index#leave --> Failed to leave ', error);
7454
7592
  // upload logs on leave irrespective of meeting delete
7455
- _triggerProxy.default.trigger(_this44, {
7593
+ _triggerProxy.default.trigger(_this45, {
7456
7594
  file: 'meeting/index',
7457
7595
  function: 'leave'
7458
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this44);
7596
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this45);
7459
7597
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_LEAVE_FAILURE, {
7460
- correlation_id: _this44.correlationId,
7461
- locus_id: _this44.locusUrl.split('/').pop(),
7598
+ correlation_id: _this45.correlationId,
7599
+ locus_id: _this45.locusUrl.split('/').pop(),
7462
7600
  reason: error.message,
7463
7601
  stack: error.stack,
7464
7602
  code: error.code
@@ -7478,7 +7616,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7478
7616
  }, {
7479
7617
  key: "startWhiteboardShare",
7480
7618
  value: function startWhiteboardShare(channelUrl, resourceToken) {
7481
- var _this45 = this;
7619
+ var _this46 = this;
7482
7620
  var whiteboard = this.locusInfo.mediaShares.find(function (element) {
7483
7621
  return element.name === 'whiteboard';
7484
7622
  });
@@ -7507,13 +7645,13 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7507
7645
  body.resourceToken = resourceToken;
7508
7646
  }
7509
7647
  return this.meetingRequest.changeMeetingFloor(body).then(function () {
7510
- _this45.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
7648
+ _this46.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
7511
7649
  return _promise.default.resolve();
7512
7650
  }).catch(function (error) {
7513
7651
  _loggerProxy.default.logger.error('Meeting:index#startWhiteboardShare --> Error ', error);
7514
7652
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_START_WHITEBOARD_SHARE_FAILURE, {
7515
- correlation_id: _this45.correlationId,
7516
- locus_id: _this45.locusUrl.split('/').pop(),
7653
+ correlation_id: _this46.correlationId,
7654
+ locus_id: _this46.locusUrl.split('/').pop(),
7517
7655
  reason: error.message,
7518
7656
  stack: error.stack,
7519
7657
  board: {
@@ -7536,7 +7674,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7536
7674
  }, {
7537
7675
  key: "stopWhiteboardShare",
7538
7676
  value: function stopWhiteboardShare(channelUrl) {
7539
- var _this46 = this;
7677
+ var _this47 = this;
7540
7678
  var whiteboard = this.locusInfo.mediaShares.find(function (element) {
7541
7679
  return element.name === 'whiteboard';
7542
7680
  });
@@ -7559,8 +7697,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7559
7697
  }).catch(function (error) {
7560
7698
  _loggerProxy.default.logger.error('Meeting:index#stopWhiteboardShare --> Error ', error);
7561
7699
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_STOP_WHITEBOARD_SHARE_FAILURE, {
7562
- correlation_id: _this46.correlationId,
7563
- locus_id: _this46.locusUrl.split('/').pop(),
7700
+ correlation_id: _this47.correlationId,
7701
+ locus_id: _this47.locusUrl.split('/').pop(),
7564
7702
  reason: error.message,
7565
7703
  stack: error.stack,
7566
7704
  board: {
@@ -7582,7 +7720,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7582
7720
  }, {
7583
7721
  key: "requestScreenShareFloor",
7584
7722
  value: function requestScreenShareFloor() {
7585
- var _this47 = this;
7723
+ var _this48 = this;
7586
7724
  if (!this.mediaProperties.hasLocalShareStream() || !this.mediaProperties.mediaDirection.sendShare) {
7587
7725
  _loggerProxy.default.logger.log("Meeting:index#requestScreenShareFloor --> NOT requesting floor, because we don't have the share stream anymore (shareStream=".concat(this.mediaProperties.shareVideoStream ? 'yes' : 'no', ", sendShare=").concat(this.mediaProperties.mediaDirection.sendShare, ")"));
7588
7726
  this.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
@@ -7613,34 +7751,34 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7613
7751
  resourceUrl: this.resourceUrl,
7614
7752
  shareInstanceId: this.localShareInstanceId
7615
7753
  }).then(function () {
7616
- _this47.screenShareFloorState = ScreenShareFloorStatus.GRANTED;
7754
+ _this48.screenShareFloorState = ScreenShareFloorStatus.GRANTED;
7617
7755
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_SHARE_SUCCESS, {
7618
- correlation_id: _this47.correlationId,
7619
- locus_id: _this47.locusUrl.split('/').pop()
7756
+ correlation_id: _this48.correlationId,
7757
+ locus_id: _this48.locusUrl.split('/').pop()
7620
7758
  });
7621
7759
  return _promise.default.resolve();
7622
7760
  }).catch(function (error) {
7623
7761
  _loggerProxy.default.logger.error('Meeting:index#share --> Error ', error);
7624
7762
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_SHARE_FAILURE, {
7625
- correlation_id: _this47.correlationId,
7626
- locus_id: _this47.locusUrl.split('/').pop(),
7763
+ correlation_id: _this48.correlationId,
7764
+ locus_id: _this48.locusUrl.split('/').pop(),
7627
7765
  reason: error.message,
7628
7766
  stack: error.stack
7629
7767
  });
7630
7768
 
7631
7769
  // @ts-ignore
7632
- _this47.webex.internal.newMetrics.submitClientEvent({
7770
+ _this48.webex.internal.newMetrics.submitClientEvent({
7633
7771
  name: 'client.share.floor-granted.local',
7634
7772
  payload: {
7635
7773
  mediaType: 'share',
7636
7774
  errors: _util2.default.getChangeMeetingFloorErrorPayload(error.message),
7637
- shareInstanceId: _this47.localShareInstanceId
7775
+ shareInstanceId: _this48.localShareInstanceId
7638
7776
  },
7639
7777
  options: {
7640
- meetingId: _this47.id
7778
+ meetingId: _this48.id
7641
7779
  }
7642
7780
  });
7643
- _this47.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
7781
+ _this48.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
7644
7782
  return _promise.default.reject(error);
7645
7783
  });
7646
7784
  }
@@ -7663,10 +7801,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7663
7801
  }, {
7664
7802
  key: "requestScreenShareFloorIfPending",
7665
7803
  value: function requestScreenShareFloorIfPending() {
7666
- var _this48 = this;
7804
+ var _this49 = this;
7667
7805
  if (this.floorGrantPending && this.state === _constants.MEETING_STATE.STATES.JOINED) {
7668
7806
  this.requestScreenShareFloor().then(function () {
7669
- _this48.floorGrantPending = false;
7807
+ _this49.floorGrantPending = false;
7670
7808
  });
7671
7809
  }
7672
7810
  }
@@ -7680,7 +7818,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7680
7818
  }, {
7681
7819
  key: "releaseScreenShareFloor",
7682
7820
  value: function releaseScreenShareFloor() {
7683
- var _this49 = this;
7821
+ var _this50 = this;
7684
7822
  var content = this.locusInfo.mediaShares.find(function (element) {
7685
7823
  return element.name === _constants.CONTENT;
7686
7824
  });
@@ -7715,8 +7853,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7715
7853
  }).catch(function (error) {
7716
7854
  _loggerProxy.default.logger.error('Meeting:index#releaseScreenShareFloor --> Error ', error);
7717
7855
  _metrics.default.sendBehavioralMetric(_constants2.default.STOP_FLOOR_REQUEST_FAILURE, {
7718
- correlation_id: _this49.correlationId,
7719
- locus_id: _this49.locusUrl.split('/').pop(),
7856
+ correlation_id: _this50.correlationId,
7857
+ locus_id: _this50.locusUrl.split('/').pop(),
7720
7858
  reason: error.message,
7721
7859
  stack: error.stack
7722
7860
  });
@@ -7772,13 +7910,14 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7772
7910
  * @param {boolean} mutedEnabled
7773
7911
  * @param {boolean} disallowUnmuteEnabled
7774
7912
  * @param {boolean} muteOnEntryEnabled
7913
+ * @param {array} roles
7775
7914
  * @public
7776
7915
  * @memberof Meeting
7777
7916
  */
7778
7917
  }, {
7779
7918
  key: "setMuteAll",
7780
- value: function setMuteAll(mutedEnabled, disallowUnmuteEnabled, muteOnEntryEnabled) {
7781
- return this.controlsOptionsManager.setMuteAll(mutedEnabled, disallowUnmuteEnabled, muteOnEntryEnabled);
7919
+ value: function setMuteAll(mutedEnabled, disallowUnmuteEnabled, muteOnEntryEnabled, roles) {
7920
+ return this.controlsOptionsManager.setMuteAll(mutedEnabled, disallowUnmuteEnabled, muteOnEntryEnabled, roles);
7782
7921
  }
7783
7922
 
7784
7923
  /**
@@ -7895,7 +8034,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7895
8034
  }, {
7896
8035
  key: "changeVideoLayout",
7897
8036
  value: function changeVideoLayout(layoutType) {
7898
- var _this50 = this;
8037
+ var _this51 = this;
7899
8038
  var renderInfo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
7900
8039
  var main = renderInfo.main,
7901
8040
  content = renderInfo.content;
@@ -7949,7 +8088,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7949
8088
  }
7950
8089
  this.lastVideoLayoutInfo = (0, _lodash.cloneDeep)(layoutInfo);
7951
8090
  this.locusInfo.once(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_LAYOUT_UPDATED, function (envelope) {
7952
- _triggerProxy.default.trigger(_this50, {
8091
+ _triggerProxy.default.trigger(_this51, {
7953
8092
  file: 'meeting/index',
7954
8093
  function: 'changeVideoLayout'
7955
8094
  }, _constants.EVENT_TRIGGERS.MEETING_CONTROLS_LAYOUT_UPDATE, {
@@ -8065,7 +8204,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8065
8204
  }, {
8066
8205
  key: "endMeetingForAll",
8067
8206
  value: function endMeetingForAll() {
8068
- var _this51 = this;
8207
+ var _this52 = this;
8069
8208
  // @ts-ignore
8070
8209
  this.webex.internal.newMetrics.submitClientEvent({
8071
8210
  name: 'client.call.leave',
@@ -8083,25 +8222,25 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8083
8222
  locus_id: this.locusId
8084
8223
  });
8085
8224
  return _util2.default.endMeetingForAll(this).then(function (end) {
8086
- _this51.meetingFiniteStateMachine.end();
8087
- _this51.clearMeetingData();
8225
+ _this52.meetingFiniteStateMachine.end();
8226
+ _this52.clearMeetingData();
8088
8227
  // upload logs on leave irrespective of meeting delete
8089
- _triggerProxy.default.trigger(_this51, {
8228
+ _triggerProxy.default.trigger(_this52, {
8090
8229
  file: 'meeting/index',
8091
8230
  function: 'endMeetingForAll'
8092
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this51);
8231
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this52);
8093
8232
  return end;
8094
8233
  }).catch(function (error) {
8095
- _this51.meetingFiniteStateMachine.fail(error);
8234
+ _this52.meetingFiniteStateMachine.fail(error);
8096
8235
  _loggerProxy.default.logger.error('Meeting:index#endMeetingForAll --> Failed to end meeting ', error);
8097
8236
  // upload logs on leave irrespective of meeting delete
8098
- _triggerProxy.default.trigger(_this51, {
8237
+ _triggerProxy.default.trigger(_this52, {
8099
8238
  file: 'meeting/index',
8100
8239
  function: 'endMeetingForAll'
8101
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this51);
8240
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this52);
8102
8241
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_END_ALL_FAILURE, {
8103
- correlation_id: _this51.correlationId,
8104
- locus_id: _this51.locusUrl.split('/').pop(),
8242
+ correlation_id: _this52.correlationId,
8243
+ locus_id: _this52.locusUrl.split('/').pop(),
8105
8244
  reason: error.message,
8106
8245
  stack: error.stack,
8107
8246
  code: error.code
@@ -8190,37 +8329,37 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8190
8329
  }, {
8191
8330
  key: "enableMusicMode",
8192
8331
  value: (function () {
8193
- var _enableMusicMode = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee34(shouldEnableMusicMode) {
8194
- return _regenerator.default.wrap(function _callee34$(_context34) {
8195
- while (1) switch (_context34.prev = _context34.next) {
8332
+ var _enableMusicMode = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee35(shouldEnableMusicMode) {
8333
+ return _regenerator.default.wrap(function _callee35$(_context35) {
8334
+ while (1) switch (_context35.prev = _context35.next) {
8196
8335
  case 0:
8197
8336
  this.checkMediaConnection();
8198
8337
  if (this.isMultistream) {
8199
- _context34.next = 3;
8338
+ _context35.next = 3;
8200
8339
  break;
8201
8340
  }
8202
8341
  throw new Error('enableMusicMode() only supported with multistream');
8203
8342
  case 3:
8204
8343
  if (!shouldEnableMusicMode) {
8205
- _context34.next = 8;
8344
+ _context35.next = 8;
8206
8345
  break;
8207
8346
  }
8208
- _context34.next = 6;
8347
+ _context35.next = 6;
8209
8348
  return this.sendSlotManager.setCodecParameters(_internalMediaCore.MediaType.AudioMain, {
8210
8349
  maxaveragebitrate: '64000',
8211
8350
  maxplaybackrate: '48000'
8212
8351
  });
8213
8352
  case 6:
8214
- _context34.next = 10;
8353
+ _context35.next = 10;
8215
8354
  break;
8216
8355
  case 8:
8217
- _context34.next = 10;
8356
+ _context35.next = 10;
8218
8357
  return this.sendSlotManager.deleteCodecParameters(_internalMediaCore.MediaType.AudioMain, ['maxaveragebitrate', 'maxplaybackrate']);
8219
8358
  case 10:
8220
8359
  case "end":
8221
- return _context34.stop();
8360
+ return _context35.stop();
8222
8361
  }
8223
- }, _callee34, this);
8362
+ }, _callee35, this);
8224
8363
  }));
8225
8364
  function enableMusicMode(_x36) {
8226
8365
  return _enableMusicMode.apply(this, arguments);
@@ -8243,7 +8382,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8243
8382
  _this$mediaProperties41,
8244
8383
  _this$mediaProperties42,
8245
8384
  _this$mediaProperties43,
8246
- _this52 = this;
8385
+ _this53 = this;
8247
8386
  var LOG_HEADER = 'Meeting:index#updateTranscodedMediaConnection -->';
8248
8387
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " starting"));
8249
8388
  if (!this.canUpdateMedia()) {
@@ -8268,8 +8407,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8268
8407
  }).catch(function (error) {
8269
8408
  _loggerProxy.default.logger.error("".concat(LOG_HEADER, " Error: "), error);
8270
8409
  _metrics.default.sendBehavioralMetric(_constants2.default.UPDATE_MEDIA_FAILURE, {
8271
- correlation_id: _this52.correlationId,
8272
- locus_id: _this52.locusUrl.split('/').pop(),
8410
+ correlation_id: _this53.correlationId,
8411
+ locus_id: _this53.locusUrl.split('/').pop(),
8273
8412
  reason: error.message,
8274
8413
  stack: error.stack
8275
8414
  });
@@ -8313,25 +8452,25 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8313
8452
  }, {
8314
8453
  key: "publishStream",
8315
8454
  value: (function () {
8316
- var _publishStream = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee35(mediaType, stream) {
8317
- return _regenerator.default.wrap(function _callee35$(_context35) {
8318
- while (1) switch (_context35.prev = _context35.next) {
8455
+ var _publishStream = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee36(mediaType, stream) {
8456
+ return _regenerator.default.wrap(function _callee36$(_context36) {
8457
+ while (1) switch (_context36.prev = _context36.next) {
8319
8458
  case 0:
8320
8459
  if (stream) {
8321
- _context35.next = 2;
8460
+ _context36.next = 2;
8322
8461
  break;
8323
8462
  }
8324
- return _context35.abrupt("return");
8463
+ return _context36.abrupt("return");
8325
8464
  case 2:
8326
8465
  if (!this.mediaProperties.webrtcMediaConnection) {
8327
- _context35.next = 7;
8466
+ _context36.next = 7;
8328
8467
  break;
8329
8468
  }
8330
8469
  if (!(this.isMultistream && this.mediaProperties.webrtcMediaConnection)) {
8331
- _context35.next = 6;
8470
+ _context36.next = 6;
8332
8471
  break;
8333
8472
  }
8334
- _context35.next = 6;
8473
+ _context36.next = 6;
8335
8474
  return this.sendSlotManager.publishStream(mediaType, stream);
8336
8475
  case 6:
8337
8476
  this.emitPublishStateChangeEvent({
@@ -8342,9 +8481,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8342
8481
  });
8343
8482
  case 7:
8344
8483
  case "end":
8345
- return _context35.stop();
8484
+ return _context36.stop();
8346
8485
  }
8347
- }, _callee35, this);
8486
+ }, _callee36, this);
8348
8487
  }));
8349
8488
  function publishStream(_x37, _x38) {
8350
8489
  return _publishStream.apply(this, arguments);
@@ -8362,21 +8501,21 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8362
8501
  }, {
8363
8502
  key: "unpublishStream",
8364
8503
  value: (function () {
8365
- var _unpublishStream = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee36(mediaType, stream) {
8366
- return _regenerator.default.wrap(function _callee36$(_context36) {
8367
- while (1) switch (_context36.prev = _context36.next) {
8504
+ var _unpublishStream = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee37(mediaType, stream) {
8505
+ return _regenerator.default.wrap(function _callee37$(_context37) {
8506
+ while (1) switch (_context37.prev = _context37.next) {
8368
8507
  case 0:
8369
8508
  if (stream) {
8370
- _context36.next = 2;
8509
+ _context37.next = 2;
8371
8510
  break;
8372
8511
  }
8373
- return _context36.abrupt("return");
8512
+ return _context37.abrupt("return");
8374
8513
  case 2:
8375
8514
  if (!(this.isMultistream && this.mediaProperties.webrtcMediaConnection)) {
8376
- _context36.next = 5;
8515
+ _context37.next = 5;
8377
8516
  break;
8378
8517
  }
8379
- _context36.next = 5;
8518
+ _context37.next = 5;
8380
8519
  return this.sendSlotManager.unpublishStream(mediaType);
8381
8520
  case 5:
8382
8521
  this.emitPublishStateChangeEvent({
@@ -8387,9 +8526,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8387
8526
  });
8388
8527
  case 6:
8389
8528
  case "end":
8390
- return _context36.stop();
8529
+ return _context37.stop();
8391
8530
  }
8392
- }, _callee36, this);
8531
+ }, _callee37, this);
8393
8532
  }));
8394
8533
  function unpublishStream(_x39, _x40) {
8395
8534
  return _unpublishStream.apply(this, arguments);
@@ -8406,68 +8545,92 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8406
8545
  }, {
8407
8546
  key: "publishStreams",
8408
8547
  value: (function () {
8409
- var _publishStreams = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee37(streams) {
8410
- var _streams$screenShare, _streams$screenShare2, _streams$microphone, _streams$camera, _streams$screenShare3, _streams$screenShare4, _streams$screenShare5, _streams$screenShare6, _streams$screenShare7, _streams$screenShare8;
8411
- var floorRequestNeeded, _streams$screenShare9;
8412
- return _regenerator.default.wrap(function _callee37$(_context37) {
8413
- while (1) switch (_context37.prev = _context37.next) {
8548
+ var _publishStreams = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee38(streams) {
8549
+ var _streams$screenShare, _streams$screenShare2, _streams$screenShare3, _streams$screenShare4, _streams$screenShare5, _streams$screenShare6;
8550
+ var streamChecks, _i, _streamChecks, _streamChecks$_i, stream, name, floorRequestNeeded, _streams$screenShare7;
8551
+ return _regenerator.default.wrap(function _callee38$(_context38) {
8552
+ while (1) switch (_context38.prev = _context38.next) {
8414
8553
  case 0:
8415
8554
  _loggerProxy.default.logger.info("Meeting:index#publishStreams --> called with: ".concat((0, _stringify.default)(streams)));
8416
8555
  this.checkMediaConnection();
8417
8556
  if (!(!streams.microphone && !streams.camera && !((_streams$screenShare = streams.screenShare) !== null && _streams$screenShare !== void 0 && _streams$screenShare.audio) && !((_streams$screenShare2 = streams.screenShare) !== null && _streams$screenShare2 !== void 0 && _streams$screenShare2.video))) {
8418
- _context37.next = 4;
8557
+ _context38.next = 4;
8419
8558
  break;
8420
8559
  }
8421
- return _context37.abrupt("return");
8560
+ return _context38.abrupt("return");
8422
8561
  case 4:
8423
- if (!((streams === null || streams === void 0 ? void 0 : (_streams$microphone = streams.microphone) === null || _streams$microphone === void 0 ? void 0 : _streams$microphone.readyState) === 'ended' || (streams === null || streams === void 0 ? void 0 : (_streams$camera = streams.camera) === null || _streams$camera === void 0 ? void 0 : _streams$camera.readyState) === 'ended' || (streams === null || streams === void 0 ? void 0 : (_streams$screenShare3 = streams.screenShare) === null || _streams$screenShare3 === void 0 ? void 0 : (_streams$screenShare4 = _streams$screenShare3.audio) === null || _streams$screenShare4 === void 0 ? void 0 : _streams$screenShare4.readyState) === 'ended' || (streams === null || streams === void 0 ? void 0 : (_streams$screenShare5 = streams.screenShare) === null || _streams$screenShare5 === void 0 ? void 0 : (_streams$screenShare6 = _streams$screenShare5.video) === null || _streams$screenShare6 === void 0 ? void 0 : _streams$screenShare6.readyState) === 'ended')) {
8424
- _context37.next = 6;
8562
+ streamChecks = [{
8563
+ stream: streams === null || streams === void 0 ? void 0 : streams.microphone,
8564
+ name: 'microphone'
8565
+ }, {
8566
+ stream: streams === null || streams === void 0 ? void 0 : streams.camera,
8567
+ name: 'camera'
8568
+ }, {
8569
+ stream: streams === null || streams === void 0 ? void 0 : (_streams$screenShare3 = streams.screenShare) === null || _streams$screenShare3 === void 0 ? void 0 : _streams$screenShare3.audio,
8570
+ name: 'screenShare audio'
8571
+ }, {
8572
+ stream: streams === null || streams === void 0 ? void 0 : (_streams$screenShare4 = streams.screenShare) === null || _streams$screenShare4 === void 0 ? void 0 : _streams$screenShare4.video,
8573
+ name: 'screenShare video'
8574
+ }];
8575
+ _i = 0, _streamChecks = streamChecks;
8576
+ case 6:
8577
+ if (!(_i < _streamChecks.length)) {
8578
+ _context38.next = 13;
8425
8579
  break;
8426
8580
  }
8427
- throw new Error("Attempted to publish stream with ended readyState, correlationId=".concat(this.correlationId));
8428
- case 6:
8581
+ _streamChecks$_i = _streamChecks[_i], stream = _streamChecks$_i.stream, name = _streamChecks$_i.name;
8582
+ if (!((stream === null || stream === void 0 ? void 0 : stream.readyState) === 'ended')) {
8583
+ _context38.next = 10;
8584
+ break;
8585
+ }
8586
+ throw new Error("Attempted to publish ".concat(name, " stream with ended readyState, correlationId=").concat(this.correlationId));
8587
+ case 10:
8588
+ _i++;
8589
+ _context38.next = 6;
8590
+ break;
8591
+ case 13:
8429
8592
  floorRequestNeeded = false; // Screenshare Audio is supported only in multi stream. So we check for screenshare audio presence only if it's a multi stream meeting
8430
- if (!(this.isMultistream && (_streams$screenShare7 = streams.screenShare) !== null && _streams$screenShare7 !== void 0 && _streams$screenShare7.audio)) {
8431
- _context37.next = 11;
8593
+ if (!(this.isMultistream && (_streams$screenShare5 = streams.screenShare) !== null && _streams$screenShare5 !== void 0 && _streams$screenShare5.audio)) {
8594
+ _context38.next = 18;
8432
8595
  break;
8433
8596
  }
8434
- _context37.next = 10;
8597
+ _context38.next = 17;
8435
8598
  return this.setLocalShareAudioStream(streams.screenShare.audio);
8436
- case 10:
8599
+ case 17:
8437
8600
  floorRequestNeeded = this.screenShareFloorState === ScreenShareFloorStatus.RELEASED;
8438
- case 11:
8439
- if (!((_streams$screenShare8 = streams.screenShare) !== null && _streams$screenShare8 !== void 0 && _streams$screenShare8.video)) {
8440
- _context37.next = 15;
8601
+ case 18:
8602
+ if (!((_streams$screenShare6 = streams.screenShare) !== null && _streams$screenShare6 !== void 0 && _streams$screenShare6.video)) {
8603
+ _context38.next = 22;
8441
8604
  break;
8442
8605
  }
8443
- _context37.next = 14;
8444
- return this.setLocalShareVideoStream((_streams$screenShare9 = streams.screenShare) === null || _streams$screenShare9 === void 0 ? void 0 : _streams$screenShare9.video);
8445
- case 14:
8606
+ _context38.next = 21;
8607
+ return this.setLocalShareVideoStream((_streams$screenShare7 = streams.screenShare) === null || _streams$screenShare7 === void 0 ? void 0 : _streams$screenShare7.video);
8608
+ case 21:
8446
8609
  floorRequestNeeded = this.screenShareFloorState === ScreenShareFloorStatus.RELEASED;
8447
- case 15:
8610
+ case 22:
8448
8611
  if (!streams.microphone) {
8449
- _context37.next = 18;
8612
+ _context38.next = 25;
8450
8613
  break;
8451
8614
  }
8452
- _context37.next = 18;
8615
+ _context38.next = 25;
8453
8616
  return this.setLocalAudioStream(streams.microphone);
8454
- case 18:
8617
+ case 25:
8455
8618
  if (!streams.camera) {
8456
- _context37.next = 21;
8619
+ _context38.next = 28;
8457
8620
  break;
8458
8621
  }
8459
- _context37.next = 21;
8622
+ _context38.next = 28;
8460
8623
  return this.setLocalVideoStream(streams.camera);
8461
- case 21:
8624
+ case 28:
8462
8625
  if (this.isMultistream) {
8463
- _context37.next = 24;
8626
+ _context38.next = 31;
8464
8627
  break;
8465
8628
  }
8466
- _context37.next = 24;
8629
+ _context38.next = 31;
8467
8630
  return this.updateTranscodedMediaConnection();
8468
- case 24:
8631
+ case 31:
8469
8632
  if (!floorRequestNeeded) {
8470
- _context37.next = 30;
8633
+ _context38.next = 37;
8471
8634
  break;
8472
8635
  }
8473
8636
  this.localShareInstanceId = _uuid.default.v4();
@@ -8491,13 +8654,13 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8491
8654
  // we're sending the http request to Locus to request the screen share floor
8492
8655
  // only after the SDP update, because that's how it's always been done for transcoded meetings
8493
8656
  // and also if sharing from the start, we need confluence to have been created
8494
- _context37.next = 30;
8657
+ _context38.next = 37;
8495
8658
  return this.enqueueScreenShareFloorRequest();
8496
- case 30:
8659
+ case 37:
8497
8660
  case "end":
8498
- return _context37.stop();
8661
+ return _context38.stop();
8499
8662
  }
8500
- }, _callee37, this);
8663
+ }, _callee38, this);
8501
8664
  }));
8502
8665
  function publishStreams(_x41) {
8503
8666
  return _publishStreams.apply(this, arguments);
@@ -8514,10 +8677,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8514
8677
  }, {
8515
8678
  key: "unpublishStreams",
8516
8679
  value: (function () {
8517
- var _unpublishStreams = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee38(streams) {
8680
+ var _unpublishStreams = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee39(streams) {
8518
8681
  var promises, _iterator, _step, stream;
8519
- return _regenerator.default.wrap(function _callee38$(_context38) {
8520
- while (1) switch (_context38.prev = _context38.next) {
8682
+ return _regenerator.default.wrap(function _callee39$(_context39) {
8683
+ while (1) switch (_context39.prev = _context39.next) {
8521
8684
  case 0:
8522
8685
  _loggerProxy.default.logger.info("Meeting:index#unpublishStreams --> called with: ".concat((0, _stringify.default)(streams)));
8523
8686
  this.checkMediaConnection();
@@ -8549,7 +8712,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8549
8712
  if (!this.isMultistream) {
8550
8713
  promises.push(this.updateTranscodedMediaConnection());
8551
8714
  }
8552
- _context38.next = 8;
8715
+ _context39.next = 8;
8553
8716
  return _promise.default.all(promises);
8554
8717
  case 8:
8555
8718
  // we're allowing for the SDK to support just audio share as well
@@ -8570,9 +8733,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8570
8733
  }
8571
8734
  case 9:
8572
8735
  case "end":
8573
- return _context38.stop();
8736
+ return _context39.stop();
8574
8737
  }
8575
- }, _callee38, this);
8738
+ }, _callee39, this);
8576
8739
  }));
8577
8740
  function unpublishStreams(_x42) {
8578
8741
  return _unpublishStreams.apply(this, arguments);
@@ -8634,55 +8797,55 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8634
8797
  }], [{
8635
8798
  key: "handleDeviceLogging",
8636
8799
  value: (function () {
8637
- var _handleDeviceLogging = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee39(isAudioEnabled, isVideoEnabled) {
8800
+ var _handleDeviceLogging = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee40(isAudioEnabled, isVideoEnabled) {
8638
8801
  var devices;
8639
- return _regenerator.default.wrap(function _callee39$(_context39) {
8640
- while (1) switch (_context39.prev = _context39.next) {
8802
+ return _regenerator.default.wrap(function _callee40$(_context40) {
8803
+ while (1) switch (_context40.prev = _context40.next) {
8641
8804
  case 0:
8642
- _context39.prev = 0;
8805
+ _context40.prev = 0;
8643
8806
  devices = [];
8644
8807
  if (!(isVideoEnabled && isAudioEnabled)) {
8645
- _context39.next = 8;
8808
+ _context40.next = 8;
8646
8809
  break;
8647
8810
  }
8648
- _context39.next = 5;
8811
+ _context40.next = 5;
8649
8812
  return (0, _mediaHelpers.getDevices)();
8650
8813
  case 5:
8651
- devices = _context39.sent;
8652
- _context39.next = 18;
8814
+ devices = _context40.sent;
8815
+ _context40.next = 18;
8653
8816
  break;
8654
8817
  case 8:
8655
8818
  if (!isVideoEnabled) {
8656
- _context39.next = 14;
8819
+ _context40.next = 14;
8657
8820
  break;
8658
8821
  }
8659
- _context39.next = 11;
8822
+ _context40.next = 11;
8660
8823
  return (0, _mediaHelpers.getDevices)(_media.default.DeviceKind.VIDEO_INPUT);
8661
8824
  case 11:
8662
- devices = _context39.sent;
8663
- _context39.next = 18;
8825
+ devices = _context40.sent;
8826
+ _context40.next = 18;
8664
8827
  break;
8665
8828
  case 14:
8666
8829
  if (!isAudioEnabled) {
8667
- _context39.next = 18;
8830
+ _context40.next = 18;
8668
8831
  break;
8669
8832
  }
8670
- _context39.next = 17;
8833
+ _context40.next = 17;
8671
8834
  return (0, _mediaHelpers.getDevices)(_media.default.DeviceKind.AUDIO_INPUT);
8672
8835
  case 17:
8673
- devices = _context39.sent;
8836
+ devices = _context40.sent;
8674
8837
  case 18:
8675
8838
  _util2.default.handleDeviceLogging(devices);
8676
- _context39.next = 23;
8839
+ _context40.next = 23;
8677
8840
  break;
8678
8841
  case 21:
8679
- _context39.prev = 21;
8680
- _context39.t0 = _context39["catch"](0);
8842
+ _context40.prev = 21;
8843
+ _context40.t0 = _context40["catch"](0);
8681
8844
  case 23:
8682
8845
  case "end":
8683
- return _context39.stop();
8846
+ return _context40.stop();
8684
8847
  }
8685
- }, _callee39, null, [[0, 21]]);
8848
+ }, _callee40, null, [[0, 21]]);
8686
8849
  }));
8687
8850
  function handleDeviceLogging(_x43, _x44) {
8688
8851
  return _handleDeviceLogging.apply(this, arguments);