@webex/plugin-meetings 3.6.0-next.9 → 3.7.0-next.1

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 (118) 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/config.js +2 -1
  5. package/dist/config.js.map +1 -1
  6. package/dist/constants.js +24 -2
  7. package/dist/constants.js.map +1 -1
  8. package/dist/controls-options-manager/enums.js +1 -0
  9. package/dist/controls-options-manager/enums.js.map +1 -1
  10. package/dist/controls-options-manager/index.js +10 -3
  11. package/dist/controls-options-manager/index.js.map +1 -1
  12. package/dist/controls-options-manager/types.js.map +1 -1
  13. package/dist/controls-options-manager/util.js +12 -0
  14. package/dist/controls-options-manager/util.js.map +1 -1
  15. package/dist/interpretation/index.js +1 -1
  16. package/dist/interpretation/siLanguage.js +1 -1
  17. package/dist/locus-info/controlsUtils.js +28 -4
  18. package/dist/locus-info/controlsUtils.js.map +1 -1
  19. package/dist/locus-info/fullState.js +2 -1
  20. package/dist/locus-info/fullState.js.map +1 -1
  21. package/dist/locus-info/index.js +61 -3
  22. package/dist/locus-info/index.js.map +1 -1
  23. package/dist/meeting/in-meeting-actions.js +19 -1
  24. package/dist/meeting/in-meeting-actions.js.map +1 -1
  25. package/dist/meeting/index.js +564 -441
  26. package/dist/meeting/index.js.map +1 -1
  27. package/dist/meeting/locusMediaRequest.js +2 -6
  28. package/dist/meeting/locusMediaRequest.js.map +1 -1
  29. package/dist/meeting/request.js +21 -29
  30. package/dist/meeting/request.js.map +1 -1
  31. package/dist/meeting/util.js +94 -59
  32. package/dist/meeting/util.js.map +1 -1
  33. package/dist/meetings/index.js +2 -0
  34. package/dist/meetings/index.js.map +1 -1
  35. package/dist/members/index.js +3 -2
  36. package/dist/members/index.js.map +1 -1
  37. package/dist/members/util.js +9 -5
  38. package/dist/members/util.js.map +1 -1
  39. package/dist/reachability/clusterReachability.js +0 -4
  40. package/dist/reachability/clusterReachability.js.map +1 -1
  41. package/dist/reachability/index.js +433 -136
  42. package/dist/reachability/index.js.map +1 -1
  43. package/dist/reachability/reachability.types.js +7 -0
  44. package/dist/reachability/reachability.types.js.map +1 -0
  45. package/dist/reachability/request.js +23 -9
  46. package/dist/reachability/request.js.map +1 -1
  47. package/dist/roap/index.js +5 -7
  48. package/dist/roap/index.js.map +1 -1
  49. package/dist/roap/request.js +45 -79
  50. package/dist/roap/request.js.map +1 -1
  51. package/dist/roap/turnDiscovery.js +3 -6
  52. package/dist/roap/turnDiscovery.js.map +1 -1
  53. package/dist/types/config.d.ts +1 -0
  54. package/dist/types/constants.d.ts +19 -0
  55. package/dist/types/controls-options-manager/enums.d.ts +2 -1
  56. package/dist/types/controls-options-manager/index.d.ts +2 -1
  57. package/dist/types/controls-options-manager/types.d.ts +2 -0
  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 +14 -3
  61. package/dist/types/meeting/locusMediaRequest.d.ts +2 -3
  62. package/dist/types/meeting/request.d.ts +2 -2
  63. package/dist/types/meeting/util.d.ts +2 -2
  64. package/dist/types/meetings/index.d.ts +1 -1
  65. package/dist/types/members/index.d.ts +2 -1
  66. package/dist/types/members/util.d.ts +3 -1
  67. package/dist/types/reachability/clusterReachability.d.ts +1 -10
  68. package/dist/types/reachability/index.d.ts +74 -35
  69. package/dist/types/reachability/reachability.types.d.ts +64 -0
  70. package/dist/types/reachability/request.d.ts +5 -1
  71. package/dist/types/roap/request.d.ts +1 -13
  72. package/dist/webinar/index.js +32 -19
  73. package/dist/webinar/index.js.map +1 -1
  74. package/package.json +22 -22
  75. package/src/config.ts +1 -0
  76. package/src/constants.ts +25 -0
  77. package/src/controls-options-manager/enums.ts +1 -0
  78. package/src/controls-options-manager/index.ts +19 -2
  79. package/src/controls-options-manager/types.ts +2 -0
  80. package/src/controls-options-manager/util.ts +12 -0
  81. package/src/locus-info/controlsUtils.ts +46 -2
  82. package/src/locus-info/fullState.ts +1 -0
  83. package/src/locus-info/index.ts +60 -0
  84. package/src/meeting/in-meeting-actions.ts +37 -0
  85. package/src/meeting/index.ts +114 -11
  86. package/src/meeting/locusMediaRequest.ts +4 -8
  87. package/src/meeting/request.ts +4 -11
  88. package/src/meeting/util.ts +24 -4
  89. package/src/meetings/index.ts +46 -39
  90. package/src/members/index.ts +4 -2
  91. package/src/members/util.ts +3 -1
  92. package/src/reachability/clusterReachability.ts +1 -14
  93. package/src/reachability/index.ts +285 -77
  94. package/src/reachability/reachability.types.ts +85 -0
  95. package/src/reachability/request.ts +55 -30
  96. package/src/roap/index.ts +4 -5
  97. package/src/roap/request.ts +30 -44
  98. package/src/roap/turnDiscovery.ts +2 -4
  99. package/src/webinar/index.ts +31 -17
  100. package/test/unit/spec/controls-options-manager/index.js +56 -32
  101. package/test/unit/spec/controls-options-manager/util.js +44 -0
  102. package/test/unit/spec/locus-info/controlsUtils.js +80 -4
  103. package/test/unit/spec/locus-info/index.js +59 -2
  104. package/test/unit/spec/meeting/in-meeting-actions.ts +18 -0
  105. package/test/unit/spec/meeting/index.js +231 -100
  106. package/test/unit/spec/meeting/locusMediaRequest.ts +18 -11
  107. package/test/unit/spec/meeting/request.js +3 -26
  108. package/test/unit/spec/meeting/utils.js +53 -13
  109. package/test/unit/spec/meetings/index.js +16 -1
  110. package/test/unit/spec/members/index.js +25 -2
  111. package/test/unit/spec/members/request.js +37 -3
  112. package/test/unit/spec/members/utils.js +15 -1
  113. package/test/unit/spec/reachability/index.ts +265 -1
  114. package/test/unit/spec/reachability/request.js +56 -15
  115. package/test/unit/spec/roap/index.ts +1 -1
  116. package/test/unit/spec/roap/request.ts +51 -109
  117. package/test/unit/spec/roap/turnDiscovery.ts +202 -147
  118. package/test/unit/spec/webinar/index.ts +82 -16
@@ -1004,7 +1004,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
1004
1004
  });
1005
1005
  _this.iceCandidatesCount = 0;
1006
1006
  _this.mediaProperties.webrtcMediaConnection.on(_internalMediaCore.MediaConnectionEventNames.ICE_CANDIDATE, function (event) {
1007
- if (event.candidate) {
1007
+ if (event.candidate && event.candidate.candidate && event.candidate.candidate.length > 0) {
1008
1008
  _this.iceCandidatesCount += 1;
1009
1009
  }
1010
1010
  });
@@ -2702,6 +2702,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2702
2702
  this.setUpLocusInfoSelfListener();
2703
2703
  this.setUpLocusInfoMeetingListener();
2704
2704
  this.setUpLocusServicesListener();
2705
+ this.setUpLocusResourcesListener();
2705
2706
  // members update listeners
2706
2707
  this.setUpLocusFullStateListener();
2707
2708
  this.setUpLocusUrlListener();
@@ -3218,8 +3219,44 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3218
3219
  state: state
3219
3220
  });
3220
3221
  });
3221
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_VIDEO_CHANGED, function (_ref22) {
3222
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_WEBCAST_CHANGED, function (_ref22) {
3222
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;
3223
3260
  _triggerProxy.default.trigger(_this13, {
3224
3261
  file: 'meeting/index',
3225
3262
  function: 'setupLocusControlsListener'
@@ -3266,7 +3303,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3266
3303
  var _this14 = this;
3267
3304
  // Will get triggered on local and remote share
3268
3305
  this.locusInfo.on(_constants.EVENTS.LOCUS_INFO_UPDATE_MEDIA_SHARES, /*#__PURE__*/function () {
3269
- 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) {
3270
3307
  var _payload$previous, _payload$previous2;
3271
3308
  var _payload$current, contentShare, whiteboardShare, previousContentShare, previousWhiteboardShare, newShareStatus, oldShareStatus, sendStartedSharingRemote, _this14$mediaProperti;
3272
3309
  return _regenerator.default.wrap(function _callee8$(_context8) {
@@ -3464,7 +3501,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3464
3501
  }, _callee8, null, [[27,, 31, 34]]);
3465
3502
  }));
3466
3503
  return function (_x8) {
3467
- return _ref23.apply(this, arguments);
3504
+ return _ref27.apply(this, arguments);
3468
3505
  };
3469
3506
  }());
3470
3507
  }
@@ -3514,14 +3551,29 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3514
3551
  value: function setUpLocusServicesListener() {
3515
3552
  var _this16 = this;
3516
3553
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.LINKS_SERVICES, function (payload) {
3517
- 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;
3518
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);
3519
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);
3520
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);
3521
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);
3522
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);
3523
- _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);
3524
- _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);
3525
3577
  });
3526
3578
  }
3527
3579
 
@@ -3534,10 +3586,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3534
3586
  }, {
3535
3587
  key: "setUpLocusInfoMeetingInfoListener",
3536
3588
  value: function setUpLocusInfoMeetingInfoListener() {
3537
- var _this17 = this;
3589
+ var _this18 = this;
3538
3590
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.MEETING_LOCKED, function (payload) {
3539
3591
  if (payload) {
3540
- _triggerProxy.default.trigger(_this17, {
3592
+ _triggerProxy.default.trigger(_this18, {
3541
3593
  file: 'meeting/index',
3542
3594
  function: 'setUpLocusInfoMeetingInfoListener'
3543
3595
  }, _constants.EVENT_TRIGGERS.MEETING_LOCKED, {
@@ -3547,7 +3599,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3547
3599
  });
3548
3600
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.MEETING_UNLOCKED, function (payload) {
3549
3601
  if (payload) {
3550
- _triggerProxy.default.trigger(_this17, {
3602
+ _triggerProxy.default.trigger(_this18, {
3551
3603
  file: 'meeting/index',
3552
3604
  function: 'setUpLocusInfoMeetingInfoListener'
3553
3605
  }, _constants.EVENT_TRIGGERS.MEETING_UNLOCKED, {
@@ -3555,16 +3607,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3555
3607
  });
3556
3608
  }
3557
3609
  });
3558
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.MEETING_INFO_UPDATED, function (_ref24) {
3559
- var isInitializing = _ref24.isInitializing;
3560
- _this17.updateMeetingActions();
3561
- _this17.recordingController.setDisplayHints(_this17.userDisplayHints);
3562
- _this17.recordingController.setUserPolicy(_this17.selfUserPolicies);
3563
- _this17.controlsOptionsManager.setDisplayHints(_this17.userDisplayHints);
3564
- _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);
3565
3617
  if (!isInitializing) {
3566
3618
  // send updated trigger only if locus is not initializing the meeting
3567
- _triggerProxy.default.trigger(_this17, {
3619
+ _triggerProxy.default.trigger(_this18, {
3568
3620
  file: 'meetings',
3569
3621
  function: 'setUpLocusInfoMeetingInfoListener'
3570
3622
  }, _constants.EVENT_TRIGGERS.MEETING_INFO_UPDATED);
@@ -3595,10 +3647,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3595
3647
  }, {
3596
3648
  key: "setUpLocusEmbeddedAppsListener",
3597
3649
  value: function setUpLocusEmbeddedAppsListener() {
3598
- var _this18 = this;
3650
+ var _this19 = this;
3599
3651
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.EMBEDDED_APPS_UPDATED, function (embeddedApps) {
3600
3652
  if (embeddedApps) {
3601
- _triggerProxy.default.trigger(_this18, {
3653
+ _triggerProxy.default.trigger(_this19, {
3602
3654
  file: 'meeting/index',
3603
3655
  function: 'setUpLocusEmbeddedAppsListener'
3604
3656
  }, _constants.EVENT_TRIGGERS.MEETING_EMBEDDED_APPS_UPDATE, embeddedApps);
@@ -3615,11 +3667,11 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3615
3667
  }, {
3616
3668
  key: "setUpLocusInfoSelfListener",
3617
3669
  value: function setUpLocusInfoSelfListener() {
3618
- var _this19 = this;
3670
+ var _this20 = this;
3619
3671
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.LOCAL_UNMUTE_REQUIRED, function (payload) {
3620
- if (_this19.audio) {
3621
- _this19.audio.handleServerLocalUnmuteRequired(_this19, payload.unmuteAllowed);
3622
- _triggerProxy.default.trigger(_this19, {
3672
+ if (_this20.audio) {
3673
+ _this20.audio.handleServerLocalUnmuteRequired(_this20, payload.unmuteAllowed);
3674
+ _triggerProxy.default.trigger(_this20, {
3623
3675
  file: 'meeting/index',
3624
3676
  function: 'setUpLocusInfoSelfListener'
3625
3677
  }, _constants.EVENT_TRIGGERS.MEETING_SELF_UNMUTED_BY_OTHERS, {
@@ -3629,13 +3681,13 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3629
3681
  });
3630
3682
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED, function (payload) {
3631
3683
  if (payload) {
3632
- if (_this19.video) {
3684
+ if (_this20.video) {
3633
3685
  var _payload$muted, _payload$unmuteAllowe;
3634
- payload.muted = (_payload$muted = payload.muted) !== null && _payload$muted !== void 0 ? _payload$muted : _this19.video.isRemotelyMuted();
3635
- payload.unmuteAllowed = (_payload$unmuteAllowe = payload.unmuteAllowed) !== null && _payload$unmuteAllowe !== void 0 ? _payload$unmuteAllowe : _this19.video.isUnmuteAllowed();
3636
- _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);
3637
3689
  }
3638
- _triggerProxy.default.trigger(_this19, {
3690
+ _triggerProxy.default.trigger(_this20, {
3639
3691
  file: 'meeting/index',
3640
3692
  function: 'setUpLocusInfoSelfListener'
3641
3693
  }, payload.muted ? _constants.EVENT_TRIGGERS.MEETING_SELF_VIDEO_MUTED_BY_OTHERS : _constants.EVENT_TRIGGERS.MEETING_SELF_VIDEO_UNMUTED_BY_OTHERS, {
@@ -3645,15 +3697,15 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3645
3697
  });
3646
3698
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_REMOTE_MUTE_STATUS_UPDATED, function (payload) {
3647
3699
  if (payload) {
3648
- var _this19$audio;
3649
- if (_this19.audio) {
3650
- _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);
3651
3703
  }
3652
3704
  // with "mute on entry" server will send us remote mute even if we don't have media configured,
3653
3705
  // so if being muted by others, always send the notification,
3654
3706
  // but if being unmuted, only send it if we are also locally unmuted
3655
- if (payload.muted || !((_this19$audio = _this19.audio) !== null && _this19$audio !== void 0 && _this19$audio.isMuted())) {
3656
- _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, {
3657
3709
  file: 'meeting/index',
3658
3710
  function: 'setUpLocusInfoSelfListener'
3659
3711
  }, payload.muted ? _constants.EVENT_TRIGGERS.MEETING_SELF_MUTED_BY_OTHERS : _constants.EVENT_TRIGGERS.MEETING_SELF_UNMUTED_BY_OTHERS, {
@@ -3663,7 +3715,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3663
3715
  }
3664
3716
  });
3665
3717
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.LOCAL_UNMUTE_REQUESTED, function (payload) {
3666
- _triggerProxy.default.trigger(_this19, {
3718
+ _triggerProxy.default.trigger(_this20, {
3667
3719
  file: 'meeting/index',
3668
3720
  function: 'setUpLocusInfoSelfListener'
3669
3721
  }, _constants.EVENT_TRIGGERS.MEETING_SELF_REQUESTED_TO_UNMUTE, {
@@ -3672,8 +3724,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3672
3724
  });
3673
3725
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_UNADMITTED_GUEST, function (payload) {
3674
3726
  if (payload) {
3675
- _this19.startKeepAlive();
3676
- _triggerProxy.default.trigger(_this19, {
3727
+ _this20.startKeepAlive();
3728
+ _triggerProxy.default.trigger(_this20, {
3677
3729
  file: 'meeting/index',
3678
3730
  function: 'setUpLocusInfoSelfListener'
3679
3731
  }, _constants.EVENT_TRIGGERS.MEETING_SELF_LOBBY_WAITING, {
@@ -3681,24 +3733,24 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3681
3733
  });
3682
3734
 
3683
3735
  // @ts-ignore
3684
- _this19.webex.internal.newMetrics.submitClientEvent({
3736
+ _this20.webex.internal.newMetrics.submitClientEvent({
3685
3737
  name: 'client.lobby.entered',
3686
3738
  options: {
3687
- meetingId: _this19.id
3739
+ meetingId: _this20.id
3688
3740
  }
3689
3741
  });
3690
3742
  }
3691
- _this19.updateLLMConnection();
3743
+ _this20.updateLLMConnection();
3692
3744
  });
3693
3745
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_ADMITTED_GUEST, /*#__PURE__*/function () {
3694
- var _ref25 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9(payload) {
3695
- var _this19$rtcMetrics;
3746
+ var _ref29 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9(payload) {
3747
+ var _this20$rtcMetrics;
3696
3748
  return _regenerator.default.wrap(function _callee9$(_context9) {
3697
3749
  while (1) switch (_context9.prev = _context9.next) {
3698
3750
  case 0:
3699
- _this19.stopKeepAlive();
3751
+ _this20.stopKeepAlive();
3700
3752
  if (payload) {
3701
- _triggerProxy.default.trigger(_this19, {
3753
+ _triggerProxy.default.trigger(_this20, {
3702
3754
  file: 'meeting/index',
3703
3755
  function: 'setUpLocusInfoSelfListener'
3704
3756
  }, _constants.EVENT_TRIGGERS.MEETING_SELF_GUEST_ADMITTED, {
@@ -3706,15 +3758,15 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3706
3758
  });
3707
3759
 
3708
3760
  // @ts-ignore
3709
- _this19.webex.internal.newMetrics.submitClientEvent({
3761
+ _this20.webex.internal.newMetrics.submitClientEvent({
3710
3762
  name: 'client.lobby.exited',
3711
3763
  options: {
3712
- meetingId: _this19.id
3764
+ meetingId: _this20.id
3713
3765
  }
3714
3766
  });
3715
3767
  }
3716
- (_this19$rtcMetrics = _this19.rtcMetrics) === null || _this19$rtcMetrics === void 0 ? void 0 : _this19$rtcMetrics.sendNextMetrics();
3717
- _this19.updateLLMConnection();
3768
+ (_this20$rtcMetrics = _this20.rtcMetrics) === null || _this20$rtcMetrics === void 0 ? void 0 : _this20$rtcMetrics.sendNextMetrics();
3769
+ _this20.updateLLMConnection();
3718
3770
  case 4:
3719
3771
  case "end":
3720
3772
  return _context9.stop();
@@ -3722,42 +3774,42 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3722
3774
  }, _callee9);
3723
3775
  }));
3724
3776
  return function (_x9) {
3725
- return _ref25.apply(this, arguments);
3777
+ return _ref29.apply(this, arguments);
3726
3778
  };
3727
3779
  }());
3728
3780
 
3729
3781
  // @ts-ignore - check if MEDIA_INACTIVITY exists
3730
3782
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.MEDIA_INACTIVITY, function () {
3731
3783
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_MEDIA_INACTIVE, {
3732
- correlation_id: _this19.correlationId,
3733
- locus_id: _this19.locusId
3784
+ correlation_id: _this20.correlationId,
3785
+ locus_id: _this20.locusId
3734
3786
  });
3735
3787
  _loggerProxy.default.logger.info('Meeting:index#setUpLocusInfoSelfListener --> MEDIA_INACTIVITY received, reconnecting...');
3736
- _this19.reconnect();
3788
+ _this20.reconnect();
3737
3789
  });
3738
3790
 
3739
3791
  // There is two stats for mute one is the actual media being sent or received
3740
3792
  // The second on is if the audio is muted, we need to tell the statsAnalyzer when
3741
3793
  // the audio is muted or the user is not willing to send media
3742
3794
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.MEDIA_STATUS_CHANGE, function (status) {
3743
- if (_this19.statsAnalyzer) {
3744
- var _this19$mediaProperti, _this19$audio2, _this19$mediaProperti2, _this19$video, _this19$mediaProperti3, _this19$mediaProperti4, _this19$mediaProperti5, _this19$mediaProperti6;
3745
- _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({
3746
3798
  actual: status,
3747
3799
  expected: {
3748
3800
  // We need to check what should be the actual direction of media
3749
- 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()),
3750
- 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()),
3751
- sendShare: (_this19$mediaProperti3 = _this19.mediaProperties.mediaDirection) === null || _this19$mediaProperti3 === void 0 ? void 0 : _this19$mediaProperti3.sendShare,
3752
- receiveAudio: (_this19$mediaProperti4 = _this19.mediaProperties.mediaDirection) === null || _this19$mediaProperti4 === void 0 ? void 0 : _this19$mediaProperti4.receiveAudio,
3753
- receiveVideo: (_this19$mediaProperti5 = _this19.mediaProperties.mediaDirection) === null || _this19$mediaProperti5 === void 0 ? void 0 : _this19$mediaProperti5.receiveVideo,
3754
- 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
3755
3807
  }
3756
3808
  });
3757
3809
  }
3758
3810
  });
3759
3811
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE, function (payload) {
3760
- _triggerProxy.default.trigger(_this19, {
3812
+ _triggerProxy.default.trigger(_this20, {
3761
3813
  file: 'meeting/index',
3762
3814
  function: 'setUpLocusInfoSelfListener'
3763
3815
  }, _constants.EVENT_TRIGGERS.MEETING_SELF_CANNOT_VIEW_PARTICIPANT_LIST, {
@@ -3765,29 +3817,29 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3765
3817
  });
3766
3818
  });
3767
3819
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_MEETING_BREAKOUTS_CHANGED, function (payload) {
3768
- _this19.breakouts.updateBreakoutSessions(payload);
3769
- _triggerProxy.default.trigger(_this19, {
3820
+ _this20.breakouts.updateBreakoutSessions(payload);
3821
+ _triggerProxy.default.trigger(_this20, {
3770
3822
  file: 'meeting/index',
3771
3823
  function: 'setUpLocusInfoSelfListener'
3772
3824
  }, _constants.EVENT_TRIGGERS.MEETING_BREAKOUTS_UPDATE);
3773
3825
  });
3774
3826
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_MEETING_INTERPRETATION_CHANGED, function (payload) {
3775
- var targetChanged = _this19.simultaneousInterpretation.updateSelfInterpretation(payload);
3776
- _triggerProxy.default.trigger(_this19, {
3827
+ var targetChanged = _this20.simultaneousInterpretation.updateSelfInterpretation(payload);
3828
+ _triggerProxy.default.trigger(_this20, {
3777
3829
  file: 'meeting/index',
3778
3830
  function: 'setUpLocusInfoSelfListener'
3779
3831
  }, _constants.EVENT_TRIGGERS.MEETING_INTERPRETATION_UPDATE);
3780
- if (targetChanged && _this19.mediaProperties.audioStream) {
3781
- _this19.setSendNamedMediaGroup(_internalMediaCore.MediaType.AudioMain);
3832
+ if (targetChanged && _this20.mediaProperties.audioStream) {
3833
+ _this20.setSendNamedMediaGroup(_internalMediaCore.MediaType.AudioMain);
3782
3834
  }
3783
3835
  });
3784
3836
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_ROLES_CHANGED, function (payload) {
3785
- var _payload$newRoles, _payload$newRoles2, _payload$newRoles3, _payload$newRoles4;
3837
+ var _payload$newRoles, _payload$newRoles2, _payload$newRoles3;
3786
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));
3787
- _this19.breakouts.updateCanManageBreakouts(isModeratorOrCohost);
3788
- _this19.simultaneousInterpretation.updateCanManageInterpreters((_payload$newRoles3 = payload.newRoles) === null || _payload$newRoles3 === void 0 ? void 0 : _payload$newRoles3.includes(_constants.SELF_ROLES.MODERATOR));
3789
- _this19.webinar.updateCanManageWebcast((_payload$newRoles4 = payload.newRoles) === null || _payload$newRoles4 === void 0 ? void 0 : _payload$newRoles4.includes(_constants.SELF_ROLES.MODERATOR));
3790
- _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, {
3791
3843
  file: 'meeting/index',
3792
3844
  function: 'setUpLocusInfoSelfListener'
3793
3845
  }, _constants.EVENT_TRIGGERS.MEETING_SELF_ROLES_CHANGED, {
@@ -3795,7 +3847,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3795
3847
  });
3796
3848
  });
3797
3849
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_IS_SHARING_BLOCKED_CHANGE, function (payload) {
3798
- _triggerProxy.default.trigger(_this19, {
3850
+ _triggerProxy.default.trigger(_this20, {
3799
3851
  file: 'meeting/index',
3800
3852
  function: 'setUpLocusInfoSelfListener'
3801
3853
  }, _constants.EVENT_TRIGGERS.MEETING_SELF_IS_SHARING_BLOCKED, {
@@ -3813,42 +3865,42 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3813
3865
  }, {
3814
3866
  key: "setUpLocusInfoMeetingListener",
3815
3867
  value: function setUpLocusInfoMeetingListener() {
3816
- var _this20 = this;
3868
+ var _this21 = this;
3817
3869
  this.locusInfo.on(_constants.EVENTS.REMOTE_RESPONSE, function (payload) {
3818
- _this20.meetingFiniteStateMachine.remote(payload);
3870
+ _this21.meetingFiniteStateMachine.remote(payload);
3819
3871
  if (payload.remoteDeclined) {
3820
- _this20.leave({
3872
+ _this21.leave({
3821
3873
  reason: payload.reason
3822
3874
  }).then(function () {
3823
3875
  _loggerProxy.default.logger.info('Meeting:index#setUpLocusInfoMeetingListener --> REMOTE_RESPONSE. Attempting to leave meeting.');
3824
3876
  }).catch(function (error) {
3825
3877
  // @ts-ignore
3826
- _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));
3827
3879
  });
3828
3880
  }
3829
3881
  });
3830
3882
  this.locusInfo.on(_constants.EVENTS.DESTROY_MEETING, /*#__PURE__*/function () {
3831
- 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) {
3832
3884
  return _regenerator.default.wrap(function _callee10$(_context10) {
3833
3885
  while (1) switch (_context10.prev = _context10.next) {
3834
3886
  case 0:
3835
- if (!_this20.wirelessShare) {
3887
+ if (!_this21.wirelessShare) {
3836
3888
  _context10.next = 7;
3837
3889
  break;
3838
3890
  }
3839
- if (!_this20.mediaProperties.shareVideoStream) {
3891
+ if (!_this21.mediaProperties.shareVideoStream) {
3840
3892
  _context10.next = 4;
3841
3893
  break;
3842
3894
  }
3843
3895
  _context10.next = 4;
3844
- return _this20.setLocalShareVideoStream(undefined);
3896
+ return _this21.setLocalShareVideoStream(undefined);
3845
3897
  case 4:
3846
- if (!_this20.mediaProperties.shareAudioStream) {
3898
+ if (!_this21.mediaProperties.shareAudioStream) {
3847
3899
  _context10.next = 7;
3848
3900
  break;
3849
3901
  }
3850
3902
  _context10.next = 7;
3851
- return _this20.setLocalShareAudioStream(undefined);
3903
+ return _this21.setLocalShareAudioStream(undefined);
3852
3904
  case 7:
3853
3905
  if (!payload.shouldLeave) {
3854
3906
  _context10.next = 19;
@@ -3856,7 +3908,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3856
3908
  }
3857
3909
  _context10.prev = 8;
3858
3910
  _context10.next = 11;
3859
- return _this20.leave({
3911
+ return _this21.leave({
3860
3912
  reason: payload.reason
3861
3913
  });
3862
3914
  case 11:
@@ -3867,19 +3919,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3867
3919
  _context10.prev = 14;
3868
3920
  _context10.t0 = _context10["catch"](8);
3869
3921
  // @ts-ignore
3870
- _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));
3871
3923
  case 17:
3872
3924
  _context10.next = 22;
3873
3925
  break;
3874
3926
  case 19:
3875
3927
  _loggerProxy.default.logger.info('Meeting:index#setUpLocusInfoMeetingListener --> MEETING_REMOVED_REASON', payload.reason);
3876
- _util2.default.cleanUp(_this20);
3877
- _triggerProxy.default.trigger(_this20, {
3928
+ _util2.default.cleanUp(_this21);
3929
+ _triggerProxy.default.trigger(_this21, {
3878
3930
  file: 'meeting/index',
3879
3931
  function: 'setUpLocusInfoMeetingListener'
3880
3932
  }, _constants.EVENTS.DESTROY_MEETING, {
3881
3933
  reason: payload.reason,
3882
- meetingId: _this20.id
3934
+ meetingId: _this21.id
3883
3935
  });
3884
3936
  case 22:
3885
3937
  case "end":
@@ -3888,7 +3940,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3888
3940
  }, _callee10, null, [[8, 14]]);
3889
3941
  }));
3890
3942
  return function (_x10) {
3891
- return _ref26.apply(this, arguments);
3943
+ return _ref30.apply(this, arguments);
3892
3944
  };
3893
3945
  }());
3894
3946
  }
@@ -3904,13 +3956,13 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3904
3956
  }, {
3905
3957
  key: "updateMeetingObject",
3906
3958
  value: function updateMeetingObject(object) {
3907
- var _this21 = this;
3959
+ var _this22 = this;
3908
3960
  // Validate if these are valid meeting object property
3909
3961
  // TODO: add a check to make sure the value passed in the constructor
3910
3962
  // is not changed by any delta event
3911
3963
  if (object && (0, _keys.default)(object).length) {
3912
3964
  (0, _keys.default)(object).forEach(function (key) {
3913
- _this21[key] = object[key];
3965
+ _this22[key] = object[key];
3914
3966
  });
3915
3967
  }
3916
3968
  }
@@ -4240,6 +4292,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4240
4292
  requiredHints: [_constants.DISPLAY_HINTS.DISABLE_VIEW_THE_PARTICIPANT_LIST],
4241
4293
  displayHints: this.userDisplayHints
4242
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
+ }),
4243
4311
  canEnableRaiseHand: _util5.default.hasHints({
4244
4312
  requiredHints: [_constants.DISPLAY_HINTS.ENABLE_RAISE_HAND],
4245
4313
  displayHints: this.userDisplayHints
@@ -4256,6 +4324,26 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4256
4324
  requiredHints: [_constants.DISPLAY_HINTS.DISABLE_VIDEO],
4257
4325
  displayHints: this.userDisplayHints
4258
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
+ }),
4259
4347
  canShareFile: _util5.default.hasHints({
4260
4348
  requiredHints: [_constants.DISPLAY_HINTS.SHARE_FILE],
4261
4349
  displayHints: this.userDisplayHints
@@ -4434,7 +4522,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4434
4522
  }, {
4435
4523
  key: "closeRemoteStreams",
4436
4524
  value: function closeRemoteStreams() {
4437
- var _this22 = this;
4525
+ var _this23 = this;
4438
4526
  var _this$mediaProperties4 = this.mediaProperties,
4439
4527
  remoteAudioStream = _this$mediaProperties4.remoteAudioStream,
4440
4528
  remoteVideoStream = _this$mediaProperties4.remoteVideoStream,
@@ -4448,7 +4536,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4448
4536
  */
4449
4537
  // eslint-disable-next-line @typescript-eslint/no-shadow
4450
4538
  var triggerMediaStoppedEvent = function triggerMediaStoppedEvent(mediaType) {
4451
- _triggerProxy.default.trigger(_this22, {
4539
+ _triggerProxy.default.trigger(_this23, {
4452
4540
  file: 'meeting/index',
4453
4541
  function: 'closeRemoteStreams'
4454
4542
  }, _constants.EVENT_TRIGGERS.MEDIA_STOPPED, {
@@ -4756,7 +4844,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4756
4844
  }, {
4757
4845
  key: "setMercuryListener",
4758
4846
  value: function setMercuryListener() {
4759
- var _this23 = this;
4847
+ var _this24 = this;
4760
4848
  // Client will have a socket manager and handle reconnecting to mercury, when we reconnect to mercury
4761
4849
  // if the meeting has active peer connections, it should try to reconnect.
4762
4850
  // @ts-ignore
@@ -4764,33 +4852,33 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4764
4852
  _loggerProxy.default.logger.info('Meeting:index#setMercuryListener --> Web socket online');
4765
4853
 
4766
4854
  // Only send restore event when it was disconnected before and for connected later
4767
- if (!_this23.hasWebsocketConnected) {
4855
+ if (!_this24.hasWebsocketConnected) {
4768
4856
  // @ts-ignore
4769
- _this23.webex.internal.newMetrics.submitClientEvent({
4857
+ _this24.webex.internal.newMetrics.submitClientEvent({
4770
4858
  name: 'client.mercury.connection.restored',
4771
4859
  options: {
4772
- meetingId: _this23.id
4860
+ meetingId: _this24.id
4773
4861
  }
4774
4862
  });
4775
4863
  _metrics.default.sendBehavioralMetric(_constants2.default.MERCURY_CONNECTION_RESTORED, {
4776
- correlation_id: _this23.correlationId
4864
+ correlation_id: _this24.correlationId
4777
4865
  });
4778
4866
  }
4779
- _this23.hasWebsocketConnected = true;
4867
+ _this24.hasWebsocketConnected = true;
4780
4868
  });
4781
4869
 
4782
4870
  // @ts-ignore
4783
4871
  this.webex.internal.mercury.on(_constants.OFFLINE, function () {
4784
4872
  _loggerProxy.default.logger.error('Meeting:index#setMercuryListener --> Web socket offline');
4785
4873
  // @ts-ignore
4786
- _this23.webex.internal.newMetrics.submitClientEvent({
4874
+ _this24.webex.internal.newMetrics.submitClientEvent({
4787
4875
  name: 'client.mercury.connection.lost',
4788
4876
  options: {
4789
- meetingId: _this23.id
4877
+ meetingId: _this24.id
4790
4878
  }
4791
4879
  });
4792
4880
  _metrics.default.sendBehavioralMetric(_constants2.default.MERCURY_CONNECTION_FAILURE, {
4793
- correlation_id: _this23.correlationId
4881
+ correlation_id: _this24.correlationId
4794
4882
  });
4795
4883
  });
4796
4884
  }
@@ -4892,7 +4980,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4892
4980
  }, {
4893
4981
  key: "muteAudio",
4894
4982
  value: function muteAudio() {
4895
- var _this24 = this;
4983
+ var _this25 = this;
4896
4984
  if (!_util2.default.isUserInJoinedState(this.locusInfo)) {
4897
4985
  return _promise.default.reject(new _webexErrors.UserNotJoinedError());
4898
4986
  }
@@ -4908,22 +4996,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4908
4996
 
4909
4997
  // First, stop sending the local audio media
4910
4998
  return logRequest(this.audio.handleClientRequest(this, true).then(function () {
4911
- _util2.default.handleAudioLogging(_this24.mediaProperties.audioStream);
4999
+ _util2.default.handleAudioLogging(_this25.mediaProperties.audioStream);
4912
5000
  // @ts-ignore
4913
- _this24.webex.internal.newMetrics.submitClientEvent({
5001
+ _this25.webex.internal.newMetrics.submitClientEvent({
4914
5002
  name: 'client.muted',
4915
5003
  payload: {
4916
5004
  trigger: 'user-interaction',
4917
5005
  mediaType: 'audio'
4918
5006
  },
4919
5007
  options: {
4920
- meetingId: _this24.id
5008
+ meetingId: _this25.id
4921
5009
  }
4922
5010
  });
4923
5011
  }).catch(function (error) {
4924
5012
  _metrics.default.sendBehavioralMetric(_constants2.default.MUTE_AUDIO_FAILURE, {
4925
- correlation_id: _this24.correlationId,
4926
- locus_id: _this24.locusUrl.split('/').pop(),
5013
+ correlation_id: _this25.correlationId,
5014
+ locus_id: _this25.locusUrl.split('/').pop(),
4927
5015
  reason: error.message,
4928
5016
  stack: error.stack
4929
5017
  });
@@ -4942,7 +5030,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4942
5030
  }, {
4943
5031
  key: "unmuteAudio",
4944
5032
  value: function unmuteAudio() {
4945
- var _this25 = this;
5033
+ var _this26 = this;
4946
5034
  if (!_util2.default.isUserInJoinedState(this.locusInfo)) {
4947
5035
  return _promise.default.reject(new _webexErrors.UserNotJoinedError());
4948
5036
  }
@@ -4958,22 +5046,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4958
5046
 
4959
5047
  // First, send the control to unmute the participant on the server
4960
5048
  return logRequest(this.audio.handleClientRequest(this, false).then(function () {
4961
- _util2.default.handleAudioLogging(_this25.mediaProperties.audioStream);
5049
+ _util2.default.handleAudioLogging(_this26.mediaProperties.audioStream);
4962
5050
  // @ts-ignore
4963
- _this25.webex.internal.newMetrics.submitClientEvent({
5051
+ _this26.webex.internal.newMetrics.submitClientEvent({
4964
5052
  name: 'client.unmuted',
4965
5053
  payload: {
4966
5054
  trigger: 'user-interaction',
4967
5055
  mediaType: 'audio'
4968
5056
  },
4969
5057
  options: {
4970
- meetingId: _this25.id
5058
+ meetingId: _this26.id
4971
5059
  }
4972
5060
  });
4973
5061
  }).catch(function (error) {
4974
5062
  _metrics.default.sendBehavioralMetric(_constants2.default.UNMUTE_AUDIO_FAILURE, {
4975
- correlation_id: _this25.correlationId,
4976
- locus_id: _this25.locusUrl.split('/').pop(),
5063
+ correlation_id: _this26.correlationId,
5064
+ locus_id: _this26.locusUrl.split('/').pop(),
4977
5065
  reason: error.message,
4978
5066
  stack: error.stack
4979
5067
  });
@@ -4992,7 +5080,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4992
5080
  }, {
4993
5081
  key: "muteVideo",
4994
5082
  value: function muteVideo() {
4995
- var _this26 = this;
5083
+ var _this27 = this;
4996
5084
  if (!_util2.default.isUserInJoinedState(this.locusInfo)) {
4997
5085
  return _promise.default.reject(new _webexErrors.UserNotJoinedError());
4998
5086
  }
@@ -5006,22 +5094,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5006
5094
  return _promise.default.reject(new _parameter.default('no video control associated to the meeting'));
5007
5095
  }
5008
5096
  return logRequest(this.video.handleClientRequest(this, true).then(function () {
5009
- _util2.default.handleVideoLogging(_this26.mediaProperties.videoStream);
5097
+ _util2.default.handleVideoLogging(_this27.mediaProperties.videoStream);
5010
5098
  // @ts-ignore
5011
- _this26.webex.internal.newMetrics.submitClientEvent({
5099
+ _this27.webex.internal.newMetrics.submitClientEvent({
5012
5100
  name: 'client.muted',
5013
5101
  payload: {
5014
5102
  trigger: 'user-interaction',
5015
5103
  mediaType: 'video'
5016
5104
  },
5017
5105
  options: {
5018
- meetingId: _this26.id
5106
+ meetingId: _this27.id
5019
5107
  }
5020
5108
  });
5021
5109
  }).catch(function (error) {
5022
5110
  _metrics.default.sendBehavioralMetric(_constants2.default.MUTE_VIDEO_FAILURE, {
5023
- correlation_id: _this26.correlationId,
5024
- locus_id: _this26.locusUrl.split('/').pop(),
5111
+ correlation_id: _this27.correlationId,
5112
+ locus_id: _this27.locusUrl.split('/').pop(),
5025
5113
  reason: error.message,
5026
5114
  stack: error.stack
5027
5115
  });
@@ -5040,7 +5128,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5040
5128
  }, {
5041
5129
  key: "unmuteVideo",
5042
5130
  value: function unmuteVideo() {
5043
- var _this27 = this;
5131
+ var _this28 = this;
5044
5132
  if (!_util2.default.isUserInJoinedState(this.locusInfo)) {
5045
5133
  return _promise.default.reject(new _webexErrors.UserNotJoinedError());
5046
5134
  }
@@ -5054,22 +5142,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5054
5142
  return _promise.default.reject(new _parameter.default('no audio control associated to the meeting'));
5055
5143
  }
5056
5144
  return logRequest(this.video.handleClientRequest(this, false).then(function () {
5057
- _util2.default.handleVideoLogging(_this27.mediaProperties.videoStream);
5145
+ _util2.default.handleVideoLogging(_this28.mediaProperties.videoStream);
5058
5146
  // @ts-ignore
5059
- _this27.webex.internal.newMetrics.submitClientEvent({
5147
+ _this28.webex.internal.newMetrics.submitClientEvent({
5060
5148
  name: 'client.unmuted',
5061
5149
  payload: {
5062
5150
  trigger: 'user-interaction',
5063
5151
  mediaType: 'video'
5064
5152
  },
5065
5153
  options: {
5066
- meetingId: _this27.id
5154
+ meetingId: _this28.id
5067
5155
  }
5068
5156
  });
5069
5157
  }).catch(function (error) {
5070
5158
  _metrics.default.sendBehavioralMetric(_constants2.default.UNMUTE_VIDEO_FAILURE, {
5071
- correlation_id: _this27.correlationId,
5072
- locus_id: _this27.locusUrl.split('/').pop(),
5159
+ correlation_id: _this28.correlationId,
5160
+ locus_id: _this28.locusUrl.split('/').pop(),
5073
5161
  reason: error.message,
5074
5162
  stack: error.stack
5075
5163
  });
@@ -5099,7 +5187,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5099
5187
  key: "joinWithMedia",
5100
5188
  value: (function () {
5101
5189
  var _joinWithMedia = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee15() {
5102
- var _this28 = this;
5190
+ var _this29 = this;
5103
5191
  var options,
5104
5192
  mediaOptions,
5105
5193
  _options$joinOptions,
@@ -5139,34 +5227,30 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5139
5227
  _context15.prev = 9;
5140
5228
  forceTurnDiscovery = false;
5141
5229
  if (joinResponse) {
5142
- _context15.next = 36;
5230
+ _context15.next = 33;
5143
5231
  break;
5144
5232
  }
5145
5233
  _context15.next = 14;
5146
- return this.webex.meetings.reachability.getReachabilityResults();
5147
- case 14:
5148
- joinOptions.reachability = _context15.sent;
5149
- _context15.next = 17;
5150
5234
  return this.roap.generateTurnDiscoveryRequestMessage(this, true);
5151
- case 17:
5235
+ case 14:
5152
5236
  turnDiscoveryRequest = _context15.sent;
5153
5237
  turnDiscoverySkippedReason = turnDiscoveryRequest.turnDiscoverySkippedReason;
5154
5238
  joinOptions.roapMessage = turnDiscoveryRequest.roapMessage;
5155
5239
  _loggerProxy.default.logger.info('Meeting:index#joinWithMedia ---> calling join with joinOptions, ', joinOptions);
5156
- _context15.next = 23;
5240
+ _context15.next = 20;
5157
5241
  return this.join(joinOptions);
5158
- case 23:
5242
+ case 20:
5159
5243
  joinResponse = _context15.sent;
5160
5244
  joined = true;
5161
5245
 
5162
5246
  // if we sent out TURN discovery Roap message with join, process the TURN discovery response
5163
5247
  if (!joinOptions.roapMessage) {
5164
- _context15.next = 34;
5248
+ _context15.next = 31;
5165
5249
  break;
5166
5250
  }
5167
- _context15.next = 28;
5251
+ _context15.next = 25;
5168
5252
  return this.roap.handleTurnDiscoveryHttpResponse(this, joinResponse);
5169
- case 28:
5253
+ case 25:
5170
5254
  _yield$this$roap$hand = _context15.sent;
5171
5255
  turnServerInfo = _yield$this$roap$hand.turnServerInfo;
5172
5256
  turnDiscoverySkippedReason = _yield$this$roap$hand.turnDiscoverySkippedReason;
@@ -5175,20 +5259,20 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5175
5259
  if (turnServerInfo === undefined) {
5176
5260
  this.roap.abortTurnDiscovery();
5177
5261
  }
5178
- case 34:
5179
- _context15.next = 38;
5262
+ case 31:
5263
+ _context15.next = 35;
5180
5264
  break;
5181
- case 36:
5265
+ case 33:
5182
5266
  // This is a retry, when join succeeded but addMedia failed, so we'll just call addMedia() again,
5183
5267
  // but we need to ensure that it also does a new TURN discovery
5184
5268
  forceTurnDiscovery = true;
5185
5269
  joined = true;
5186
- case 38:
5187
- _context15.next = 40;
5270
+ case 35:
5271
+ _context15.next = 37;
5188
5272
  return this.addMediaInternal(function () {
5189
- return _this28.joinWithMediaRetryInfo.isRetry ? 'JOIN_MEETING_FINAL' : 'JOIN_MEETING_RETRY';
5273
+ return _this29.joinWithMediaRetryInfo.isRetry ? 'JOIN_MEETING_FINAL' : 'JOIN_MEETING_RETRY';
5190
5274
  }, turnServerInfo, forceTurnDiscovery, mediaOptions);
5191
- case 40:
5275
+ case 37:
5192
5276
  mediaResponse = _context15.sent;
5193
5277
  this.joinWithMediaRetryInfo = {
5194
5278
  isRetry: false,
@@ -5198,30 +5282,30 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5198
5282
  join: joinResponse,
5199
5283
  media: mediaResponse
5200
5284
  });
5201
- case 45:
5202
- _context15.prev = 45;
5285
+ case 42:
5286
+ _context15.prev = 42;
5203
5287
  _context15.t0 = _context15["catch"](9);
5204
5288
  _loggerProxy.default.logger.error('Meeting:index#joinWithMedia --> ', _context15.t0);
5205
5289
  this.roap.abortTurnDiscovery();
5206
5290
  if (!(joined && isRetry)) {
5207
- _context15.next = 59;
5291
+ _context15.next = 56;
5208
5292
  break;
5209
5293
  }
5210
- _context15.prev = 50;
5211
- _context15.next = 53;
5294
+ _context15.prev = 47;
5295
+ _context15.next = 50;
5212
5296
  return this.leave({
5213
5297
  resourceId: joinOptions === null || joinOptions === void 0 ? void 0 : joinOptions.resourceId,
5214
5298
  reason: 'joinWithMedia failure'
5215
5299
  });
5216
- case 53:
5217
- _context15.next = 59;
5300
+ case 50:
5301
+ _context15.next = 56;
5218
5302
  break;
5219
- case 55:
5220
- _context15.prev = 55;
5221
- _context15.t1 = _context15["catch"](50);
5303
+ case 52:
5304
+ _context15.prev = 52;
5305
+ _context15.t1 = _context15["catch"](47);
5222
5306
  _loggerProxy.default.logger.error('Meeting:index#joinWithMedia --> leave error', _context15.t1);
5223
5307
  leaveError = _context15.t1;
5224
- case 59:
5308
+ case 56:
5225
5309
  _metrics.default.sendBehavioralMetric(_constants2.default.JOIN_WITH_MEDIA_FAILURE, {
5226
5310
  correlation_id: this.correlationId,
5227
5311
  locus_id: (_this$locusUrl = this.locusUrl) === null || _this$locusUrl === void 0 ? void 0 : _this$locusUrl.split('/').pop(),
@@ -5242,24 +5326,24 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5242
5326
  shouldRetry = false;
5243
5327
  }
5244
5328
  if (!shouldRetry) {
5245
- _context15.next = 67;
5329
+ _context15.next = 64;
5246
5330
  break;
5247
5331
  }
5248
5332
  _loggerProxy.default.logger.warn('Meeting:index#joinWithMedia --> retrying call to joinWithMedia');
5249
5333
  this.joinWithMediaRetryInfo.isRetry = true;
5250
5334
  this.joinWithMediaRetryInfo.prevJoinResponse = joinResponse;
5251
5335
  return _context15.abrupt("return", this.joinWithMedia(options));
5252
- case 67:
5336
+ case 64:
5253
5337
  this.joinWithMediaRetryInfo = {
5254
5338
  isRetry: false,
5255
5339
  prevJoinResponse: undefined
5256
5340
  };
5257
5341
  throw _context15.t0;
5258
- case 69:
5342
+ case 66:
5259
5343
  case "end":
5260
5344
  return _context15.stop();
5261
5345
  }
5262
- }, _callee15, this, [[9, 45], [50, 55]]);
5346
+ }, _callee15, this, [[9, 42], [47, 52]]);
5263
5347
  }));
5264
5348
  function joinWithMedia() {
5265
5349
  return _joinWithMedia.apply(this, arguments);
@@ -5278,7 +5362,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5278
5362
  }, {
5279
5363
  key: "reconnect",
5280
5364
  value: function reconnect(options) {
5281
- var _this29 = this;
5365
+ var _this30 = this;
5282
5366
  _loggerProxy.default.logger.log("Meeting:index#reconnect --> attempting to reconnect meeting ".concat(this.id));
5283
5367
  if (!this.reconnectionManager || !this.reconnectionManager.reconnect) {
5284
5368
  return _promise.default.reject(new _parameter.default('Cannot reconnect, ReconnectionManager must first be defined.'));
@@ -5288,15 +5372,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5288
5372
  if (!_util2.default.isMediaEstablished(this.currentMediaStatus)) {
5289
5373
  return _promise.default.reject(new _parameter.default('Cannot reconnect, Media has not established to reconnect'));
5290
5374
  }
5375
+ this.cleanUpBeforeReconnection();
5291
5376
  return this.reconnectionManager.reconnect(options, /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee16() {
5292
5377
  return _regenerator.default.wrap(function _callee16$(_context16) {
5293
5378
  while (1) switch (_context16.prev = _context16.next) {
5294
5379
  case 0:
5295
5380
  _context16.next = 2;
5296
- return _this29.waitForRemoteSDPAnswer();
5381
+ return _this30.waitForRemoteSDPAnswer();
5297
5382
  case 2:
5298
5383
  _context16.next = 4;
5299
- return _this29.waitForMediaConnectionConnected();
5384
+ return _this30.waitForMediaConnectionConnected();
5300
5385
  case 4:
5301
5386
  case "end":
5302
5387
  return _context16.stop();
@@ -5310,7 +5395,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5310
5395
  return _promise.default.resolve();
5311
5396
  }
5312
5397
  _loggerProxy.default.logger.error('Meeting:index#reconnect --> Meeting reconnect failed', error);
5313
- _this29.uploadLogs({
5398
+ _this30.uploadLogs({
5314
5399
  file: 'meeting/index',
5315
5400
  function: 'reconnect'
5316
5401
  });
@@ -5357,19 +5442,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5357
5442
  }, {
5358
5443
  key: "setCaptionLanguage",
5359
5444
  value: function setCaptionLanguage(language) {
5360
- var _this30 = this;
5445
+ var _this31 = this;
5361
5446
  return new _promise.default(function (resolve, reject) {
5362
- if (!_this30.isTranscriptionSupported()) {
5447
+ if (!_this31.isTranscriptionSupported()) {
5363
5448
  _loggerProxy.default.logger.error('Meeting:index#setCaptionLanguage --> Webex Assistant is not enabled/supported');
5364
5449
  reject(new Error('Webex Assistant is not enabled/supported'));
5365
5450
  }
5366
5451
  try {
5367
5452
  var voiceaListenerCaptionUpdate = function voiceaListenerCaptionUpdate(payload) {
5368
5453
  // @ts-ignore
5369
- _this30.webex.internal.voicea.off(_internalPluginVoicea.EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, voiceaListenerCaptionUpdate);
5454
+ _this31.webex.internal.voicea.off(_internalPluginVoicea.EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, voiceaListenerCaptionUpdate);
5370
5455
  var statusCode = payload.statusCode;
5371
5456
  if (statusCode === 200) {
5372
- _this30.transcription.languageOptions = _objectSpread(_objectSpread({}, _this30.transcription.languageOptions), {}, {
5457
+ _this31.transcription.languageOptions = _objectSpread(_objectSpread({}, _this31.transcription.languageOptions), {}, {
5373
5458
  currentCaptionLanguage: language
5374
5459
  });
5375
5460
  resolve(language);
@@ -5378,9 +5463,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5378
5463
  }
5379
5464
  };
5380
5465
  // @ts-ignore
5381
- _this30.webex.internal.voicea.on(_internalPluginVoicea.EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, voiceaListenerCaptionUpdate);
5466
+ _this31.webex.internal.voicea.on(_internalPluginVoicea.EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, voiceaListenerCaptionUpdate);
5382
5467
  // @ts-ignore
5383
- _this30.webex.internal.voicea.requestLanguage(language);
5468
+ _this31.webex.internal.voicea.requestLanguage(language);
5384
5469
  } catch (error) {
5385
5470
  _loggerProxy.default.logger.error("Meeting:index#setCaptionLanguage --> ".concat(error));
5386
5471
  reject(error);
@@ -5396,23 +5481,23 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5396
5481
  }, {
5397
5482
  key: "setSpokenLanguage",
5398
5483
  value: function setSpokenLanguage(language) {
5399
- var _this31 = this;
5484
+ var _this32 = this;
5400
5485
  return new _promise.default(function (resolve, reject) {
5401
- if (!_this31.isTranscriptionSupported()) {
5486
+ if (!_this32.isTranscriptionSupported()) {
5402
5487
  _loggerProxy.default.logger.error('Meeting:index#setCaptionLanguage --> Webex Assistant is not enabled/supported');
5403
5488
  reject(new Error('Webex Assistant is not enabled/supported'));
5404
5489
  }
5405
- if (_this31.getCurUserType() !== 'host') {
5490
+ if (_this32.getCurUserType() !== 'host') {
5406
5491
  _loggerProxy.default.logger.error('Meeting:index#setSpokenLanguage --> Only host can set spoken language');
5407
5492
  reject(new Error('Only host can set spoken language'));
5408
5493
  }
5409
5494
  try {
5410
5495
  var voiceaListenerLanguageUpdate = function voiceaListenerLanguageUpdate(payload) {
5411
5496
  // @ts-ignore
5412
- _this31.webex.internal.voicea.off(_internalPluginVoicea.EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE, voiceaListenerLanguageUpdate);
5497
+ _this32.webex.internal.voicea.off(_internalPluginVoicea.EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE, voiceaListenerLanguageUpdate);
5413
5498
  var languageCode = payload.languageCode;
5414
5499
  if (languageCode) {
5415
- _this31.transcription.languageOptions = _objectSpread(_objectSpread({}, _this31.transcription.languageOptions), {}, {
5500
+ _this32.transcription.languageOptions = _objectSpread(_objectSpread({}, _this32.transcription.languageOptions), {}, {
5416
5501
  currentSpokenLanguage: languageCode
5417
5502
  });
5418
5503
  resolve(languageCode);
@@ -5422,10 +5507,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5422
5507
  };
5423
5508
 
5424
5509
  // @ts-ignore
5425
- _this31.webex.internal.voicea.on(_internalPluginVoicea.EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE, voiceaListenerLanguageUpdate);
5510
+ _this32.webex.internal.voicea.on(_internalPluginVoicea.EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE, voiceaListenerLanguageUpdate);
5426
5511
 
5427
5512
  // @ts-ignore
5428
- _this31.webex.internal.voicea.setSpokenLanguage(language);
5513
+ _this32.webex.internal.voicea.setSpokenLanguage(language);
5429
5514
  } catch (error) {
5430
5515
  _loggerProxy.default.logger.error("Meeting:index#setSpokenLanguage --> ".concat(error));
5431
5516
  reject(error);
@@ -5545,7 +5630,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5545
5630
  */
5546
5631
  function () {
5547
5632
  var _join = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee18() {
5548
- var _this32 = this;
5633
+ var _this33 = this;
5549
5634
  var options,
5550
5635
  errorMessage,
5551
5636
  error,
@@ -5691,62 +5776,62 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5691
5776
  return _context18.abrupt("return", _promise.default.reject(_context18.t0));
5692
5777
  case 51:
5693
5778
  return _context18.abrupt("return", _util2.default.joinMeetingOptions(this, options).then(function (join) {
5694
- _this32.meetingFiniteStateMachine.join();
5695
- _this32.setupLocusMediaRequest();
5779
+ _this33.meetingFiniteStateMachine.join();
5780
+ _this33.setupLocusMediaRequest();
5696
5781
 
5697
5782
  // @ts-ignore
5698
- _this32.webex.internal.device.meetingStarted();
5699
- (0, _classPrivateFieldSet2.default)(_this32, _isoLocalClientMeetingJoinTime, new Date().toISOString());
5783
+ _this33.webex.internal.device.meetingStarted();
5784
+ (0, _classPrivateFieldSet2.default)(_this33, _isoLocalClientMeetingJoinTime, new Date().toISOString());
5700
5785
  _loggerProxy.default.logger.log('Meeting:index#join --> Success');
5701
5786
  _metrics.default.sendBehavioralMetric(_constants2.default.JOIN_SUCCESS, {
5702
- correlation_id: _this32.correlationId
5787
+ correlation_id: _this33.correlationId
5703
5788
  });
5704
5789
  joinSuccess(join);
5705
- _this32.deferJoin = undefined;
5790
+ _this33.deferJoin = undefined;
5706
5791
  return join;
5707
5792
  }).catch(function (error) {
5708
- var _this32$meetingInfo, _error$error;
5709
- _this32.meetingFiniteStateMachine.fail(error);
5793
+ var _this33$meetingInfo, _error$error;
5794
+ _this33.meetingFiniteStateMachine.fail(error);
5710
5795
  _loggerProxy.default.logger.error('Meeting:index#join --> Failed', error);
5711
5796
 
5712
5797
  // @ts-ignore
5713
- _this32.webex.internal.newMetrics.submitClientEvent({
5798
+ _this33.webex.internal.newMetrics.submitClientEvent({
5714
5799
  name: 'client.locus.join.response',
5715
5800
  payload: {
5716
5801
  identifiers: {
5717
- meetingLookupUrl: (_this32$meetingInfo = _this32.meetingInfo) === null || _this32$meetingInfo === void 0 ? void 0 : _this32$meetingInfo.meetingLookupUrl
5802
+ meetingLookupUrl: (_this33$meetingInfo = _this33.meetingInfo) === null || _this33$meetingInfo === void 0 ? void 0 : _this33$meetingInfo.meetingLookupUrl
5718
5803
  }
5719
5804
  },
5720
5805
  options: {
5721
- meetingId: _this32.id,
5806
+ meetingId: _this33.id,
5722
5807
  rawError: error
5723
5808
  }
5724
5809
  });
5725
5810
 
5726
5811
  // TODO: change this to error codes and pre defined dictionary
5727
5812
  _metrics.default.sendBehavioralMetric(_constants2.default.JOIN_FAILURE, {
5728
- correlation_id: _this32.correlationId,
5813
+ correlation_id: _this33.correlationId,
5729
5814
  reason: (_error$error = error.error) === null || _error$error === void 0 ? void 0 : _error$error.message,
5730
5815
  stack: error.stack
5731
5816
  });
5732
5817
 
5733
5818
  // Upload logs on join Failure
5734
- _triggerProxy.default.trigger(_this32, {
5819
+ _triggerProxy.default.trigger(_this33, {
5735
5820
  file: 'meeting/index',
5736
5821
  function: 'join'
5737
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this32);
5822
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this33);
5738
5823
  joinFailed(error);
5739
- _this32.deferJoin = undefined;
5824
+ _this33.deferJoin = undefined;
5740
5825
  return _promise.default.reject(error);
5741
5826
  }).then(function (join) {
5742
5827
  // @ts-ignore - config coming from registerPlugin
5743
- if (_this32.config.enableAutomaticLLM) {
5828
+ if (_this33.config.enableAutomaticLLM) {
5744
5829
  // @ts-ignore
5745
- _this32.webex.internal.llm.on('online', _this32.handleLLMOnline);
5746
- _this32.updateLLMConnection().catch(function (error) {
5830
+ _this33.webex.internal.llm.on('online', _this33.handleLLMOnline);
5831
+ _this33.updateLLMConnection().catch(function (error) {
5747
5832
  _loggerProxy.default.logger.error('Meeting:index#join --> Transcription Socket Connection Failed', error);
5748
5833
  _metrics.default.sendBehavioralMetric(_constants2.default.LLM_CONNECTION_AFTER_JOIN_FAILURE, {
5749
- correlation_id: _this32.correlationId,
5834
+ correlation_id: _this33.correlationId,
5750
5835
  reason: error === null || error === void 0 ? void 0 : error.message,
5751
5836
  stack: error.stack
5752
5837
  });
@@ -5778,7 +5863,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5778
5863
  key: "updateLLMConnection",
5779
5864
  value: (function () {
5780
5865
  var _updateLLMConnection = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee19() {
5781
- var _this33 = this;
5866
+ var _this34 = this;
5782
5867
  var _this$locusInfo6, url, _this$locusInfo6$info, _this$locusInfo6$info2, datachannelUrl, isJoined;
5783
5868
  return _regenerator.default.wrap(function _callee19$(_context19) {
5784
5869
  while (1) switch (_context19.prev = _context19.next) {
@@ -5814,9 +5899,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5814
5899
  case 10:
5815
5900
  return _context19.abrupt("return", this.webex.internal.llm.registerAndConnect(url, datachannelUrl).then(function (registerAndConnectResult) {
5816
5901
  // @ts-ignore - Fix type
5817
- _this33.webex.internal.llm.off('event:relay.event', _this33.processRelayEvent);
5902
+ _this34.webex.internal.llm.off('event:relay.event', _this34.processRelayEvent);
5818
5903
  // @ts-ignore - Fix type
5819
- _this33.webex.internal.llm.on('event:relay.event', _this33.processRelayEvent);
5904
+ _this34.webex.internal.llm.on('event:relay.event', _this34.processRelayEvent);
5820
5905
  _loggerProxy.default.logger.info('Meeting:index#updateLLMConnection --> enabled to receive relay events!');
5821
5906
  return _promise.default.resolve(registerAndConnectResult);
5822
5907
  }));
@@ -5870,7 +5955,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5870
5955
  }, {
5871
5956
  key: "dialInPstn",
5872
5957
  value: function dialInPstn() {
5873
- var _this34 = this;
5958
+ var _this35 = this;
5874
5959
  if (this.isPhoneProvisioned(this.dialInDeviceStatus)) return _promise.default.resolve(); // prevent multiple dial in devices from being provisioned
5875
5960
 
5876
5961
  var correlationId = this.correlationId,
@@ -5886,10 +5971,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5886
5971
  }).catch(function (error) {
5887
5972
  var _error$error2;
5888
5973
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_DIAL_IN_FAILURE, {
5889
- correlation_id: _this34.correlationId,
5890
- dial_in_url: _this34.dialInUrl,
5974
+ correlation_id: _this35.correlationId,
5975
+ dial_in_url: _this35.dialInUrl,
5891
5976
  locus_id: locusUrl.split('/').pop(),
5892
- client_url: _this34.deviceUrl,
5977
+ client_url: _this35.deviceUrl,
5893
5978
  reason: (_error$error2 = error.error) === null || _error$error2 === void 0 ? void 0 : _error$error2.message,
5894
5979
  stack: error.stack
5895
5980
  });
@@ -5907,7 +5992,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5907
5992
  }, {
5908
5993
  key: "dialOutPstn",
5909
5994
  value: function dialOutPstn(phoneNumber) {
5910
- var _this35 = this;
5995
+ var _this36 = this;
5911
5996
  if (this.isPhoneProvisioned(this.dialOutDeviceStatus)) return _promise.default.resolve(); // prevent multiple dial out devices from being provisioned
5912
5997
 
5913
5998
  var correlationId = this.correlationId,
@@ -5924,10 +6009,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5924
6009
  }).catch(function (error) {
5925
6010
  var _error$error3;
5926
6011
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_DIAL_OUT_FAILURE, {
5927
- correlation_id: _this35.correlationId,
5928
- dial_out_url: _this35.dialOutUrl,
6012
+ correlation_id: _this36.correlationId,
6013
+ dial_out_url: _this36.dialOutUrl,
5929
6014
  locus_id: locusUrl.split('/').pop(),
5930
- client_url: _this35.deviceUrl,
6015
+ client_url: _this36.deviceUrl,
5931
6016
  reason: (_error$error3 = error.error) === null || _error$error3 === void 0 ? void 0 : _error$error3.message,
5932
6017
  stack: error.stack
5933
6018
  });
@@ -5958,7 +6043,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5958
6043
  }, {
5959
6044
  key: "moveTo",
5960
6045
  value: function moveTo(resourceId) {
5961
- var _this36 = this;
6046
+ var _this37 = this;
5962
6047
  if (!resourceId) {
5963
6048
  throw new _parameter.default('Cannot move call without a resourceId.');
5964
6049
  }
@@ -6002,12 +6087,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6002
6087
  while (1) switch (_context20.prev = _context20.next) {
6003
6088
  case 0:
6004
6089
  _context20.prev = 0;
6005
- if (!(_this36.screenShareFloorState === ScreenShareFloorStatus.GRANTED)) {
6090
+ if (!(_this37.screenShareFloorState === ScreenShareFloorStatus.GRANTED)) {
6006
6091
  _context20.next = 4;
6007
6092
  break;
6008
6093
  }
6009
6094
  _context20.next = 4;
6010
- return _this36.releaseScreenShareFloor();
6095
+ return _this37.releaseScreenShareFloor();
6011
6096
  case 4:
6012
6097
  mediaSettings = {
6013
6098
  mediaDirection: {
@@ -6019,37 +6104,37 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6019
6104
  receiveShare: true
6020
6105
  }
6021
6106
  };
6022
- _this36.mediaProperties.setMediaDirection(mediaSettings.mediaDirection);
6023
- _this36.mediaProperties.unsetRemoteMedia();
6107
+ _this37.mediaProperties.setMediaDirection(mediaSettings.mediaDirection);
6108
+ _this37.mediaProperties.unsetRemoteMedia();
6024
6109
 
6025
6110
  // 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
6026
6111
  // once the device answers we close the old connection and create new media server connection with only share enabled
6027
- if (!_this36.statsAnalyzer) {
6112
+ if (!_this37.statsAnalyzer) {
6028
6113
  _context20.next = 10;
6029
6114
  break;
6030
6115
  }
6031
6116
  _context20.next = 10;
6032
- return _this36.statsAnalyzer.stopAnalyzer();
6117
+ return _this37.statsAnalyzer.stopAnalyzer();
6033
6118
  case 10:
6034
6119
  _context20.next = 12;
6035
- return _this36.closeRemoteStreams();
6120
+ return _this37.closeRemoteStreams();
6036
6121
  case 12:
6037
6122
  _context20.next = 14;
6038
- return _this36.closePeerConnections();
6123
+ return _this37.closePeerConnections();
6039
6124
  case 14:
6040
- _this36.cleanupLocalStreams();
6041
- _this36.unsetRemoteStreams();
6042
- _this36.unsetPeerConnections();
6043
- _this36.reconnectionManager.cleanUp();
6125
+ _this37.cleanupLocalStreams();
6126
+ _this37.unsetRemoteStreams();
6127
+ _this37.unsetPeerConnections();
6128
+ _this37.reconnectionManager.cleanUp();
6044
6129
  _context20.next = 20;
6045
- return _this36.addMedia({
6130
+ return _this37.addMedia({
6046
6131
  audioEnabled: false,
6047
6132
  videoEnabled: false,
6048
6133
  shareVideoEnabled: true
6049
6134
  });
6050
6135
  case 20:
6051
6136
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_TO_SUCCESS);
6052
- _this36.isMoveToInProgress = false;
6137
+ _this37.isMoveToInProgress = false;
6053
6138
  _context20.next = 29;
6054
6139
  break;
6055
6140
  case 24:
@@ -6057,12 +6142,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6057
6142
  _context20.t0 = _context20["catch"](0);
6058
6143
  _loggerProxy.default.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId', _context20.t0);
6059
6144
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_TO_FAILURE, {
6060
- correlation_id: _this36.correlationId,
6061
- locus_id: _this36.locusUrl.split('/').pop(),
6145
+ correlation_id: _this37.correlationId,
6146
+ locus_id: _this37.locusUrl.split('/').pop(),
6062
6147
  reason: _context20.t0.message,
6063
6148
  stack: _context20.t0.stack
6064
6149
  });
6065
- _this36.isMoveToInProgress = false;
6150
+ _this37.isMoveToInProgress = false;
6066
6151
  case 29:
6067
6152
  case "end":
6068
6153
  return _context20.stop();
@@ -6078,17 +6163,17 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6078
6163
  resourceId: resourceId,
6079
6164
  moveToResource: true
6080
6165
  }).then(function () {
6081
- _this36.meetingFiniteStateMachine.join();
6166
+ _this37.meetingFiniteStateMachine.join();
6082
6167
  }).catch(function (error) {
6083
- _this36.meetingFiniteStateMachine.fail(error);
6168
+ _this37.meetingFiniteStateMachine.fail(error);
6084
6169
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_TO_FAILURE, {
6085
- correlation_id: _this36.correlationId,
6086
- locus_id: _this36.locusUrl.split('/').pop(),
6170
+ correlation_id: _this37.correlationId,
6171
+ locus_id: _this37.locusUrl.split('/').pop(),
6087
6172
  reason: error.message,
6088
6173
  stack: error.stack
6089
6174
  });
6090
6175
  _loggerProxy.default.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId', error);
6091
- _this36.isMoveToInProgress = false;
6176
+ _this37.isMoveToInProgress = false;
6092
6177
  return _promise.default.reject(error);
6093
6178
  });
6094
6179
  }
@@ -6103,7 +6188,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6103
6188
  }, {
6104
6189
  key: "moveFrom",
6105
6190
  value: function moveFrom(resourceId) {
6106
- var _this37 = this;
6191
+ var _this38 = this;
6107
6192
  // On moveFrom ask the developer to re capture it moveFrom then updateMedia
6108
6193
  if (!resourceId) {
6109
6194
  throw new _parameter.default('Cannot move call without a resourceId.');
@@ -6118,19 +6203,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6118
6203
  }
6119
6204
  });
6120
6205
  return _util2.default.joinMeetingOptions(this).then(function () {
6121
- return _util2.default.leaveMeeting(_this37, {
6206
+ return _util2.default.leaveMeeting(_this38, {
6122
6207
  resourceId: resourceId,
6123
6208
  correlationId: oldCorrelationId,
6124
6209
  moveMeeting: true
6125
6210
  }).then(function () {
6126
- _this37.resourceId = '';
6211
+ _this38.resourceId = '';
6127
6212
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_FROM_SUCCESS);
6128
6213
  });
6129
6214
  }).catch(function (error) {
6130
- _this37.meetingFiniteStateMachine.fail(error);
6215
+ _this38.meetingFiniteStateMachine.fail(error);
6131
6216
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_FROM_FAILURE, {
6132
- correlation_id: _this37.correlationId,
6133
- locus_id: _this37.locusUrl.split('/').pop(),
6217
+ correlation_id: _this38.correlationId,
6218
+ locus_id: _this38.locusUrl.split('/').pop(),
6134
6219
  reason: error.message,
6135
6220
  stack: error.stack
6136
6221
  });
@@ -6243,9 +6328,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6243
6328
  }, {
6244
6329
  key: "forwardEvent",
6245
6330
  value: function forwardEvent(eventEmitter, eventTypeToForward, meetingEventType) {
6246
- var _this38 = this;
6331
+ var _this39 = this;
6247
6332
  eventEmitter.on(eventTypeToForward, function (data) {
6248
- return _triggerProxy.default.trigger(_this38, {
6333
+ return _triggerProxy.default.trigger(_this39, {
6249
6334
  file: 'meetings',
6250
6335
  function: 'addMedia'
6251
6336
  }, meetingEventType, data);
@@ -6432,7 +6517,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6432
6517
  */
6433
6518
  function () {
6434
6519
  var _waitForRemoteSDPAnswer = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee24() {
6435
- var _this39 = this;
6520
+ var _this40 = this;
6436
6521
  var LOG_HEADER, deferSDPAnswer;
6437
6522
  return _regenerator.default.wrap(function _callee24$(_context24) {
6438
6523
  while (1) switch (_context24.prev = _context24.next) {
@@ -6449,18 +6534,18 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6449
6534
  this.sdpResponseTimer = setTimeout(function () {
6450
6535
  _loggerProxy.default.logger.warn("".concat(LOG_HEADER, " timeout! no REMOTE SDP ANSWER received within ").concat(_constants.ROAP_OFFER_ANSWER_EXCHANGE_TIMEOUT / 1000, " seconds"));
6451
6536
  // @ts-ignore
6452
- _this39.webex.internal.newMetrics.submitClientEvent({
6537
+ _this40.webex.internal.newMetrics.submitClientEvent({
6453
6538
  name: 'client.media-engine.remote-sdp-received',
6454
6539
  payload: {
6455
6540
  canProceed: false,
6456
6541
  errors: [
6457
6542
  // @ts-ignore
6458
- _this39.webex.internal.newMetrics.callDiagnosticMetrics.getErrorPayloadForClientErrorCode({
6543
+ _this40.webex.internal.newMetrics.callDiagnosticMetrics.getErrorPayloadForClientErrorCode({
6459
6544
  clientErrorCode: _internalPluginMetrics.CALL_DIAGNOSTIC_CONFIG.MISSING_ROAP_ANSWER_CLIENT_CODE
6460
6545
  })]
6461
6546
  },
6462
6547
  options: {
6463
- meetingId: _this39.id,
6548
+ meetingId: _this40.id,
6464
6549
  rawError: new Error('Timeout waiting for SDP answer')
6465
6550
  }
6466
6551
  });
@@ -6846,6 +6931,43 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6846
6931
  return _cleanUpBeforeRetryWithTurnServer.apply(this, arguments);
6847
6932
  }
6848
6933
  return cleanUpBeforeRetryWithTurnServer;
6934
+ }())
6935
+ }, {
6936
+ key: "cleanUpBeforeReconnection",
6937
+ value: function () {
6938
+ var _cleanUpBeforeReconnection = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee32() {
6939
+ return _regenerator.default.wrap(function _callee32$(_context32) {
6940
+ while (1) switch (_context32.prev = _context32.next) {
6941
+ case 0:
6942
+ _context32.prev = 0;
6943
+ _context32.next = 3;
6944
+ return this.forceSendStatsReport({
6945
+ callFrom: 'cleanUpBeforeReconnection'
6946
+ });
6947
+ case 3:
6948
+ if (!this.statsAnalyzer) {
6949
+ _context32.next = 6;
6950
+ break;
6951
+ }
6952
+ _context32.next = 6;
6953
+ return this.statsAnalyzer.stopAnalyzer();
6954
+ case 6:
6955
+ _context32.next = 11;
6956
+ break;
6957
+ case 8:
6958
+ _context32.prev = 8;
6959
+ _context32.t0 = _context32["catch"](0);
6960
+ _loggerProxy.default.logger.error('Meeting:index#cleanUpBeforeReconnection --> Error during cleanup: ', _context32.t0);
6961
+ case 11:
6962
+ case "end":
6963
+ return _context32.stop();
6964
+ }
6965
+ }, _callee32, this, [[0, 8]]);
6966
+ }));
6967
+ function cleanUpBeforeReconnection() {
6968
+ return _cleanUpBeforeReconnection.apply(this, arguments);
6969
+ }
6970
+ return cleanUpBeforeReconnection;
6849
6971
  }()
6850
6972
  /**
6851
6973
  * Creates an instance of LocusMediaRequest for this meeting - it is needed for doing any calls
@@ -6853,7 +6975,6 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6853
6975
  *
6854
6976
  * @returns {void}
6855
6977
  */
6856
- )
6857
6978
  }, {
6858
6979
  key: "setupLocusMediaRequest",
6859
6980
  value: function setupLocusMediaRequest() {
@@ -6888,10 +7009,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6888
7009
  }, {
6889
7010
  key: "addMedia",
6890
7011
  value: function addMedia() {
6891
- var _this40 = this;
7012
+ var _this41 = this;
6892
7013
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
6893
7014
  return this.addMediaInternal(function () {
6894
- return _this40.turnServerUsed ? 'JOIN_MEETING_FINAL' : 'JOIN_MEETING_RETRY';
7015
+ return _this41.turnServerUsed ? 'JOIN_MEETING_FINAL' : 'JOIN_MEETING_RETRY';
6895
7016
  }, undefined, false, options);
6896
7017
  }
6897
7018
 
@@ -6909,7 +7030,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6909
7030
  }, {
6910
7031
  key: "addMediaInternal",
6911
7032
  value: (function () {
6912
- var _addMediaInternal = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee32(icePhaseCallback, turnServerInfo, forceTurnDiscovery) {
7033
+ var _addMediaInternal = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee33(icePhaseCallback, turnServerInfo, forceTurnDiscovery) {
6913
7034
  var options,
6914
7035
  LOG_HEADER,
6915
7036
  localStreams,
@@ -6922,6 +7043,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6922
7043
  _options$shareVideoEn,
6923
7044
  shareVideoEnabled,
6924
7045
  remoteMediaManagerConfig,
7046
+ _options$bundlePolicy,
6925
7047
  bundlePolicy,
6926
7048
  _this$remoteMediaMana,
6927
7049
  _yield$this$mediaProp,
@@ -6956,35 +7078,35 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6956
7078
  _selectedCandidatePairChanges,
6957
7079
  _numTransports,
6958
7080
  _iceCandidateErrors,
6959
- _args32 = arguments;
6960
- return _regenerator.default.wrap(function _callee32$(_context32) {
6961
- while (1) switch (_context32.prev = _context32.next) {
7081
+ _args33 = arguments;
7082
+ return _regenerator.default.wrap(function _callee33$(_context33) {
7083
+ while (1) switch (_context33.prev = _context33.next) {
6962
7084
  case 0:
6963
- options = _args32.length > 3 && _args32[3] !== undefined ? _args32[3] : {};
7085
+ options = _args33.length > 3 && _args33[3] !== undefined ? _args33[3] : {};
6964
7086
  this.addMediaData.retriedWithTurnServer = false;
6965
7087
  this.addMediaData.icePhaseCallback = icePhaseCallback;
6966
7088
  this.hasMediaConnectionConnectedAtLeastOnce = false;
6967
7089
  LOG_HEADER = 'Meeting:index#addMedia -->';
6968
7090
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " called with: options=").concat((0, _stringify.default)(options), ", turnServerInfo=").concat((0, _stringify.default)(turnServerInfo), ", forceTurnDiscovery=").concat(forceTurnDiscovery));
6969
7091
  if (!(options.allowMediaInLobby !== true && this.meetingState !== _constants.FULL_STATE.ACTIVE)) {
6970
- _context32.next = 8;
7092
+ _context33.next = 8;
6971
7093
  break;
6972
7094
  }
6973
7095
  throw new _webexErrors.MeetingNotActiveError();
6974
7096
  case 8:
6975
7097
  if (!_util2.default.isUserInLeftState(this.locusInfo)) {
6976
- _context32.next = 10;
7098
+ _context33.next = 10;
6977
7099
  break;
6978
7100
  }
6979
7101
  throw new _webexErrors.UserNotJoinedError();
6980
7102
  case 10:
6981
- 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;
7103
+ 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;
6982
7104
  this.allowMediaInLobby = options === null || options === void 0 ? void 0 : options.allowMediaInLobby;
6983
7105
 
6984
7106
  // If the user is unjoined or guest waiting in lobby dont allow the user to addMedia
6985
7107
  // @ts-ignore - isUserUnadmitted coming from SelfUtil
6986
7108
  if (!(this.isUserUnadmitted && !this.wirelessShare && !this.allowMediaInLobby)) {
6987
- _context32.next = 14;
7109
+ _context33.next = 14;
6988
7110
  break;
6989
7111
  }
6990
7112
  throw new _webexErrors.UserInLobbyError();
@@ -7027,45 +7149,45 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7027
7149
  });
7028
7150
  this.audio = (0, _muteState.createMuteState)(_constants.AUDIO, this, audioEnabled);
7029
7151
  this.video = (0, _muteState.createMuteState)(_constants.VIDEO, this, videoEnabled);
7030
- _context32.prev = 18;
7031
- _context32.next = 21;
7152
+ _context33.prev = 18;
7153
+ _context33.next = 21;
7032
7154
  return this.setUpLocalStreamReferences(localStreams);
7033
7155
  case 21:
7034
7156
  this.setMercuryListener();
7035
7157
  this.createStatsAnalyzer();
7036
- _context32.next = 25;
7158
+ _context33.next = 25;
7037
7159
  return this.establishMediaConnection(remoteMediaManagerConfig, bundlePolicy, forceTurnDiscovery, turnServerInfo);
7038
7160
  case 25:
7039
7161
  if (!(audioEnabled || videoEnabled)) {
7040
- _context32.next = 30;
7162
+ _context33.next = 30;
7041
7163
  break;
7042
7164
  }
7043
- _context32.next = 28;
7165
+ _context33.next = 28;
7044
7166
  return Meeting.handleDeviceLogging(audioEnabled, videoEnabled);
7045
7167
  case 28:
7046
- _context32.next = 31;
7168
+ _context33.next = 31;
7047
7169
  break;
7048
7170
  case 30:
7049
7171
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " device logging not required"));
7050
7172
  case 31:
7051
7173
  if (!this.mediaProperties.hasLocalShareStream()) {
7052
- _context32.next = 34;
7174
+ _context33.next = 34;
7053
7175
  break;
7054
7176
  }
7055
- _context32.next = 34;
7177
+ _context33.next = 34;
7056
7178
  return this.enqueueScreenShareFloorRequest();
7057
7179
  case 34:
7058
- _context32.next = 36;
7180
+ _context33.next = 36;
7059
7181
  return this.mediaProperties.getCurrentConnectionInfo();
7060
7182
  case 36:
7061
- _yield$this$mediaProp = _context32.sent;
7183
+ _yield$this$mediaProp = _context33.sent;
7062
7184
  connectionType = _yield$this$mediaProp.connectionType;
7063
7185
  selectedCandidatePairChanges = _yield$this$mediaProp.selectedCandidatePairChanges;
7064
7186
  numTransports = _yield$this$mediaProp.numTransports;
7065
- _context32.next = 42;
7187
+ _context33.next = 42;
7066
7188
  return this.webex.meetings.reachability.getReachabilityMetrics();
7067
7189
  case 42:
7068
- reachabilityStats = _context32.sent;
7190
+ reachabilityStats = _context33.sent;
7069
7191
  iceCandidateErrors = Object.fromEntries(this.iceCandidateErrors);
7070
7192
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_MEDIA_SUCCESS, _objectSpread(_objectSpread(_objectSpread({
7071
7193
  correlation_id: this.correlationId,
@@ -7090,31 +7212,31 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7090
7212
 
7091
7213
  // We can log ReceiveSlot SSRCs only after the SDP exchange, so doing it here:
7092
7214
  (_this$remoteMediaMana = this.remoteMediaManager) === null || _this$remoteMediaMana === void 0 ? void 0 : _this$remoteMediaMana.logAllReceiveSlots();
7093
- _context32.next = 68;
7215
+ _context33.next = 68;
7094
7216
  break;
7095
7217
  case 50:
7096
- _context32.prev = 50;
7097
- _context32.t0 = _context32["catch"](18);
7098
- _loggerProxy.default.logger.error("".concat(LOG_HEADER, " failed to establish media connection: "), _context32.t0);
7218
+ _context33.prev = 50;
7219
+ _context33.t0 = _context33["catch"](18);
7220
+ _loggerProxy.default.logger.error("".concat(LOG_HEADER, " failed to establish media connection: "), _context33.t0);
7099
7221
 
7100
7222
  // @ts-ignore
7101
- _context32.next = 55;
7223
+ _context33.next = 55;
7102
7224
  return this.webex.meetings.reachability.getReachabilityMetrics();
7103
7225
  case 55:
7104
- reachabilityMetrics = _context32.sent;
7105
- _context32.next = 58;
7226
+ reachabilityMetrics = _context33.sent;
7227
+ _context33.next = 58;
7106
7228
  return this.mediaProperties.getCurrentConnectionInfo();
7107
7229
  case 58:
7108
- _yield$this$mediaProp2 = _context32.sent;
7230
+ _yield$this$mediaProp2 = _context33.sent;
7109
7231
  _selectedCandidatePairChanges = _yield$this$mediaProp2.selectedCandidatePairChanges;
7110
7232
  _numTransports = _yield$this$mediaProp2.numTransports;
7111
7233
  _iceCandidateErrors = Object.fromEntries(this.iceCandidateErrors);
7112
7234
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_MEDIA_FAILURE, _objectSpread(_objectSpread(_objectSpread({
7113
7235
  correlation_id: this.correlationId,
7114
7236
  locus_id: this.locusUrl.split('/').pop(),
7115
- reason: _context32.t0.message,
7116
- stack: _context32.t0.stack,
7117
- code: _context32.t0.code,
7237
+ reason: _context33.t0.message,
7238
+ stack: _context33.t0.stack,
7239
+ code: _context33.t0.code,
7118
7240
  selectedCandidatePairChanges: _selectedCandidatePairChanges,
7119
7241
  numTransports: _numTransports,
7120
7242
  turnDiscoverySkippedReason: this.turnDiscoverySkippedReason,
@@ -7128,7 +7250,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7128
7250
  }, reachabilityMetrics), _iceCandidateErrors), {}, {
7129
7251
  iceCandidatesCount: this.iceCandidatesCount
7130
7252
  }));
7131
- _context32.next = 65;
7253
+ _context33.next = 65;
7132
7254
  return this.cleanUpOnAddMediaFailure();
7133
7255
  case 65:
7134
7256
  // Upload logs on error while adding media
@@ -7136,21 +7258,21 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7136
7258
  file: 'meeting/index',
7137
7259
  function: 'addMedia'
7138
7260
  }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, this);
7139
- if (_context32.t0 instanceof _internalMediaCore.Errors.SdpError) {
7261
+ if (_context33.t0 instanceof _internalMediaCore.Errors.SdpError) {
7140
7262
  this.leave({
7141
7263
  reason: _constants.MEETING_REMOVED_REASON.MEETING_CONNECTION_FAILED
7142
7264
  });
7143
7265
  }
7144
- throw _context32.t0;
7266
+ throw _context33.t0;
7145
7267
  case 68:
7146
- _context32.prev = 68;
7268
+ _context33.prev = 68;
7147
7269
  this.addMediaData.icePhaseCallback = DEFAULT_ICE_PHASE_CALLBACK;
7148
- return _context32.finish(68);
7270
+ return _context33.finish(68);
7149
7271
  case 71:
7150
7272
  case "end":
7151
- return _context32.stop();
7273
+ return _context33.stop();
7152
7274
  }
7153
- }, _callee32, this, [[18, 50, 68, 71]]);
7275
+ }, _callee33, this, [[18, 50, 68, 71]]);
7154
7276
  }));
7155
7277
  function addMediaInternal(_x32, _x33, _x34) {
7156
7278
  return _addMediaInternal.apply(this, arguments);
@@ -7182,7 +7304,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7182
7304
  * @memberof Meeting
7183
7305
  */
7184
7306
  function enqueueMediaUpdate(mediaUpdateType) {
7185
- var _this41 = this;
7307
+ var _this42 = this;
7186
7308
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
7187
7309
  var canUpdateMediaNow = this.canUpdateMedia();
7188
7310
  return new _promise.default(function (resolve, reject) {
@@ -7193,9 +7315,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7193
7315
  options: options
7194
7316
  };
7195
7317
  _loggerProxy.default.logger.log("Meeting:index#enqueueMediaUpdate --> enqueuing media update type=".concat(mediaUpdateType));
7196
- _this41.queuedMediaUpdates.push(queueItem);
7318
+ _this42.queuedMediaUpdates.push(queueItem);
7197
7319
  if (canUpdateMediaNow) {
7198
- _this41.processNextQueuedMediaUpdate();
7320
+ _this42.processNextQueuedMediaUpdate();
7199
7321
  }
7200
7322
  });
7201
7323
  }
@@ -7218,35 +7340,35 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7218
7340
  * @memberof Meeting
7219
7341
  */
7220
7342
  function () {
7221
- var _updateMedia = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee33(options) {
7343
+ var _updateMedia = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee34(options) {
7222
7344
  var audioEnabled, videoEnabled, shareAudioEnabled, shareVideoEnabled, _this$audio3, _this$video3;
7223
- return _regenerator.default.wrap(function _callee33$(_context33) {
7224
- while (1) switch (_context33.prev = _context33.next) {
7345
+ return _regenerator.default.wrap(function _callee34$(_context34) {
7346
+ while (1) switch (_context34.prev = _context34.next) {
7225
7347
  case 0:
7226
7348
  this.checkMediaConnection();
7227
7349
  audioEnabled = options.audioEnabled, videoEnabled = options.videoEnabled, shareAudioEnabled = options.shareAudioEnabled, shareVideoEnabled = options.shareVideoEnabled;
7228
7350
  _loggerProxy.default.logger.log("Meeting:index#updateMedia --> called with options=".concat((0, _stringify.default)(options)));
7229
7351
  if (this.canUpdateMedia()) {
7230
- _context33.next = 5;
7352
+ _context34.next = 5;
7231
7353
  break;
7232
7354
  }
7233
- return _context33.abrupt("return", this.enqueueMediaUpdate(MEDIA_UPDATE_TYPE.UPDATE_MEDIA, options));
7355
+ return _context34.abrupt("return", this.enqueueMediaUpdate(MEDIA_UPDATE_TYPE.UPDATE_MEDIA, options));
7234
7356
  case 5:
7235
7357
  if (!this.isMultistream) {
7236
- _context33.next = 10;
7358
+ _context34.next = 10;
7237
7359
  break;
7238
7360
  }
7239
7361
  if (!(shareAudioEnabled !== undefined || shareVideoEnabled !== undefined)) {
7240
- _context33.next = 8;
7362
+ _context34.next = 8;
7241
7363
  break;
7242
7364
  }
7243
7365
  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');
7244
7366
  case 8:
7245
- _context33.next = 12;
7367
+ _context34.next = 12;
7246
7368
  break;
7247
7369
  case 10:
7248
7370
  if (!(shareAudioEnabled !== undefined)) {
7249
- _context33.next = 12;
7371
+ _context34.next = 12;
7250
7372
  break;
7251
7373
  }
7252
7374
  throw new Error('toggling shareAudioEnabled in a transcoded meeting is not supported as of now');
@@ -7271,18 +7393,18 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7271
7393
  this.mediaProperties.mediaDirection.receiveShare = !!(shareAudioEnabled || shareVideoEnabled);
7272
7394
  }
7273
7395
  if (this.isMultistream) {
7274
- _context33.next = 18;
7396
+ _context34.next = 18;
7275
7397
  break;
7276
7398
  }
7277
- _context33.next = 18;
7399
+ _context34.next = 18;
7278
7400
  return this.updateTranscodedMediaConnection();
7279
7401
  case 18:
7280
- return _context33.abrupt("return", undefined);
7402
+ return _context34.abrupt("return", undefined);
7281
7403
  case 19:
7282
7404
  case "end":
7283
- return _context33.stop();
7405
+ return _context34.stop();
7284
7406
  }
7285
- }, _callee33, this);
7407
+ }, _callee34, this);
7286
7408
  }));
7287
7409
  function updateMedia(_x35) {
7288
7410
  return _updateMedia.apply(this, arguments);
@@ -7300,7 +7422,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7300
7422
  }, {
7301
7423
  key: "acknowledge",
7302
7424
  value: function acknowledge(type) {
7303
- var _this42 = this;
7425
+ var _this43 = this;
7304
7426
  if (!type) {
7305
7427
  return _promise.default.reject(new _parameter.default('Type must be set to acknowledge the meeting.'));
7306
7428
  }
@@ -7312,12 +7434,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7312
7434
  }).then(function (response) {
7313
7435
  return _promise.default.resolve(response);
7314
7436
  }).then(function (response) {
7315
- _this42.meetingFiniteStateMachine.ring(type);
7437
+ _this43.meetingFiniteStateMachine.ring(type);
7316
7438
  // @ts-ignore
7317
- _this42.webex.internal.newMetrics.submitClientEvent({
7439
+ _this43.webex.internal.newMetrics.submitClientEvent({
7318
7440
  name: 'client.alert.displayed',
7319
7441
  options: {
7320
- meetingId: _this42.id
7442
+ meetingId: _this43.id
7321
7443
  }
7322
7444
  });
7323
7445
  return _promise.default.resolve({
@@ -7342,12 +7464,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7342
7464
  }, {
7343
7465
  key: "decline",
7344
7466
  value: function decline(reason) {
7345
- var _this43 = this;
7467
+ var _this44 = this;
7346
7468
  return _util2.default.declineMeeting(this, reason).then(function (decline) {
7347
- _this43.meetingFiniteStateMachine.decline();
7469
+ _this44.meetingFiniteStateMachine.decline();
7348
7470
  return _promise.default.resolve(decline);
7349
7471
  }).catch(function (error) {
7350
- _this43.meetingFiniteStateMachine.fail(error);
7472
+ _this44.meetingFiniteStateMachine.fail(error);
7351
7473
  return _promise.default.reject(error);
7352
7474
  });
7353
7475
  }
@@ -7398,7 +7520,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7398
7520
  }, {
7399
7521
  key: "leave",
7400
7522
  value: function leave() {
7401
- var _this44 = this;
7523
+ var _this45 = this;
7402
7524
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
7403
7525
  var leaveReason = options.reason || _constants.MEETING_REMOVED_REASON.CLIENT_LEAVE_REQUEST;
7404
7526
 
@@ -7410,7 +7532,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7410
7532
  var payload = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
7411
7533
  return (
7412
7534
  // @ts-ignore
7413
- _this44.webex.internal.newMetrics.submitClientEvent({
7535
+ _this45.webex.internal.newMetrics.submitClientEvent({
7414
7536
  name: 'client.call.leave',
7415
7537
  payload: _objectSpread({
7416
7538
  trigger: 'user-interaction',
@@ -7418,7 +7540,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7418
7540
  leaveReason: options.clientEventLeaveReason
7419
7541
  }, payload),
7420
7542
  options: {
7421
- meetingId: _this44.id
7543
+ meetingId: _this45.id
7422
7544
  }
7423
7545
  })
7424
7546
  );
@@ -7427,24 +7549,24 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7427
7549
  return _util2.default.leaveMeeting(this, options).then(function (leave) {
7428
7550
  // CA team recommends submitting this *after* locus /leave
7429
7551
  submitLeaveMetric();
7430
- _this44.meetingFiniteStateMachine.leave();
7431
- _this44.clearMeetingData();
7552
+ _this45.meetingFiniteStateMachine.leave();
7553
+ _this45.clearMeetingData();
7432
7554
 
7433
7555
  // upload logs on leave irrespective of meeting delete
7434
- _triggerProxy.default.trigger(_this44, {
7556
+ _triggerProxy.default.trigger(_this45, {
7435
7557
  file: 'meeting/index',
7436
7558
  function: 'leave'
7437
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this44);
7559
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this45);
7438
7560
 
7439
7561
  // TODO: more testing before we remove this code, we are not sure the scenarios for destroy here
7440
- if (_this44.wirelessShare || _this44.guest) {
7562
+ if (_this45.wirelessShare || _this45.guest) {
7441
7563
  // If screen sharing clean the meeting object
7442
- _triggerProxy.default.trigger(_this44, {
7564
+ _triggerProxy.default.trigger(_this45, {
7443
7565
  file: 'meeting/index',
7444
7566
  function: 'leave'
7445
7567
  }, _constants.EVENTS.DESTROY_MEETING, {
7446
7568
  reason: options.reason,
7447
- meetingId: _this44.id
7569
+ meetingId: _this45.id
7448
7570
  });
7449
7571
  }
7450
7572
  _loggerProxy.default.logger.log('Meeting:index#leave --> LEAVE REASON ', leaveReason);
@@ -7461,16 +7583,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7461
7583
  shownToUser: false
7462
7584
  }]
7463
7585
  });
7464
- _this44.meetingFiniteStateMachine.fail(error);
7586
+ _this45.meetingFiniteStateMachine.fail(error);
7465
7587
  _loggerProxy.default.logger.error('Meeting:index#leave --> Failed to leave ', error);
7466
7588
  // upload logs on leave irrespective of meeting delete
7467
- _triggerProxy.default.trigger(_this44, {
7589
+ _triggerProxy.default.trigger(_this45, {
7468
7590
  file: 'meeting/index',
7469
7591
  function: 'leave'
7470
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this44);
7592
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this45);
7471
7593
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_LEAVE_FAILURE, {
7472
- correlation_id: _this44.correlationId,
7473
- locus_id: _this44.locusUrl.split('/').pop(),
7594
+ correlation_id: _this45.correlationId,
7595
+ locus_id: _this45.locusUrl.split('/').pop(),
7474
7596
  reason: error.message,
7475
7597
  stack: error.stack,
7476
7598
  code: error.code
@@ -7490,7 +7612,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7490
7612
  }, {
7491
7613
  key: "startWhiteboardShare",
7492
7614
  value: function startWhiteboardShare(channelUrl, resourceToken) {
7493
- var _this45 = this;
7615
+ var _this46 = this;
7494
7616
  var whiteboard = this.locusInfo.mediaShares.find(function (element) {
7495
7617
  return element.name === 'whiteboard';
7496
7618
  });
@@ -7519,13 +7641,13 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7519
7641
  body.resourceToken = resourceToken;
7520
7642
  }
7521
7643
  return this.meetingRequest.changeMeetingFloor(body).then(function () {
7522
- _this45.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
7644
+ _this46.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
7523
7645
  return _promise.default.resolve();
7524
7646
  }).catch(function (error) {
7525
7647
  _loggerProxy.default.logger.error('Meeting:index#startWhiteboardShare --> Error ', error);
7526
7648
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_START_WHITEBOARD_SHARE_FAILURE, {
7527
- correlation_id: _this45.correlationId,
7528
- locus_id: _this45.locusUrl.split('/').pop(),
7649
+ correlation_id: _this46.correlationId,
7650
+ locus_id: _this46.locusUrl.split('/').pop(),
7529
7651
  reason: error.message,
7530
7652
  stack: error.stack,
7531
7653
  board: {
@@ -7548,7 +7670,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7548
7670
  }, {
7549
7671
  key: "stopWhiteboardShare",
7550
7672
  value: function stopWhiteboardShare(channelUrl) {
7551
- var _this46 = this;
7673
+ var _this47 = this;
7552
7674
  var whiteboard = this.locusInfo.mediaShares.find(function (element) {
7553
7675
  return element.name === 'whiteboard';
7554
7676
  });
@@ -7571,8 +7693,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7571
7693
  }).catch(function (error) {
7572
7694
  _loggerProxy.default.logger.error('Meeting:index#stopWhiteboardShare --> Error ', error);
7573
7695
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_STOP_WHITEBOARD_SHARE_FAILURE, {
7574
- correlation_id: _this46.correlationId,
7575
- locus_id: _this46.locusUrl.split('/').pop(),
7696
+ correlation_id: _this47.correlationId,
7697
+ locus_id: _this47.locusUrl.split('/').pop(),
7576
7698
  reason: error.message,
7577
7699
  stack: error.stack,
7578
7700
  board: {
@@ -7594,7 +7716,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7594
7716
  }, {
7595
7717
  key: "requestScreenShareFloor",
7596
7718
  value: function requestScreenShareFloor() {
7597
- var _this47 = this;
7719
+ var _this48 = this;
7598
7720
  if (!this.mediaProperties.hasLocalShareStream() || !this.mediaProperties.mediaDirection.sendShare) {
7599
7721
  _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, ")"));
7600
7722
  this.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
@@ -7625,34 +7747,34 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7625
7747
  resourceUrl: this.resourceUrl,
7626
7748
  shareInstanceId: this.localShareInstanceId
7627
7749
  }).then(function () {
7628
- _this47.screenShareFloorState = ScreenShareFloorStatus.GRANTED;
7750
+ _this48.screenShareFloorState = ScreenShareFloorStatus.GRANTED;
7629
7751
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_SHARE_SUCCESS, {
7630
- correlation_id: _this47.correlationId,
7631
- locus_id: _this47.locusUrl.split('/').pop()
7752
+ correlation_id: _this48.correlationId,
7753
+ locus_id: _this48.locusUrl.split('/').pop()
7632
7754
  });
7633
7755
  return _promise.default.resolve();
7634
7756
  }).catch(function (error) {
7635
7757
  _loggerProxy.default.logger.error('Meeting:index#share --> Error ', error);
7636
7758
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_SHARE_FAILURE, {
7637
- correlation_id: _this47.correlationId,
7638
- locus_id: _this47.locusUrl.split('/').pop(),
7759
+ correlation_id: _this48.correlationId,
7760
+ locus_id: _this48.locusUrl.split('/').pop(),
7639
7761
  reason: error.message,
7640
7762
  stack: error.stack
7641
7763
  });
7642
7764
 
7643
7765
  // @ts-ignore
7644
- _this47.webex.internal.newMetrics.submitClientEvent({
7766
+ _this48.webex.internal.newMetrics.submitClientEvent({
7645
7767
  name: 'client.share.floor-granted.local',
7646
7768
  payload: {
7647
7769
  mediaType: 'share',
7648
7770
  errors: _util2.default.getChangeMeetingFloorErrorPayload(error.message),
7649
- shareInstanceId: _this47.localShareInstanceId
7771
+ shareInstanceId: _this48.localShareInstanceId
7650
7772
  },
7651
7773
  options: {
7652
- meetingId: _this47.id
7774
+ meetingId: _this48.id
7653
7775
  }
7654
7776
  });
7655
- _this47.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
7777
+ _this48.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
7656
7778
  return _promise.default.reject(error);
7657
7779
  });
7658
7780
  }
@@ -7675,10 +7797,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7675
7797
  }, {
7676
7798
  key: "requestScreenShareFloorIfPending",
7677
7799
  value: function requestScreenShareFloorIfPending() {
7678
- var _this48 = this;
7800
+ var _this49 = this;
7679
7801
  if (this.floorGrantPending && this.state === _constants.MEETING_STATE.STATES.JOINED) {
7680
7802
  this.requestScreenShareFloor().then(function () {
7681
- _this48.floorGrantPending = false;
7803
+ _this49.floorGrantPending = false;
7682
7804
  });
7683
7805
  }
7684
7806
  }
@@ -7692,7 +7814,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7692
7814
  }, {
7693
7815
  key: "releaseScreenShareFloor",
7694
7816
  value: function releaseScreenShareFloor() {
7695
- var _this49 = this;
7817
+ var _this50 = this;
7696
7818
  var content = this.locusInfo.mediaShares.find(function (element) {
7697
7819
  return element.name === _constants.CONTENT;
7698
7820
  });
@@ -7727,8 +7849,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7727
7849
  }).catch(function (error) {
7728
7850
  _loggerProxy.default.logger.error('Meeting:index#releaseScreenShareFloor --> Error ', error);
7729
7851
  _metrics.default.sendBehavioralMetric(_constants2.default.STOP_FLOOR_REQUEST_FAILURE, {
7730
- correlation_id: _this49.correlationId,
7731
- locus_id: _this49.locusUrl.split('/').pop(),
7852
+ correlation_id: _this50.correlationId,
7853
+ locus_id: _this50.locusUrl.split('/').pop(),
7732
7854
  reason: error.message,
7733
7855
  stack: error.stack
7734
7856
  });
@@ -7784,13 +7906,14 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7784
7906
  * @param {boolean} mutedEnabled
7785
7907
  * @param {boolean} disallowUnmuteEnabled
7786
7908
  * @param {boolean} muteOnEntryEnabled
7909
+ * @param {array} roles
7787
7910
  * @public
7788
7911
  * @memberof Meeting
7789
7912
  */
7790
7913
  }, {
7791
7914
  key: "setMuteAll",
7792
- value: function setMuteAll(mutedEnabled, disallowUnmuteEnabled, muteOnEntryEnabled) {
7793
- return this.controlsOptionsManager.setMuteAll(mutedEnabled, disallowUnmuteEnabled, muteOnEntryEnabled);
7915
+ value: function setMuteAll(mutedEnabled, disallowUnmuteEnabled, muteOnEntryEnabled, roles) {
7916
+ return this.controlsOptionsManager.setMuteAll(mutedEnabled, disallowUnmuteEnabled, muteOnEntryEnabled, roles);
7794
7917
  }
7795
7918
 
7796
7919
  /**
@@ -7907,7 +8030,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7907
8030
  }, {
7908
8031
  key: "changeVideoLayout",
7909
8032
  value: function changeVideoLayout(layoutType) {
7910
- var _this50 = this;
8033
+ var _this51 = this;
7911
8034
  var renderInfo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
7912
8035
  var main = renderInfo.main,
7913
8036
  content = renderInfo.content;
@@ -7961,7 +8084,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7961
8084
  }
7962
8085
  this.lastVideoLayoutInfo = (0, _lodash.cloneDeep)(layoutInfo);
7963
8086
  this.locusInfo.once(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_LAYOUT_UPDATED, function (envelope) {
7964
- _triggerProxy.default.trigger(_this50, {
8087
+ _triggerProxy.default.trigger(_this51, {
7965
8088
  file: 'meeting/index',
7966
8089
  function: 'changeVideoLayout'
7967
8090
  }, _constants.EVENT_TRIGGERS.MEETING_CONTROLS_LAYOUT_UPDATE, {
@@ -8077,7 +8200,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8077
8200
  }, {
8078
8201
  key: "endMeetingForAll",
8079
8202
  value: function endMeetingForAll() {
8080
- var _this51 = this;
8203
+ var _this52 = this;
8081
8204
  // @ts-ignore
8082
8205
  this.webex.internal.newMetrics.submitClientEvent({
8083
8206
  name: 'client.call.leave',
@@ -8095,25 +8218,25 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8095
8218
  locus_id: this.locusId
8096
8219
  });
8097
8220
  return _util2.default.endMeetingForAll(this).then(function (end) {
8098
- _this51.meetingFiniteStateMachine.end();
8099
- _this51.clearMeetingData();
8221
+ _this52.meetingFiniteStateMachine.end();
8222
+ _this52.clearMeetingData();
8100
8223
  // upload logs on leave irrespective of meeting delete
8101
- _triggerProxy.default.trigger(_this51, {
8224
+ _triggerProxy.default.trigger(_this52, {
8102
8225
  file: 'meeting/index',
8103
8226
  function: 'endMeetingForAll'
8104
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this51);
8227
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this52);
8105
8228
  return end;
8106
8229
  }).catch(function (error) {
8107
- _this51.meetingFiniteStateMachine.fail(error);
8230
+ _this52.meetingFiniteStateMachine.fail(error);
8108
8231
  _loggerProxy.default.logger.error('Meeting:index#endMeetingForAll --> Failed to end meeting ', error);
8109
8232
  // upload logs on leave irrespective of meeting delete
8110
- _triggerProxy.default.trigger(_this51, {
8233
+ _triggerProxy.default.trigger(_this52, {
8111
8234
  file: 'meeting/index',
8112
8235
  function: 'endMeetingForAll'
8113
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this51);
8236
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this52);
8114
8237
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_END_ALL_FAILURE, {
8115
- correlation_id: _this51.correlationId,
8116
- locus_id: _this51.locusUrl.split('/').pop(),
8238
+ correlation_id: _this52.correlationId,
8239
+ locus_id: _this52.locusUrl.split('/').pop(),
8117
8240
  reason: error.message,
8118
8241
  stack: error.stack,
8119
8242
  code: error.code
@@ -8202,37 +8325,37 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8202
8325
  }, {
8203
8326
  key: "enableMusicMode",
8204
8327
  value: (function () {
8205
- var _enableMusicMode = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee34(shouldEnableMusicMode) {
8206
- return _regenerator.default.wrap(function _callee34$(_context34) {
8207
- while (1) switch (_context34.prev = _context34.next) {
8328
+ var _enableMusicMode = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee35(shouldEnableMusicMode) {
8329
+ return _regenerator.default.wrap(function _callee35$(_context35) {
8330
+ while (1) switch (_context35.prev = _context35.next) {
8208
8331
  case 0:
8209
8332
  this.checkMediaConnection();
8210
8333
  if (this.isMultistream) {
8211
- _context34.next = 3;
8334
+ _context35.next = 3;
8212
8335
  break;
8213
8336
  }
8214
8337
  throw new Error('enableMusicMode() only supported with multistream');
8215
8338
  case 3:
8216
8339
  if (!shouldEnableMusicMode) {
8217
- _context34.next = 8;
8340
+ _context35.next = 8;
8218
8341
  break;
8219
8342
  }
8220
- _context34.next = 6;
8343
+ _context35.next = 6;
8221
8344
  return this.sendSlotManager.setCodecParameters(_internalMediaCore.MediaType.AudioMain, {
8222
8345
  maxaveragebitrate: '64000',
8223
8346
  maxplaybackrate: '48000'
8224
8347
  });
8225
8348
  case 6:
8226
- _context34.next = 10;
8349
+ _context35.next = 10;
8227
8350
  break;
8228
8351
  case 8:
8229
- _context34.next = 10;
8352
+ _context35.next = 10;
8230
8353
  return this.sendSlotManager.deleteCodecParameters(_internalMediaCore.MediaType.AudioMain, ['maxaveragebitrate', 'maxplaybackrate']);
8231
8354
  case 10:
8232
8355
  case "end":
8233
- return _context34.stop();
8356
+ return _context35.stop();
8234
8357
  }
8235
- }, _callee34, this);
8358
+ }, _callee35, this);
8236
8359
  }));
8237
8360
  function enableMusicMode(_x36) {
8238
8361
  return _enableMusicMode.apply(this, arguments);
@@ -8255,7 +8378,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8255
8378
  _this$mediaProperties41,
8256
8379
  _this$mediaProperties42,
8257
8380
  _this$mediaProperties43,
8258
- _this52 = this;
8381
+ _this53 = this;
8259
8382
  var LOG_HEADER = 'Meeting:index#updateTranscodedMediaConnection -->';
8260
8383
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " starting"));
8261
8384
  if (!this.canUpdateMedia()) {
@@ -8280,8 +8403,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8280
8403
  }).catch(function (error) {
8281
8404
  _loggerProxy.default.logger.error("".concat(LOG_HEADER, " Error: "), error);
8282
8405
  _metrics.default.sendBehavioralMetric(_constants2.default.UPDATE_MEDIA_FAILURE, {
8283
- correlation_id: _this52.correlationId,
8284
- locus_id: _this52.locusUrl.split('/').pop(),
8406
+ correlation_id: _this53.correlationId,
8407
+ locus_id: _this53.locusUrl.split('/').pop(),
8285
8408
  reason: error.message,
8286
8409
  stack: error.stack
8287
8410
  });
@@ -8325,25 +8448,25 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8325
8448
  }, {
8326
8449
  key: "publishStream",
8327
8450
  value: (function () {
8328
- var _publishStream = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee35(mediaType, stream) {
8329
- return _regenerator.default.wrap(function _callee35$(_context35) {
8330
- while (1) switch (_context35.prev = _context35.next) {
8451
+ var _publishStream = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee36(mediaType, stream) {
8452
+ return _regenerator.default.wrap(function _callee36$(_context36) {
8453
+ while (1) switch (_context36.prev = _context36.next) {
8331
8454
  case 0:
8332
8455
  if (stream) {
8333
- _context35.next = 2;
8456
+ _context36.next = 2;
8334
8457
  break;
8335
8458
  }
8336
- return _context35.abrupt("return");
8459
+ return _context36.abrupt("return");
8337
8460
  case 2:
8338
8461
  if (!this.mediaProperties.webrtcMediaConnection) {
8339
- _context35.next = 7;
8462
+ _context36.next = 7;
8340
8463
  break;
8341
8464
  }
8342
8465
  if (!(this.isMultistream && this.mediaProperties.webrtcMediaConnection)) {
8343
- _context35.next = 6;
8466
+ _context36.next = 6;
8344
8467
  break;
8345
8468
  }
8346
- _context35.next = 6;
8469
+ _context36.next = 6;
8347
8470
  return this.sendSlotManager.publishStream(mediaType, stream);
8348
8471
  case 6:
8349
8472
  this.emitPublishStateChangeEvent({
@@ -8354,9 +8477,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8354
8477
  });
8355
8478
  case 7:
8356
8479
  case "end":
8357
- return _context35.stop();
8480
+ return _context36.stop();
8358
8481
  }
8359
- }, _callee35, this);
8482
+ }, _callee36, this);
8360
8483
  }));
8361
8484
  function publishStream(_x37, _x38) {
8362
8485
  return _publishStream.apply(this, arguments);
@@ -8374,21 +8497,21 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8374
8497
  }, {
8375
8498
  key: "unpublishStream",
8376
8499
  value: (function () {
8377
- var _unpublishStream = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee36(mediaType, stream) {
8378
- return _regenerator.default.wrap(function _callee36$(_context36) {
8379
- while (1) switch (_context36.prev = _context36.next) {
8500
+ var _unpublishStream = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee37(mediaType, stream) {
8501
+ return _regenerator.default.wrap(function _callee37$(_context37) {
8502
+ while (1) switch (_context37.prev = _context37.next) {
8380
8503
  case 0:
8381
8504
  if (stream) {
8382
- _context36.next = 2;
8505
+ _context37.next = 2;
8383
8506
  break;
8384
8507
  }
8385
- return _context36.abrupt("return");
8508
+ return _context37.abrupt("return");
8386
8509
  case 2:
8387
8510
  if (!(this.isMultistream && this.mediaProperties.webrtcMediaConnection)) {
8388
- _context36.next = 5;
8511
+ _context37.next = 5;
8389
8512
  break;
8390
8513
  }
8391
- _context36.next = 5;
8514
+ _context37.next = 5;
8392
8515
  return this.sendSlotManager.unpublishStream(mediaType);
8393
8516
  case 5:
8394
8517
  this.emitPublishStateChangeEvent({
@@ -8399,9 +8522,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8399
8522
  });
8400
8523
  case 6:
8401
8524
  case "end":
8402
- return _context36.stop();
8525
+ return _context37.stop();
8403
8526
  }
8404
- }, _callee36, this);
8527
+ }, _callee37, this);
8405
8528
  }));
8406
8529
  function unpublishStream(_x39, _x40) {
8407
8530
  return _unpublishStream.apply(this, arguments);
@@ -8418,19 +8541,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8418
8541
  }, {
8419
8542
  key: "publishStreams",
8420
8543
  value: (function () {
8421
- var _publishStreams = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee37(streams) {
8544
+ var _publishStreams = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee38(streams) {
8422
8545
  var _streams$screenShare, _streams$screenShare2, _streams$screenShare3, _streams$screenShare4, _streams$screenShare5, _streams$screenShare6;
8423
8546
  var streamChecks, _i, _streamChecks, _streamChecks$_i, stream, name, floorRequestNeeded, _streams$screenShare7;
8424
- return _regenerator.default.wrap(function _callee37$(_context37) {
8425
- while (1) switch (_context37.prev = _context37.next) {
8547
+ return _regenerator.default.wrap(function _callee38$(_context38) {
8548
+ while (1) switch (_context38.prev = _context38.next) {
8426
8549
  case 0:
8427
8550
  _loggerProxy.default.logger.info("Meeting:index#publishStreams --> called with: ".concat((0, _stringify.default)(streams)));
8428
8551
  this.checkMediaConnection();
8429
8552
  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))) {
8430
- _context37.next = 4;
8553
+ _context38.next = 4;
8431
8554
  break;
8432
8555
  }
8433
- return _context37.abrupt("return");
8556
+ return _context38.abrupt("return");
8434
8557
  case 4:
8435
8558
  streamChecks = [{
8436
8559
  stream: streams === null || streams === void 0 ? void 0 : streams.microphone,
@@ -8448,62 +8571,62 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8448
8571
  _i = 0, _streamChecks = streamChecks;
8449
8572
  case 6:
8450
8573
  if (!(_i < _streamChecks.length)) {
8451
- _context37.next = 13;
8574
+ _context38.next = 13;
8452
8575
  break;
8453
8576
  }
8454
8577
  _streamChecks$_i = _streamChecks[_i], stream = _streamChecks$_i.stream, name = _streamChecks$_i.name;
8455
8578
  if (!((stream === null || stream === void 0 ? void 0 : stream.readyState) === 'ended')) {
8456
- _context37.next = 10;
8579
+ _context38.next = 10;
8457
8580
  break;
8458
8581
  }
8459
8582
  throw new Error("Attempted to publish ".concat(name, " stream with ended readyState, correlationId=").concat(this.correlationId));
8460
8583
  case 10:
8461
8584
  _i++;
8462
- _context37.next = 6;
8585
+ _context38.next = 6;
8463
8586
  break;
8464
8587
  case 13:
8465
8588
  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
8466
8589
  if (!(this.isMultistream && (_streams$screenShare5 = streams.screenShare) !== null && _streams$screenShare5 !== void 0 && _streams$screenShare5.audio)) {
8467
- _context37.next = 18;
8590
+ _context38.next = 18;
8468
8591
  break;
8469
8592
  }
8470
- _context37.next = 17;
8593
+ _context38.next = 17;
8471
8594
  return this.setLocalShareAudioStream(streams.screenShare.audio);
8472
8595
  case 17:
8473
8596
  floorRequestNeeded = this.screenShareFloorState === ScreenShareFloorStatus.RELEASED;
8474
8597
  case 18:
8475
8598
  if (!((_streams$screenShare6 = streams.screenShare) !== null && _streams$screenShare6 !== void 0 && _streams$screenShare6.video)) {
8476
- _context37.next = 22;
8599
+ _context38.next = 22;
8477
8600
  break;
8478
8601
  }
8479
- _context37.next = 21;
8602
+ _context38.next = 21;
8480
8603
  return this.setLocalShareVideoStream((_streams$screenShare7 = streams.screenShare) === null || _streams$screenShare7 === void 0 ? void 0 : _streams$screenShare7.video);
8481
8604
  case 21:
8482
8605
  floorRequestNeeded = this.screenShareFloorState === ScreenShareFloorStatus.RELEASED;
8483
8606
  case 22:
8484
8607
  if (!streams.microphone) {
8485
- _context37.next = 25;
8608
+ _context38.next = 25;
8486
8609
  break;
8487
8610
  }
8488
- _context37.next = 25;
8611
+ _context38.next = 25;
8489
8612
  return this.setLocalAudioStream(streams.microphone);
8490
8613
  case 25:
8491
8614
  if (!streams.camera) {
8492
- _context37.next = 28;
8615
+ _context38.next = 28;
8493
8616
  break;
8494
8617
  }
8495
- _context37.next = 28;
8618
+ _context38.next = 28;
8496
8619
  return this.setLocalVideoStream(streams.camera);
8497
8620
  case 28:
8498
8621
  if (this.isMultistream) {
8499
- _context37.next = 31;
8622
+ _context38.next = 31;
8500
8623
  break;
8501
8624
  }
8502
- _context37.next = 31;
8625
+ _context38.next = 31;
8503
8626
  return this.updateTranscodedMediaConnection();
8504
8627
  case 31:
8505
8628
  if (!floorRequestNeeded) {
8506
- _context37.next = 37;
8629
+ _context38.next = 37;
8507
8630
  break;
8508
8631
  }
8509
8632
  this.localShareInstanceId = _uuid.default.v4();
@@ -8527,13 +8650,13 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8527
8650
  // we're sending the http request to Locus to request the screen share floor
8528
8651
  // only after the SDP update, because that's how it's always been done for transcoded meetings
8529
8652
  // and also if sharing from the start, we need confluence to have been created
8530
- _context37.next = 37;
8653
+ _context38.next = 37;
8531
8654
  return this.enqueueScreenShareFloorRequest();
8532
8655
  case 37:
8533
8656
  case "end":
8534
- return _context37.stop();
8657
+ return _context38.stop();
8535
8658
  }
8536
- }, _callee37, this);
8659
+ }, _callee38, this);
8537
8660
  }));
8538
8661
  function publishStreams(_x41) {
8539
8662
  return _publishStreams.apply(this, arguments);
@@ -8550,10 +8673,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8550
8673
  }, {
8551
8674
  key: "unpublishStreams",
8552
8675
  value: (function () {
8553
- var _unpublishStreams = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee38(streams) {
8676
+ var _unpublishStreams = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee39(streams) {
8554
8677
  var promises, _iterator, _step, stream;
8555
- return _regenerator.default.wrap(function _callee38$(_context38) {
8556
- while (1) switch (_context38.prev = _context38.next) {
8678
+ return _regenerator.default.wrap(function _callee39$(_context39) {
8679
+ while (1) switch (_context39.prev = _context39.next) {
8557
8680
  case 0:
8558
8681
  _loggerProxy.default.logger.info("Meeting:index#unpublishStreams --> called with: ".concat((0, _stringify.default)(streams)));
8559
8682
  this.checkMediaConnection();
@@ -8585,7 +8708,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8585
8708
  if (!this.isMultistream) {
8586
8709
  promises.push(this.updateTranscodedMediaConnection());
8587
8710
  }
8588
- _context38.next = 8;
8711
+ _context39.next = 8;
8589
8712
  return _promise.default.all(promises);
8590
8713
  case 8:
8591
8714
  // we're allowing for the SDK to support just audio share as well
@@ -8606,9 +8729,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8606
8729
  }
8607
8730
  case 9:
8608
8731
  case "end":
8609
- return _context38.stop();
8732
+ return _context39.stop();
8610
8733
  }
8611
- }, _callee38, this);
8734
+ }, _callee39, this);
8612
8735
  }));
8613
8736
  function unpublishStreams(_x42) {
8614
8737
  return _unpublishStreams.apply(this, arguments);
@@ -8670,55 +8793,55 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8670
8793
  }], [{
8671
8794
  key: "handleDeviceLogging",
8672
8795
  value: (function () {
8673
- var _handleDeviceLogging = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee39(isAudioEnabled, isVideoEnabled) {
8796
+ var _handleDeviceLogging = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee40(isAudioEnabled, isVideoEnabled) {
8674
8797
  var devices;
8675
- return _regenerator.default.wrap(function _callee39$(_context39) {
8676
- while (1) switch (_context39.prev = _context39.next) {
8798
+ return _regenerator.default.wrap(function _callee40$(_context40) {
8799
+ while (1) switch (_context40.prev = _context40.next) {
8677
8800
  case 0:
8678
- _context39.prev = 0;
8801
+ _context40.prev = 0;
8679
8802
  devices = [];
8680
8803
  if (!(isVideoEnabled && isAudioEnabled)) {
8681
- _context39.next = 8;
8804
+ _context40.next = 8;
8682
8805
  break;
8683
8806
  }
8684
- _context39.next = 5;
8807
+ _context40.next = 5;
8685
8808
  return (0, _mediaHelpers.getDevices)();
8686
8809
  case 5:
8687
- devices = _context39.sent;
8688
- _context39.next = 18;
8810
+ devices = _context40.sent;
8811
+ _context40.next = 18;
8689
8812
  break;
8690
8813
  case 8:
8691
8814
  if (!isVideoEnabled) {
8692
- _context39.next = 14;
8815
+ _context40.next = 14;
8693
8816
  break;
8694
8817
  }
8695
- _context39.next = 11;
8818
+ _context40.next = 11;
8696
8819
  return (0, _mediaHelpers.getDevices)(_media.default.DeviceKind.VIDEO_INPUT);
8697
8820
  case 11:
8698
- devices = _context39.sent;
8699
- _context39.next = 18;
8821
+ devices = _context40.sent;
8822
+ _context40.next = 18;
8700
8823
  break;
8701
8824
  case 14:
8702
8825
  if (!isAudioEnabled) {
8703
- _context39.next = 18;
8826
+ _context40.next = 18;
8704
8827
  break;
8705
8828
  }
8706
- _context39.next = 17;
8829
+ _context40.next = 17;
8707
8830
  return (0, _mediaHelpers.getDevices)(_media.default.DeviceKind.AUDIO_INPUT);
8708
8831
  case 17:
8709
- devices = _context39.sent;
8832
+ devices = _context40.sent;
8710
8833
  case 18:
8711
8834
  _util2.default.handleDeviceLogging(devices);
8712
- _context39.next = 23;
8835
+ _context40.next = 23;
8713
8836
  break;
8714
8837
  case 21:
8715
- _context39.prev = 21;
8716
- _context39.t0 = _context39["catch"](0);
8838
+ _context40.prev = 21;
8839
+ _context40.t0 = _context40["catch"](0);
8717
8840
  case 23:
8718
8841
  case "end":
8719
- return _context39.stop();
8842
+ return _context40.stop();
8720
8843
  }
8721
- }, _callee39, null, [[0, 21]]);
8844
+ }, _callee40, null, [[0, 21]]);
8722
8845
  }));
8723
8846
  function handleDeviceLogging(_x43, _x44) {
8724
8847
  return _handleDeviceLogging.apply(this, arguments);