@webex/plugin-meetings 3.0.0 → 3.1.0

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 (138) hide show
  1. package/dist/breakouts/breakout.js +1 -1
  2. package/dist/breakouts/index.js +1 -1
  3. package/dist/config.d.ts +1 -0
  4. package/dist/config.js +2 -1
  5. package/dist/config.js.map +1 -1
  6. package/dist/constants.d.ts +5 -4
  7. package/dist/constants.js +8 -4
  8. package/dist/constants.js.map +1 -1
  9. package/dist/index.d.ts +1 -1
  10. package/dist/index.js +6 -0
  11. package/dist/index.js.map +1 -1
  12. package/dist/interpretation/index.js +16 -2
  13. package/dist/interpretation/index.js.map +1 -1
  14. package/dist/interpretation/siLanguage.js +1 -1
  15. package/dist/locus-info/mediaSharesUtils.js +15 -1
  16. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  17. package/dist/locus-info/selfUtils.js +5 -0
  18. package/dist/locus-info/selfUtils.js.map +1 -1
  19. package/dist/media/MediaConnectionAwaiter.d.ts +61 -0
  20. package/dist/media/MediaConnectionAwaiter.js +163 -0
  21. package/dist/media/MediaConnectionAwaiter.js.map +1 -0
  22. package/dist/media/index.js +4 -1
  23. package/dist/media/index.js.map +1 -1
  24. package/dist/media/properties.js +4 -24
  25. package/dist/media/properties.js.map +1 -1
  26. package/dist/meeting/index.d.ts +26 -7
  27. package/dist/meeting/index.js +893 -677
  28. package/dist/meeting/index.js.map +1 -1
  29. package/dist/meeting/muteState.d.ts +2 -8
  30. package/dist/meeting/muteState.js +37 -25
  31. package/dist/meeting/muteState.js.map +1 -1
  32. package/dist/meeting/request.d.ts +3 -0
  33. package/dist/meeting/request.js +32 -23
  34. package/dist/meeting/request.js.map +1 -1
  35. package/dist/meeting/util.js +1 -0
  36. package/dist/meeting/util.js.map +1 -1
  37. package/dist/meeting-info/utilv2.js +4 -1
  38. package/dist/meeting-info/utilv2.js.map +1 -1
  39. package/dist/meetings/index.d.ts +8 -0
  40. package/dist/meetings/index.js +20 -0
  41. package/dist/meetings/index.js.map +1 -1
  42. package/dist/multistream/mediaRequestManager.d.ts +2 -1
  43. package/dist/multistream/mediaRequestManager.js +1 -1
  44. package/dist/multistream/mediaRequestManager.js.map +1 -1
  45. package/dist/multistream/remoteMediaGroup.d.ts +2 -0
  46. package/dist/multistream/remoteMediaGroup.js +16 -2
  47. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  48. package/dist/multistream/remoteMediaManager.d.ts +15 -0
  49. package/dist/multistream/remoteMediaManager.js +179 -65
  50. package/dist/multistream/remoteMediaManager.js.map +1 -1
  51. package/dist/multistream/sendSlotManager.d.ts +9 -1
  52. package/dist/multistream/sendSlotManager.js +22 -0
  53. package/dist/multistream/sendSlotManager.js.map +1 -1
  54. package/dist/reachability/clusterReachability.d.ts +1 -0
  55. package/dist/reachability/clusterReachability.js +29 -15
  56. package/dist/reachability/clusterReachability.js.map +1 -1
  57. package/dist/reachability/index.d.ts +4 -0
  58. package/dist/reachability/index.js +18 -2
  59. package/dist/reachability/index.js.map +1 -1
  60. package/dist/reachability/request.js +12 -10
  61. package/dist/reachability/request.js.map +1 -1
  62. package/dist/reachability/util.d.ts +7 -0
  63. package/dist/reachability/util.js +19 -0
  64. package/dist/reachability/util.js.map +1 -1
  65. package/dist/reconnection-manager/index.js +2 -1
  66. package/dist/reconnection-manager/index.js.map +1 -1
  67. package/dist/roap/index.d.ts +10 -2
  68. package/dist/roap/index.js +15 -0
  69. package/dist/roap/index.js.map +1 -1
  70. package/dist/roap/request.js +3 -3
  71. package/dist/roap/request.js.map +1 -1
  72. package/dist/roap/turnDiscovery.d.ts +64 -17
  73. package/dist/roap/turnDiscovery.js +307 -126
  74. package/dist/roap/turnDiscovery.js.map +1 -1
  75. package/dist/statsAnalyzer/index.js +53 -30
  76. package/dist/statsAnalyzer/index.js.map +1 -1
  77. package/dist/webinar/index.js +1 -1
  78. package/package.json +22 -22
  79. package/src/config.ts +1 -0
  80. package/src/constants.ts +7 -3
  81. package/src/index.ts +1 -0
  82. package/src/interpretation/index.ts +18 -1
  83. package/src/locus-info/mediaSharesUtils.ts +16 -0
  84. package/src/locus-info/selfUtils.ts +5 -0
  85. package/src/media/MediaConnectionAwaiter.ts +174 -0
  86. package/src/media/index.ts +3 -1
  87. package/src/media/properties.ts +6 -31
  88. package/src/meeting/index.ts +321 -106
  89. package/src/meeting/muteState.ts +34 -20
  90. package/src/meeting/request.ts +18 -2
  91. package/src/meeting/util.ts +1 -0
  92. package/src/meeting-info/utilv2.ts +2 -1
  93. package/src/meetings/index.ts +18 -0
  94. package/src/multistream/mediaRequestManager.ts +4 -1
  95. package/src/multistream/remoteMediaGroup.ts +19 -0
  96. package/src/multistream/remoteMediaManager.ts +101 -16
  97. package/src/multistream/sendSlotManager.ts +28 -0
  98. package/src/reachability/clusterReachability.ts +20 -5
  99. package/src/reachability/index.ts +24 -1
  100. package/src/reachability/request.ts +15 -11
  101. package/src/reachability/util.ts +21 -0
  102. package/src/reconnection-manager/index.ts +1 -1
  103. package/src/roap/index.ts +25 -3
  104. package/src/roap/request.ts +3 -3
  105. package/src/roap/turnDiscovery.ts +244 -78
  106. package/src/statsAnalyzer/index.ts +63 -27
  107. package/test/integration/spec/journey.js +14 -14
  108. package/test/integration/spec/space-meeting.js +1 -1
  109. package/test/unit/spec/interpretation/index.ts +39 -3
  110. package/test/unit/spec/locus-info/index.js +28 -19
  111. package/test/unit/spec/locus-info/mediaSharesUtils.ts +9 -0
  112. package/test/unit/spec/locus-info/selfUtils.js +42 -12
  113. package/test/unit/spec/media/MediaConnectionAwaiter.ts +344 -0
  114. package/test/unit/spec/media/index.ts +89 -78
  115. package/test/unit/spec/media/properties.ts +16 -70
  116. package/test/unit/spec/meeting/index.js +638 -139
  117. package/test/unit/spec/meeting/muteState.js +219 -67
  118. package/test/unit/spec/meeting/request.js +21 -0
  119. package/test/unit/spec/meeting/utils.js +6 -1
  120. package/test/unit/spec/meeting-info/utilv2.js +6 -0
  121. package/test/unit/spec/meetings/index.js +40 -20
  122. package/test/unit/spec/multistream/mediaRequestManager.ts +20 -2
  123. package/test/unit/spec/multistream/remoteMediaGroup.ts +79 -1
  124. package/test/unit/spec/multistream/remoteMediaManager.ts +199 -1
  125. package/test/unit/spec/multistream/sendSlotManager.ts +50 -18
  126. package/test/unit/spec/reachability/clusterReachability.ts +86 -22
  127. package/test/unit/spec/reachability/index.ts +197 -60
  128. package/test/unit/spec/reachability/request.js +15 -7
  129. package/test/unit/spec/reachability/util.ts +32 -2
  130. package/test/unit/spec/reconnection-manager/index.js +28 -0
  131. package/test/unit/spec/roap/index.ts +61 -6
  132. package/test/unit/spec/roap/turnDiscovery.ts +298 -16
  133. package/test/unit/spec/stats-analyzer/index.js +179 -0
  134. package/dist/member/member.types.d.ts +0 -11
  135. package/dist/member/member.types.js +0 -17
  136. package/dist/member/member.types.js.map +0 -1
  137. package/src/member/member.types.ts +0 -13
  138. /package/test/unit/spec/locus-info/{lib/selfConstant.js → selfConstant.js} +0 -0
@@ -44,6 +44,7 @@ var _webexErrors = require("../common/errors/webex-errors");
44
44
  var _statsAnalyzer = require("../statsAnalyzer");
45
45
  var _networkQualityMonitor = _interopRequireDefault(require("../networkQualityMonitor"));
46
46
  var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
47
+ var _util = _interopRequireDefault(require("../common/events/util"));
47
48
  var _triggerProxy = _interopRequireDefault(require("../common/events/trigger-proxy"));
48
49
  var _index = _interopRequireDefault(require("../roap/index"));
49
50
  var _media = _interopRequireDefault(require("../media"));
@@ -55,11 +56,11 @@ var _metrics = _interopRequireDefault(require("../metrics"));
55
56
  var _reconnectionManager = _interopRequireDefault(require("../reconnection-manager"));
56
57
  var _request = _interopRequireDefault(require("./request"));
57
58
  var _index2 = _interopRequireDefault(require("../members/index"));
58
- var _util = _interopRequireDefault(require("./util"));
59
- var _util2 = _interopRequireDefault(require("../meetings/util"));
60
- var _util3 = _interopRequireDefault(require("../recording-controller/util"));
61
- var _util4 = _interopRequireDefault(require("../controls-options-manager/util"));
62
- var _util5 = _interopRequireDefault(require("../media/util"));
59
+ var _util2 = _interopRequireDefault(require("./util"));
60
+ var _util3 = _interopRequireDefault(require("../meetings/util"));
61
+ var _util4 = _interopRequireDefault(require("../recording-controller/util"));
62
+ var _util5 = _interopRequireDefault(require("../controls-options-manager/util"));
63
+ var _util6 = _interopRequireDefault(require("../media/util"));
63
64
  var _reactions = require("../reactions/reactions");
64
65
  var _passwordError = _interopRequireDefault(require("../common/errors/password-error"));
65
66
  var _captchaError = _interopRequireDefault(require("../common/errors/captcha-error"));
@@ -69,7 +70,6 @@ var _constants = require("../constants");
69
70
  var _constants2 = _interopRequireDefault(require("../metrics/constants"));
70
71
  var _parameter = _interopRequireDefault(require("../common/errors/parameter"));
71
72
  var _meetingInfoV = require("../meeting-info/meeting-info-v2");
72
- var _browserDetection = _interopRequireDefault(require("../common/browser-detection"));
73
73
  var _receiveSlotManager = require("../multistream/receiveSlotManager");
74
74
  var _sendSlotManager = _interopRequireDefault(require("../multistream/sendSlotManager"));
75
75
  var _mediaRequestManager = require("../multistream/mediaRequestManager");
@@ -92,8 +92,6 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
92
92
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
93
93
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } // @ts-ignore - Fix this
94
94
  // @ts-ignore - Types not available for @webex/common
95
- var _BrowserDetection = (0, _browserDetection.default)(),
96
- isBrowser = _BrowserDetection.isBrowser;
97
95
  var logRequest = function logRequest(request, _ref) {
98
96
  var _ref$logText = _ref.logText,
99
97
  logText = _ref$logText === void 0 ? '' : _ref$logText;
@@ -495,10 +493,13 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
495
493
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "areVoiceaEventsSetup", false);
496
494
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "voiceaListenerCallbacks", (0, _defineProperty3.default)((0, _defineProperty3.default)((0, _defineProperty3.default)((0, _defineProperty3.default)({}, _internalPluginVoicea.EVENT_TRIGGERS.VOICEA_ANNOUNCEMENT, function (payload) {
497
495
  _this.transcription.languageOptions = payload;
498
- _triggerProxy.default.trigger((0, _assertThisInitialized2.default)(_this), {
496
+ _loggerProxy.default.logger.debug("".concat(_util.default.getScopeLog({
499
497
  file: 'meeting/index',
500
498
  function: 'setUpVoiceaListeners'
501
- }, _constants.EVENT_TRIGGERS.MEETING_STARTED_RECEIVING_TRANSCRIPTION, payload);
499
+ }), "event#").concat(_constants.EVENT_TRIGGERS.MEETING_STARTED_RECEIVING_TRANSCRIPTION));
500
+
501
+ // @ts-ignore
502
+ _this.trigger(_constants.EVENT_TRIGGERS.MEETING_STARTED_RECEIVING_TRANSCRIPTION, payload);
502
503
  }), _internalPluginVoicea.EVENT_TRIGGERS.CAPTIONS_TURNED_ON, function () {
503
504
  _this.transcription.status = _internalPluginVoicea.TURN_ON_CAPTION_STATUS.ENABLED;
504
505
  }), _internalPluginVoicea.EVENT_TRIGGERS.EVA_COMMAND, function (payload) {
@@ -511,10 +512,13 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
511
512
  data: data,
512
513
  meeting: (0, _assertThisInitialized2.default)(_this)
513
514
  });
514
- _triggerProxy.default.trigger((0, _assertThisInitialized2.default)(_this), {
515
+ _loggerProxy.default.logger.debug("".concat(_util.default.getScopeLog({
515
516
  file: 'meeting/index',
516
517
  function: 'setUpVoiceaListeners'
517
- }, _constants.EVENT_TRIGGERS.MEETING_CAPTION_RECEIVED, {
518
+ }), "event#").concat(_constants.EVENT_TRIGGERS.MEETING_CAPTION_RECEIVED));
519
+
520
+ // @ts-ignore
521
+ _this.trigger(_constants.EVENT_TRIGGERS.MEETING_CAPTION_RECEIVED, {
518
522
  captions: _this.transcription.captions,
519
523
  interimCaptions: _this.transcription.interimCaptions
520
524
  });
@@ -629,7 +633,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
629
633
  * @returns {undefined}
630
634
  */
631
635
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "roapMessageReceived", function (roapMessage) {
632
- var mediaServer = _util2.default.getMediaServer(roapMessage.sdp);
636
+ var mediaServer = _util3.default.getMediaServer(roapMessage.sdp);
633
637
  _this.mediaProperties.webrtcMediaConnection.roapMessageReceived(roapMessage);
634
638
  if (mediaServer) {
635
639
  _this.mediaProperties.webrtcMediaConnection.mediaServer = mediaServer;
@@ -724,7 +728,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
724
728
  }), {
725
729
  logText: "".concat(LOG_HEADER, " Roap Offer")
726
730
  }).catch(function () {
727
- _this.deferSDPAnswer.reject();
731
+ _this.deferSDPAnswer.reject(new Error('failed to send ROAP SDP offer'));
728
732
  clearTimeout(_this.sdpResponseTimer);
729
733
  _this.sdpResponseTimer = undefined;
730
734
  });
@@ -779,7 +783,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
779
783
  _loggerProxy.default.logger.log("Meeting:index#setupMediaConnectionListeners --> REMOTE_TRACK_ADDED event received for webrtcMediaConnection: ".concat((0, _stringify.default)(event)));
780
784
  if (event.track) {
781
785
  var mediaTrack = event.track;
782
- var remoteStream = new _mediaHelpers.RemoteStream(_util5.default.createMediaStream([mediaTrack]));
786
+ var remoteStream = new _mediaHelpers.RemoteStream(_util6.default.createMediaStream([mediaTrack]));
783
787
 
784
788
  // eslint-disable-next-line @typescript-eslint/no-shadow
785
789
  var eventType;
@@ -1001,6 +1005,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
1001
1005
  meetingId: _this.id
1002
1006
  }
1003
1007
  });
1008
+ if (data.type === 'share') {
1009
+ // @ts-ignore
1010
+ _this.webex.internal.newMetrics.submitClientEvent({
1011
+ name: 'client.media.render.start',
1012
+ payload: {
1013
+ mediaType: 'share',
1014
+ shareInstanceId: _this.remoteShareInstanceId
1015
+ },
1016
+ options: {
1017
+ meetingId: _this.id
1018
+ }
1019
+ });
1020
+ }
1004
1021
  });
1005
1022
  _this.statsAnalyzer.on(_statsAnalyzer.EVENTS.REMOTE_MEDIA_STOPPED, function (data) {
1006
1023
  // @ts-ignore
@@ -1014,6 +1031,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
1014
1031
  meetingId: _this.id
1015
1032
  }
1016
1033
  });
1034
+ if (data.type === 'share') {
1035
+ // @ts-ignore
1036
+ _this.webex.internal.newMetrics.submitClientEvent({
1037
+ name: 'client.media.render.stop',
1038
+ payload: {
1039
+ mediaType: 'share',
1040
+ shareInstanceId: _this.remoteShareInstanceId
1041
+ },
1042
+ options: {
1043
+ meetingId: _this.id
1044
+ }
1045
+ });
1046
+ }
1017
1047
  });
1018
1048
  });
1019
1049
  /**
@@ -1941,11 +1971,11 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
1941
1971
  * helper class for managing remote streams
1942
1972
  */
1943
1973
  _this.remoteMediaManager = null;
1944
- _this.localAudioStreamMuteStateHandler = function (muted) {
1945
- _this.audio.handleLocalStreamMuteStateChange((0, _assertThisInitialized2.default)(_this), muted);
1974
+ _this.localAudioStreamMuteStateHandler = function () {
1975
+ _this.audio.handleLocalStreamMuteStateChange((0, _assertThisInitialized2.default)(_this));
1946
1976
  };
1947
- _this.localVideoStreamMuteStateHandler = function (muted) {
1948
- _this.video.handleLocalStreamMuteStateChange((0, _assertThisInitialized2.default)(_this), muted);
1977
+ _this.localVideoStreamMuteStateHandler = function () {
1978
+ _this.video.handleLocalStreamMuteStateChange((0, _assertThisInitialized2.default)(_this));
1949
1979
  };
1950
1980
 
1951
1981
  // The handling of output track changes should be done inside
@@ -3012,7 +3042,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3012
3042
  function: 'triggerAnnotationInfoEvent'
3013
3043
  }, _constants.EVENT_TRIGGERS.MEETING_UPDATE_ANNOTATION_INFO, {
3014
3044
  annotationInfo: contentShare === null || contentShare === void 0 ? void 0 : contentShare.annotation,
3015
- meetingId: this.id
3045
+ meetingId: this.id,
3046
+ resourceType: contentShare === null || contentShare === void 0 ? void 0 : contentShare.resourceType
3016
3047
  });
3017
3048
  }
3018
3049
  }
@@ -3041,7 +3072,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3041
3072
  previousContentShare = (_payload$previous = payload.previous) === null || _payload$previous === void 0 ? void 0 : _payload$previous.content;
3042
3073
  previousWhiteboardShare = (_payload$previous2 = payload.previous) === null || _payload$previous2 === void 0 ? void 0 : _payload$previous2.whiteboard;
3043
3074
  _this14.triggerAnnotationInfoEvent(contentShare, previousContentShare);
3044
- if (!(contentShare.beneficiaryId === (previousContentShare === null || previousContentShare === void 0 ? void 0 : previousContentShare.beneficiaryId) && contentShare.disposition === (previousContentShare === null || previousContentShare === void 0 ? void 0 : previousContentShare.disposition) && contentShare.deviceUrlSharing === previousContentShare.deviceUrlSharing && whiteboardShare.beneficiaryId === (previousWhiteboardShare === null || previousWhiteboardShare === void 0 ? void 0 : previousWhiteboardShare.beneficiaryId) && whiteboardShare.disposition === (previousWhiteboardShare === null || previousWhiteboardShare === void 0 ? void 0 : previousWhiteboardShare.disposition) && whiteboardShare.resourceUrl === (previousWhiteboardShare === null || previousWhiteboardShare === void 0 ? void 0 : previousWhiteboardShare.resourceUrl))) {
3075
+ if (!(contentShare.beneficiaryId === (previousContentShare === null || previousContentShare === void 0 ? void 0 : previousContentShare.beneficiaryId) && contentShare.disposition === (previousContentShare === null || previousContentShare === void 0 ? void 0 : previousContentShare.disposition) && contentShare.deviceUrlSharing === previousContentShare.deviceUrlSharing && whiteboardShare.beneficiaryId === (previousWhiteboardShare === null || previousWhiteboardShare === void 0 ? void 0 : previousWhiteboardShare.beneficiaryId) && whiteboardShare.disposition === (previousWhiteboardShare === null || previousWhiteboardShare === void 0 ? void 0 : previousWhiteboardShare.disposition) && whiteboardShare.resourceUrl === (previousWhiteboardShare === null || previousWhiteboardShare === void 0 ? void 0 : previousWhiteboardShare.resourceUrl) && contentShare.resourceType === (previousContentShare === null || previousContentShare === void 0 ? void 0 : previousContentShare.resourceType))) {
3045
3076
  _context8.next = 6;
3046
3077
  break;
3047
3078
  }
@@ -3122,7 +3153,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3122
3153
  memberId: contentShare.beneficiaryId,
3123
3154
  url: contentShare.url,
3124
3155
  shareInstanceId: _this14.remoteShareInstanceId,
3125
- annotationInfo: contentShare.annotation
3156
+ annotationInfo: contentShare.annotation,
3157
+ resourceType: contentShare.resourceType
3126
3158
  });
3127
3159
  };
3128
3160
  _context8.prev = 26;
@@ -3194,7 +3226,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3194
3226
  memberId: contentShare.beneficiaryId,
3195
3227
  url: contentShare.url,
3196
3228
  shareInstanceId: _this14.remoteShareInstanceId,
3197
- annotationInfo: contentShare.annotation
3229
+ annotationInfo: contentShare.annotation,
3230
+ resourceType: contentShare.resourceType
3198
3231
  });
3199
3232
  _this14.members.locusMediaSharesUpdate(payload);
3200
3233
  } else if (newShareStatus === _constants.SHARE_STATUS.WHITEBOARD_SHARE_ACTIVE) {
@@ -3473,7 +3506,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3473
3506
  }
3474
3507
  });
3475
3508
  }
3476
- case 2:
3509
+ _this19.updateLLMConnection();
3510
+ case 3:
3477
3511
  case "end":
3478
3512
  return _context9.stop();
3479
3513
  }
@@ -3529,11 +3563,14 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3529
3563
  }, _constants.EVENT_TRIGGERS.MEETING_BREAKOUTS_UPDATE);
3530
3564
  });
3531
3565
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_MEETING_INTERPRETATION_CHANGED, function (payload) {
3532
- _this19.simultaneousInterpretation.updateSelfInterpretation(payload);
3566
+ var targetChanged = _this19.simultaneousInterpretation.updateSelfInterpretation(payload);
3533
3567
  _triggerProxy.default.trigger(_this19, {
3534
3568
  file: 'meeting/index',
3535
3569
  function: 'setUpLocusInfoSelfListener'
3536
3570
  }, _constants.EVENT_TRIGGERS.MEETING_INTERPRETATION_UPDATE);
3571
+ if (targetChanged && _this19.mediaProperties.audioStream) {
3572
+ _this19.setSendNamedMediaGroup(_internalMediaCore.MediaType.AudioMain);
3573
+ }
3537
3574
  });
3538
3575
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_ROLES_CHANGED, function (payload) {
3539
3576
  var _payload$newRoles, _payload$newRoles2, _payload$newRoles3, _payload$newRoles4;
@@ -3627,7 +3664,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3627
3664
  break;
3628
3665
  case 19:
3629
3666
  _loggerProxy.default.logger.info('Meeting:index#setUpLocusInfoMeetingListener --> MEETING_REMOVED_REASON', payload.reason);
3630
- _util.default.cleanUp(_this20);
3667
+ _util2.default.cleanUp(_this20);
3631
3668
  _triggerProxy.default.trigger(_this20, {
3632
3669
  file: 'meeting/index',
3633
3670
  function: 'setUpLocusInfoMeetingListener'
@@ -3837,12 +3874,14 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3837
3874
  }
3838
3875
  this.owner = ((_locusMeetingObject6 = locusMeetingObject) === null || _locusMeetingObject6 === void 0 ? void 0 : _locusMeetingObject6.info.owner) || (meetingInfo === null || meetingInfo === void 0 ? void 0 : meetingInfo.owner) || (meetingInfo === null || meetingInfo === void 0 ? void 0 : meetingInfo.hostId) || this.owner;
3839
3876
  this.permissionToken = meetingInfo === null || meetingInfo === void 0 ? void 0 : meetingInfo.permissionToken;
3840
- this.setPermissionTokenPayload(meetingInfo === null || meetingInfo === void 0 ? void 0 : meetingInfo.permissionToken);
3841
- this.setSelfUserPolicies();
3877
+ if (this.permissionToken) {
3878
+ this.setPermissionTokenPayload(meetingInfo === null || meetingInfo === void 0 ? void 0 : meetingInfo.permissionToken);
3879
+ this.setSelfUserPolicies();
3880
+ }
3842
3881
  // Need to populate environment when sending CA event
3843
3882
  this.environment = ((_locusMeetingObject7 = locusMeetingObject) === null || _locusMeetingObject7 === void 0 ? void 0 : _locusMeetingObject7.info.channel) || (meetingInfo === null || meetingInfo === void 0 ? void 0 : meetingInfo.channel);
3844
3883
  }
3845
- _util.default.parseInterpretationInfo(this, meetingInfo);
3884
+ _util2.default.parseInterpretationInfo(this, meetingInfo);
3846
3885
  }
3847
3886
 
3848
3887
  /**
@@ -3877,175 +3916,175 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3877
3916
  var _this$meetingInfo2, _this$meetingInfo3, _this$meetingInfo4, _this$meetingInfo4$vi, _this$meetingInfo5, _this$meetingInfo5$vi;
3878
3917
  var changed = false;
3879
3918
  changed = this.inMeetingActions.set({
3880
- canUseVoip: ((_this$meetingInfo2 = this.meetingInfo) === null || _this$meetingInfo2 === void 0 ? void 0 : _this$meetingInfo2.supportVoIP) === true && _util4.default.hasPolicies({
3919
+ canUseVoip: ((_this$meetingInfo2 = this.meetingInfo) === null || _this$meetingInfo2 === void 0 ? void 0 : _this$meetingInfo2.supportVoIP) === true && _util5.default.hasPolicies({
3881
3920
  requiredPolicies: [_constants.SELF_POLICY.SUPPORT_VOIP],
3882
3921
  policies: this.selfUserPolicies
3883
3922
  }) || !this.arePolicyRestrictionsSupported(),
3884
- canDoVideo: _util4.default.hasPolicies({
3923
+ canDoVideo: _util5.default.hasPolicies({
3885
3924
  requiredPolicies: [_constants.SELF_POLICY.SUPPORT_VIDEO],
3886
3925
  policies: this.selfUserPolicies
3887
3926
  }) && !!((_this$meetingInfo3 = this.meetingInfo) !== null && _this$meetingInfo3 !== void 0 && _this$meetingInfo3.video) || !this.arePolicyRestrictionsSupported(),
3888
- supportHDV: _util4.default.hasPolicies({
3927
+ supportHDV: _util5.default.hasPolicies({
3889
3928
  requiredPolicies: [_constants.SELF_POLICY.SUPPORT_HDV],
3890
3929
  policies: this.selfUserPolicies
3891
3930
  }) && ((_this$meetingInfo4 = this.meetingInfo) === null || _this$meetingInfo4 === void 0 ? void 0 : (_this$meetingInfo4$vi = _this$meetingInfo4.video) === null || _this$meetingInfo4$vi === void 0 ? void 0 : _this$meetingInfo4$vi.supportHDV) || !this.arePolicyRestrictionsSupported(),
3892
- enforceVirtualBackground: _util4.default.hasPolicies({
3931
+ enforceVirtualBackground: _util5.default.hasPolicies({
3893
3932
  requiredPolicies: [_constants.SELF_POLICY.ENFORCE_VIRTUAL_BACKGROUND],
3894
3933
  policies: this.selfUserPolicies
3895
3934
  }) && this.arePolicyRestrictionsSupported(),
3896
- supportHQV: _util4.default.hasPolicies({
3935
+ supportHQV: _util5.default.hasPolicies({
3897
3936
  requiredPolicies: [_constants.SELF_POLICY.SUPPORT_HQV],
3898
3937
  policies: this.selfUserPolicies
3899
3938
  }) && ((_this$meetingInfo5 = this.meetingInfo) === null || _this$meetingInfo5 === void 0 ? void 0 : (_this$meetingInfo5$vi = _this$meetingInfo5.video) === null || _this$meetingInfo5$vi === void 0 ? void 0 : _this$meetingInfo5$vi.supportHQV) || !this.arePolicyRestrictionsSupported()
3900
3939
  });
3901
3940
  if (this.userDisplayHints !== undefined) {
3902
3941
  changed = this.inMeetingActions.set({
3903
- canInviteNewParticipants: _util.default.canInviteNewParticipants(this.userDisplayHints),
3904
- canAdmitParticipant: _util.default.canAdmitParticipant(this.userDisplayHints),
3905
- canLock: _util.default.canUserLock(this.userDisplayHints),
3906
- canUnlock: _util.default.canUserUnlock(this.userDisplayHints),
3907
- canShareWhiteBoard: _util.default.canShareWhiteBoard(this.userDisplayHints),
3908
- canSetDisallowUnmute: _util4.default.canSetDisallowUnmute(this.userDisplayHints),
3909
- canUnsetDisallowUnmute: _util4.default.canUnsetDisallowUnmute(this.userDisplayHints),
3910
- canSetMuteOnEntry: _util4.default.canSetMuteOnEntry(this.userDisplayHints),
3911
- canUnsetMuteOnEntry: _util4.default.canUnsetMuteOnEntry(this.userDisplayHints),
3912
- canSetMuted: _util4.default.canSetMuted(this.userDisplayHints),
3913
- canUnsetMuted: _util4.default.canUnsetMuted(this.userDisplayHints),
3914
- canStartRecording: _util3.default.canUserStart(this.userDisplayHints, this.selfUserPolicies),
3915
- canStopRecording: _util3.default.canUserStop(this.userDisplayHints, this.selfUserPolicies),
3916
- canPauseRecording: _util3.default.canUserPause(this.userDisplayHints, this.selfUserPolicies),
3917
- canResumeRecording: _util3.default.canUserResume(this.userDisplayHints, this.selfUserPolicies),
3918
- canRaiseHand: _util.default.canUserRaiseHand(this.userDisplayHints),
3919
- canLowerAllHands: _util.default.canUserLowerAllHands(this.userDisplayHints),
3920
- canLowerSomeoneElsesHand: _util.default.canUserLowerSomeoneElsesHand(this.userDisplayHints),
3921
- bothLeaveAndEndMeetingAvailable: _util.default.bothLeaveAndEndMeetingAvailable(this.userDisplayHints),
3922
- canEnableClosedCaption: _util.default.canEnableClosedCaption(this.userDisplayHints),
3923
- canStartTranscribing: _util.default.canStartTranscribing(this.userDisplayHints),
3924
- canStopTranscribing: _util.default.canStopTranscribing(this.userDisplayHints),
3925
- isClosedCaptionActive: _util.default.isClosedCaptionActive(this.userDisplayHints),
3926
- isSaveTranscriptsEnabled: _util.default.isSaveTranscriptsEnabled(this.userDisplayHints),
3927
- isWebexAssistantActive: _util.default.isWebexAssistantActive(this.userDisplayHints),
3928
- canViewCaptionPanel: _util.default.canViewCaptionPanel(this.userDisplayHints),
3929
- isRealTimeTranslationEnabled: _util.default.isRealTimeTranslationEnabled(this.userDisplayHints),
3930
- canSelectSpokenLanguages: _util.default.canSelectSpokenLanguages(this.userDisplayHints),
3931
- waitingForOthersToJoin: _util.default.waitingForOthersToJoin(this.userDisplayHints),
3932
- canSendReactions: _util.default.canSendReactions(this.inMeetingActions.canSendReactions, this.userDisplayHints),
3933
- canManageBreakout: _util.default.canManageBreakout(this.userDisplayHints),
3934
- canBroadcastMessageToBreakout: _util.default.canBroadcastMessageToBreakout(this.userDisplayHints, this.selfUserPolicies),
3935
- canAdmitLobbyToBreakout: _util.default.canAdmitLobbyToBreakout(this.userDisplayHints),
3936
- isBreakoutPreassignmentsEnabled: _util.default.isBreakoutPreassignmentsEnabled(this.userDisplayHints),
3937
- canUserAskForHelp: _util.default.canUserAskForHelp(this.userDisplayHints),
3938
- canUserRenameSelfAndObserved: _util.default.canUserRenameSelfAndObserved(this.userDisplayHints),
3939
- canUserRenameOthers: _util.default.canUserRenameOthers(this.userDisplayHints),
3940
- canMuteAll: _util4.default.hasHints({
3942
+ canInviteNewParticipants: _util2.default.canInviteNewParticipants(this.userDisplayHints),
3943
+ canAdmitParticipant: _util2.default.canAdmitParticipant(this.userDisplayHints),
3944
+ canLock: _util2.default.canUserLock(this.userDisplayHints),
3945
+ canUnlock: _util2.default.canUserUnlock(this.userDisplayHints),
3946
+ canShareWhiteBoard: _util2.default.canShareWhiteBoard(this.userDisplayHints),
3947
+ canSetDisallowUnmute: _util5.default.canSetDisallowUnmute(this.userDisplayHints),
3948
+ canUnsetDisallowUnmute: _util5.default.canUnsetDisallowUnmute(this.userDisplayHints),
3949
+ canSetMuteOnEntry: _util5.default.canSetMuteOnEntry(this.userDisplayHints),
3950
+ canUnsetMuteOnEntry: _util5.default.canUnsetMuteOnEntry(this.userDisplayHints),
3951
+ canSetMuted: _util5.default.canSetMuted(this.userDisplayHints),
3952
+ canUnsetMuted: _util5.default.canUnsetMuted(this.userDisplayHints),
3953
+ canStartRecording: _util4.default.canUserStart(this.userDisplayHints, this.selfUserPolicies),
3954
+ canStopRecording: _util4.default.canUserStop(this.userDisplayHints, this.selfUserPolicies),
3955
+ canPauseRecording: _util4.default.canUserPause(this.userDisplayHints, this.selfUserPolicies),
3956
+ canResumeRecording: _util4.default.canUserResume(this.userDisplayHints, this.selfUserPolicies),
3957
+ canRaiseHand: _util2.default.canUserRaiseHand(this.userDisplayHints),
3958
+ canLowerAllHands: _util2.default.canUserLowerAllHands(this.userDisplayHints),
3959
+ canLowerSomeoneElsesHand: _util2.default.canUserLowerSomeoneElsesHand(this.userDisplayHints),
3960
+ bothLeaveAndEndMeetingAvailable: _util2.default.bothLeaveAndEndMeetingAvailable(this.userDisplayHints),
3961
+ canEnableClosedCaption: _util2.default.canEnableClosedCaption(this.userDisplayHints),
3962
+ canStartTranscribing: _util2.default.canStartTranscribing(this.userDisplayHints),
3963
+ canStopTranscribing: _util2.default.canStopTranscribing(this.userDisplayHints),
3964
+ isClosedCaptionActive: _util2.default.isClosedCaptionActive(this.userDisplayHints),
3965
+ isSaveTranscriptsEnabled: _util2.default.isSaveTranscriptsEnabled(this.userDisplayHints),
3966
+ isWebexAssistantActive: _util2.default.isWebexAssistantActive(this.userDisplayHints),
3967
+ canViewCaptionPanel: _util2.default.canViewCaptionPanel(this.userDisplayHints),
3968
+ isRealTimeTranslationEnabled: _util2.default.isRealTimeTranslationEnabled(this.userDisplayHints),
3969
+ canSelectSpokenLanguages: _util2.default.canSelectSpokenLanguages(this.userDisplayHints),
3970
+ waitingForOthersToJoin: _util2.default.waitingForOthersToJoin(this.userDisplayHints),
3971
+ canSendReactions: _util2.default.canSendReactions(this.inMeetingActions.canSendReactions, this.userDisplayHints),
3972
+ canManageBreakout: _util2.default.canManageBreakout(this.userDisplayHints),
3973
+ canBroadcastMessageToBreakout: _util2.default.canBroadcastMessageToBreakout(this.userDisplayHints, this.selfUserPolicies),
3974
+ canAdmitLobbyToBreakout: _util2.default.canAdmitLobbyToBreakout(this.userDisplayHints),
3975
+ isBreakoutPreassignmentsEnabled: _util2.default.isBreakoutPreassignmentsEnabled(this.userDisplayHints),
3976
+ canUserAskForHelp: _util2.default.canUserAskForHelp(this.userDisplayHints),
3977
+ canUserRenameSelfAndObserved: _util2.default.canUserRenameSelfAndObserved(this.userDisplayHints),
3978
+ canUserRenameOthers: _util2.default.canUserRenameOthers(this.userDisplayHints),
3979
+ canMuteAll: _util5.default.hasHints({
3941
3980
  requiredHints: [_constants.DISPLAY_HINTS.MUTE_ALL],
3942
3981
  displayHints: this.userDisplayHints
3943
3982
  }),
3944
- canUnmuteAll: _util4.default.hasHints({
3983
+ canUnmuteAll: _util5.default.hasHints({
3945
3984
  requiredHints: [_constants.DISPLAY_HINTS.UNMUTE_ALL],
3946
3985
  displayHints: this.userDisplayHints
3947
3986
  }),
3948
- canEnableHardMute: _util4.default.hasHints({
3987
+ canEnableHardMute: _util5.default.hasHints({
3949
3988
  requiredHints: [_constants.DISPLAY_HINTS.ENABLE_HARD_MUTE],
3950
3989
  displayHints: this.userDisplayHints
3951
3990
  }),
3952
- canDisableHardMute: _util4.default.hasHints({
3991
+ canDisableHardMute: _util5.default.hasHints({
3953
3992
  requiredHints: [_constants.DISPLAY_HINTS.DISABLE_HARD_MUTE],
3954
3993
  displayHints: this.userDisplayHints
3955
3994
  }),
3956
- canEnableMuteOnEntry: _util4.default.hasHints({
3995
+ canEnableMuteOnEntry: _util5.default.hasHints({
3957
3996
  requiredHints: [_constants.DISPLAY_HINTS.ENABLE_MUTE_ON_ENTRY],
3958
3997
  displayHints: this.userDisplayHints
3959
3998
  }),
3960
- canDisableMuteOnEntry: _util4.default.hasHints({
3999
+ canDisableMuteOnEntry: _util5.default.hasHints({
3961
4000
  requiredHints: [_constants.DISPLAY_HINTS.DISABLE_MUTE_ON_ENTRY],
3962
4001
  displayHints: this.userDisplayHints
3963
4002
  }),
3964
- canEnableReactions: _util4.default.hasHints({
4003
+ canEnableReactions: _util5.default.hasHints({
3965
4004
  requiredHints: [_constants.DISPLAY_HINTS.ENABLE_REACTIONS],
3966
4005
  displayHints: this.userDisplayHints
3967
4006
  }),
3968
- canDisableReactions: _util4.default.hasHints({
4007
+ canDisableReactions: _util5.default.hasHints({
3969
4008
  requiredHints: [_constants.DISPLAY_HINTS.DISABLE_REACTIONS],
3970
4009
  displayHints: this.userDisplayHints
3971
4010
  }),
3972
- canEnableReactionDisplayNames: _util4.default.hasHints({
4011
+ canEnableReactionDisplayNames: _util5.default.hasHints({
3973
4012
  requiredHints: [_constants.DISPLAY_HINTS.ENABLE_SHOW_DISPLAY_NAME],
3974
4013
  displayHints: this.userDisplayHints
3975
4014
  }),
3976
- canDisableReactionDisplayNames: _util4.default.hasHints({
4015
+ canDisableReactionDisplayNames: _util5.default.hasHints({
3977
4016
  requiredHints: [_constants.DISPLAY_HINTS.DISABLE_SHOW_DISPLAY_NAME],
3978
4017
  displayHints: this.userDisplayHints
3979
4018
  }),
3980
- canUpdateShareControl: _util4.default.hasHints({
4019
+ canUpdateShareControl: _util5.default.hasHints({
3981
4020
  requiredHints: [_constants.DISPLAY_HINTS.SHARE_CONTROL],
3982
4021
  displayHints: this.userDisplayHints
3983
4022
  }),
3984
- canEnableViewTheParticipantsList: _util4.default.hasHints({
4023
+ canEnableViewTheParticipantsList: _util5.default.hasHints({
3985
4024
  requiredHints: [_constants.DISPLAY_HINTS.ENABLE_VIEW_THE_PARTICIPANT_LIST],
3986
4025
  displayHints: this.userDisplayHints
3987
4026
  }),
3988
- canDisableViewTheParticipantsList: _util4.default.hasHints({
4027
+ canDisableViewTheParticipantsList: _util5.default.hasHints({
3989
4028
  requiredHints: [_constants.DISPLAY_HINTS.DISABLE_VIEW_THE_PARTICIPANT_LIST],
3990
4029
  displayHints: this.userDisplayHints
3991
4030
  }),
3992
- canEnableRaiseHand: _util4.default.hasHints({
4031
+ canEnableRaiseHand: _util5.default.hasHints({
3993
4032
  requiredHints: [_constants.DISPLAY_HINTS.ENABLE_RAISE_HAND],
3994
4033
  displayHints: this.userDisplayHints
3995
4034
  }),
3996
- canDisableRaiseHand: _util4.default.hasHints({
4035
+ canDisableRaiseHand: _util5.default.hasHints({
3997
4036
  requiredHints: [_constants.DISPLAY_HINTS.DISABLE_RAISE_HAND],
3998
4037
  displayHints: this.userDisplayHints
3999
4038
  }),
4000
- canEnableVideo: _util4.default.hasHints({
4039
+ canEnableVideo: _util5.default.hasHints({
4001
4040
  requiredHints: [_constants.DISPLAY_HINTS.ENABLE_VIDEO],
4002
4041
  displayHints: this.userDisplayHints
4003
4042
  }),
4004
- canDisableVideo: _util4.default.hasHints({
4043
+ canDisableVideo: _util5.default.hasHints({
4005
4044
  requiredHints: [_constants.DISPLAY_HINTS.DISABLE_VIDEO],
4006
4045
  displayHints: this.userDisplayHints
4007
4046
  }),
4008
- canShareFile: _util4.default.hasHints({
4047
+ canShareFile: _util5.default.hasHints({
4009
4048
  requiredHints: [_constants.DISPLAY_HINTS.SHARE_FILE],
4010
4049
  displayHints: this.userDisplayHints
4011
- }) && _util4.default.hasPolicies({
4050
+ }) && _util5.default.hasPolicies({
4012
4051
  requiredPolicies: [_constants.SELF_POLICY.SUPPORT_FILE_SHARE],
4013
4052
  policies: this.selfUserPolicies
4014
4053
  }) || !this.arePolicyRestrictionsSupported,
4015
- canTransferFile: _util4.default.hasPolicies({
4054
+ canTransferFile: _util5.default.hasPolicies({
4016
4055
  requiredPolicies: [_constants.SELF_POLICY.SUPPORT_FILE_TRANSFER],
4017
4056
  policies: this.selfUserPolicies
4018
4057
  }),
4019
- canChat: _util4.default.hasPolicies({
4058
+ canChat: _util5.default.hasPolicies({
4020
4059
  requiredPolicies: [_constants.SELF_POLICY.SUPPORT_CHAT],
4021
4060
  policies: this.selfUserPolicies
4022
4061
  }),
4023
- canShareApplication: _util4.default.hasHints({
4062
+ canShareApplication: _util5.default.hasHints({
4024
4063
  requiredHints: [_constants.DISPLAY_HINTS.SHARE_APPLICATION],
4025
4064
  displayHints: this.userDisplayHints
4026
- }) && _util4.default.hasPolicies({
4065
+ }) && _util5.default.hasPolicies({
4027
4066
  requiredPolicies: [_constants.SELF_POLICY.SUPPORT_APP_SHARE],
4028
4067
  policies: this.selfUserPolicies
4029
4068
  }) || !this.arePolicyRestrictionsSupported(),
4030
- canShareCamera: _util4.default.hasHints({
4069
+ canShareCamera: _util5.default.hasHints({
4031
4070
  requiredHints: [_constants.DISPLAY_HINTS.SHARE_CAMERA],
4032
4071
  displayHints: this.userDisplayHints
4033
- }) && _util4.default.hasPolicies({
4072
+ }) && _util5.default.hasPolicies({
4034
4073
  requiredPolicies: [_constants.SELF_POLICY.SUPPORT_CAMERA_SHARE],
4035
4074
  policies: this.selfUserPolicies
4036
4075
  }),
4037
- canShareDesktop: _util4.default.hasHints({
4076
+ canShareDesktop: _util5.default.hasHints({
4038
4077
  requiredHints: [_constants.DISPLAY_HINTS.SHARE_DESKTOP],
4039
4078
  displayHints: this.userDisplayHints
4040
- }) && _util4.default.hasPolicies({
4079
+ }) && _util5.default.hasPolicies({
4041
4080
  requiredPolicies: [_constants.SELF_POLICY.SUPPORT_DESKTOP_SHARE],
4042
4081
  policies: this.selfUserPolicies
4043
4082
  }) || !this.arePolicyRestrictionsSupported(),
4044
- canShareContent: _util4.default.hasHints({
4083
+ canShareContent: _util5.default.hasHints({
4045
4084
  requiredHints: [_constants.DISPLAY_HINTS.SHARE_CONTENT],
4046
4085
  displayHints: this.userDisplayHints
4047
4086
  }) || !this.arePolicyRestrictionsSupported(),
4048
- canAnnotate: _util4.default.hasPolicies({
4087
+ canAnnotate: _util5.default.hasPolicies({
4049
4088
  requiredPolicies: [_constants.SELF_POLICY.SUPPORT_ANNOTATION],
4050
4089
  policies: this.selfUserPolicies
4051
4090
  })
@@ -4233,24 +4272,26 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4233
4272
  while (1) switch (_context11.prev = _context11.next) {
4234
4273
  case 0:
4235
4274
  oldStream = this.mediaProperties.audioStream;
4236
- oldStream === null || oldStream === void 0 ? void 0 : oldStream.off(_mediaHelpers.StreamEventNames.MuteStateChange, this.localAudioStreamMuteStateHandler);
4275
+ oldStream === null || oldStream === void 0 ? void 0 : oldStream.off(_mediaHelpers.LocalStreamEventNames.UserMuteStateChange, this.localAudioStreamMuteStateHandler);
4276
+ oldStream === null || oldStream === void 0 ? void 0 : oldStream.off(_mediaHelpers.LocalStreamEventNames.SystemMuteStateChange, this.localAudioStreamMuteStateHandler);
4237
4277
  oldStream === null || oldStream === void 0 ? void 0 : oldStream.off(_mediaHelpers.LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);
4238
4278
 
4239
4279
  // we don't update this.mediaProperties.mediaDirection.sendAudio, because we always keep it as true to avoid extra SDP exchanges
4240
4280
  this.mediaProperties.setLocalAudioStream(localStream);
4241
4281
  this.audio.handleLocalStreamChange(this);
4242
- localStream === null || localStream === void 0 ? void 0 : localStream.on(_mediaHelpers.StreamEventNames.MuteStateChange, this.localAudioStreamMuteStateHandler);
4282
+ localStream === null || localStream === void 0 ? void 0 : localStream.on(_mediaHelpers.LocalStreamEventNames.UserMuteStateChange, this.localAudioStreamMuteStateHandler);
4283
+ localStream === null || localStream === void 0 ? void 0 : localStream.on(_mediaHelpers.LocalStreamEventNames.SystemMuteStateChange, this.localAudioStreamMuteStateHandler);
4243
4284
  localStream === null || localStream === void 0 ? void 0 : localStream.on(_mediaHelpers.LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);
4244
4285
  if (!(!this.isMultistream || !localStream)) {
4245
- _context11.next = 10;
4286
+ _context11.next = 12;
4246
4287
  break;
4247
4288
  }
4248
- _context11.next = 10;
4249
- return this.unpublishStream(_internalMediaCore.MediaType.AudioMain, oldStream);
4250
- case 10:
4251
4289
  _context11.next = 12;
4252
- return this.publishStream(_internalMediaCore.MediaType.AudioMain, this.mediaProperties.audioStream);
4290
+ return this.unpublishStream(_internalMediaCore.MediaType.AudioMain, oldStream);
4253
4291
  case 12:
4292
+ _context11.next = 14;
4293
+ return this.publishStream(_internalMediaCore.MediaType.AudioMain, this.mediaProperties.audioStream);
4294
+ case 14:
4254
4295
  case "end":
4255
4296
  return _context11.stop();
4256
4297
  }
@@ -4278,24 +4319,26 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4278
4319
  while (1) switch (_context12.prev = _context12.next) {
4279
4320
  case 0:
4280
4321
  oldStream = this.mediaProperties.videoStream;
4281
- oldStream === null || oldStream === void 0 ? void 0 : oldStream.off(_mediaHelpers.StreamEventNames.MuteStateChange, this.localVideoStreamMuteStateHandler);
4322
+ oldStream === null || oldStream === void 0 ? void 0 : oldStream.off(_mediaHelpers.LocalStreamEventNames.UserMuteStateChange, this.localVideoStreamMuteStateHandler);
4323
+ oldStream === null || oldStream === void 0 ? void 0 : oldStream.off(_mediaHelpers.LocalStreamEventNames.SystemMuteStateChange, this.localVideoStreamMuteStateHandler);
4282
4324
  oldStream === null || oldStream === void 0 ? void 0 : oldStream.off(_mediaHelpers.LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);
4283
4325
 
4284
4326
  // we don't update this.mediaProperties.mediaDirection.sendVideo, because we always keep it as true to avoid extra SDP exchanges
4285
4327
  this.mediaProperties.setLocalVideoStream(localStream);
4286
4328
  this.video.handleLocalStreamChange(this);
4287
- localStream === null || localStream === void 0 ? void 0 : localStream.on(_mediaHelpers.StreamEventNames.MuteStateChange, this.localVideoStreamMuteStateHandler);
4329
+ localStream === null || localStream === void 0 ? void 0 : localStream.on(_mediaHelpers.LocalStreamEventNames.UserMuteStateChange, this.localVideoStreamMuteStateHandler);
4330
+ localStream === null || localStream === void 0 ? void 0 : localStream.on(_mediaHelpers.LocalStreamEventNames.SystemMuteStateChange, this.localVideoStreamMuteStateHandler);
4288
4331
  localStream === null || localStream === void 0 ? void 0 : localStream.on(_mediaHelpers.LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);
4289
4332
  if (!(!this.isMultistream || !localStream)) {
4290
- _context12.next = 10;
4333
+ _context12.next = 12;
4291
4334
  break;
4292
4335
  }
4293
- _context12.next = 10;
4294
- return this.unpublishStream(_internalMediaCore.MediaType.VideoMain, oldStream);
4295
- case 10:
4296
4336
  _context12.next = 12;
4297
- return this.publishStream(_internalMediaCore.MediaType.VideoMain, this.mediaProperties.videoStream);
4337
+ return this.unpublishStream(_internalMediaCore.MediaType.VideoMain, oldStream);
4298
4338
  case 12:
4339
+ _context12.next = 14;
4340
+ return this.publishStream(_internalMediaCore.MediaType.VideoMain, this.mediaProperties.videoStream);
4341
+ case 14:
4299
4342
  case "end":
4300
4343
  return _context12.stop();
4301
4344
  }
@@ -4324,11 +4367,11 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4324
4367
  while (1) switch (_context13.prev = _context13.next) {
4325
4368
  case 0:
4326
4369
  oldStream = this.mediaProperties.shareVideoStream;
4327
- oldStream === null || oldStream === void 0 ? void 0 : oldStream.off(_mediaHelpers.StreamEventNames.MuteStateChange, this.handleShareVideoStreamMuteStateChange);
4370
+ oldStream === null || oldStream === void 0 ? void 0 : oldStream.off(_mediaHelpers.LocalStreamEventNames.SystemMuteStateChange, this.handleShareVideoStreamMuteStateChange);
4328
4371
  oldStream === null || oldStream === void 0 ? void 0 : oldStream.off(_mediaHelpers.StreamEventNames.Ended, this.handleShareVideoStreamEnded);
4329
4372
  oldStream === null || oldStream === void 0 ? void 0 : oldStream.off(_mediaHelpers.LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);
4330
4373
  this.mediaProperties.setLocalShareVideoStream(localDisplayStream);
4331
- localDisplayStream === null || localDisplayStream === void 0 ? void 0 : localDisplayStream.on(_mediaHelpers.StreamEventNames.MuteStateChange, this.handleShareVideoStreamMuteStateChange);
4374
+ localDisplayStream === null || localDisplayStream === void 0 ? void 0 : localDisplayStream.on(_mediaHelpers.LocalStreamEventNames.SystemMuteStateChange, this.handleShareVideoStreamMuteStateChange);
4332
4375
  localDisplayStream === null || localDisplayStream === void 0 ? void 0 : localDisplayStream.on(_mediaHelpers.StreamEventNames.Ended, this.handleShareVideoStreamEnded);
4333
4376
  localDisplayStream === null || localDisplayStream === void 0 ? void 0 : localDisplayStream.on(_mediaHelpers.LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);
4334
4377
  this.mediaProperties.mediaDirection.sendShare = this.mediaProperties.hasLocalShareStream();
@@ -4434,13 +4477,15 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4434
4477
  videoStream = _this$mediaProperties5.videoStream,
4435
4478
  shareAudioStream = _this$mediaProperties5.shareAudioStream,
4436
4479
  shareVideoStream = _this$mediaProperties5.shareVideoStream;
4437
- audioStream === null || audioStream === void 0 ? void 0 : audioStream.off(_mediaHelpers.StreamEventNames.MuteStateChange, this.localAudioStreamMuteStateHandler);
4480
+ audioStream === null || audioStream === void 0 ? void 0 : audioStream.off(_mediaHelpers.LocalStreamEventNames.UserMuteStateChange, this.localAudioStreamMuteStateHandler);
4481
+ audioStream === null || audioStream === void 0 ? void 0 : audioStream.off(_mediaHelpers.LocalStreamEventNames.SystemMuteStateChange, this.localAudioStreamMuteStateHandler);
4438
4482
  audioStream === null || audioStream === void 0 ? void 0 : audioStream.off(_mediaHelpers.LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);
4439
- videoStream === null || videoStream === void 0 ? void 0 : videoStream.off(_mediaHelpers.StreamEventNames.MuteStateChange, this.localVideoStreamMuteStateHandler);
4483
+ videoStream === null || videoStream === void 0 ? void 0 : videoStream.off(_mediaHelpers.LocalStreamEventNames.UserMuteStateChange, this.localVideoStreamMuteStateHandler);
4484
+ videoStream === null || videoStream === void 0 ? void 0 : videoStream.off(_mediaHelpers.LocalStreamEventNames.SystemMuteStateChange, this.localVideoStreamMuteStateHandler);
4440
4485
  videoStream === null || videoStream === void 0 ? void 0 : videoStream.off(_mediaHelpers.LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);
4441
4486
  shareAudioStream === null || shareAudioStream === void 0 ? void 0 : shareAudioStream.off(_mediaHelpers.StreamEventNames.Ended, this.handleShareAudioStreamEnded);
4442
4487
  shareAudioStream === null || shareAudioStream === void 0 ? void 0 : shareAudioStream.off(_mediaHelpers.LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);
4443
- shareVideoStream === null || shareVideoStream === void 0 ? void 0 : shareVideoStream.off(_mediaHelpers.StreamEventNames.MuteStateChange, this.handleShareVideoStreamMuteStateChange);
4488
+ shareVideoStream === null || shareVideoStream === void 0 ? void 0 : shareVideoStream.off(_mediaHelpers.LocalStreamEventNames.SystemMuteStateChange, this.handleShareVideoStreamMuteStateChange);
4444
4489
  shareVideoStream === null || shareVideoStream === void 0 ? void 0 : shareVideoStream.off(_mediaHelpers.StreamEventNames.Ended, this.handleShareVideoStreamEnded);
4445
4490
  shareVideoStream === null || shareVideoStream === void 0 ? void 0 : shareVideoStream.off(_mediaHelpers.LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);
4446
4491
  this.mediaProperties.setLocalAudioStream(undefined);
@@ -4631,7 +4676,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4631
4676
  key: "muteAudio",
4632
4677
  value: function muteAudio() {
4633
4678
  var _this24 = this;
4634
- if (!_util.default.isUserInJoinedState(this.locusInfo)) {
4679
+ if (!_util2.default.isUserInJoinedState(this.locusInfo)) {
4635
4680
  return _promise.default.reject(new _webexErrors.UserNotJoinedError());
4636
4681
  }
4637
4682
 
@@ -4646,7 +4691,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4646
4691
 
4647
4692
  // First, stop sending the local audio media
4648
4693
  return logRequest(this.audio.handleClientRequest(this, true).then(function () {
4649
- _util.default.handleAudioLogging(_this24.mediaProperties.audioStream);
4694
+ _util2.default.handleAudioLogging(_this24.mediaProperties.audioStream);
4650
4695
  // @ts-ignore
4651
4696
  _this24.webex.internal.newMetrics.submitClientEvent({
4652
4697
  name: 'client.muted',
@@ -4681,7 +4726,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4681
4726
  key: "unmuteAudio",
4682
4727
  value: function unmuteAudio() {
4683
4728
  var _this25 = this;
4684
- if (!_util.default.isUserInJoinedState(this.locusInfo)) {
4729
+ if (!_util2.default.isUserInJoinedState(this.locusInfo)) {
4685
4730
  return _promise.default.reject(new _webexErrors.UserNotJoinedError());
4686
4731
  }
4687
4732
 
@@ -4696,7 +4741,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4696
4741
 
4697
4742
  // First, send the control to unmute the participant on the server
4698
4743
  return logRequest(this.audio.handleClientRequest(this, false).then(function () {
4699
- _util.default.handleAudioLogging(_this25.mediaProperties.audioStream);
4744
+ _util2.default.handleAudioLogging(_this25.mediaProperties.audioStream);
4700
4745
  // @ts-ignore
4701
4746
  _this25.webex.internal.newMetrics.submitClientEvent({
4702
4747
  name: 'client.unmuted',
@@ -4731,7 +4776,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4731
4776
  key: "muteVideo",
4732
4777
  value: function muteVideo() {
4733
4778
  var _this26 = this;
4734
- if (!_util.default.isUserInJoinedState(this.locusInfo)) {
4779
+ if (!_util2.default.isUserInJoinedState(this.locusInfo)) {
4735
4780
  return _promise.default.reject(new _webexErrors.UserNotJoinedError());
4736
4781
  }
4737
4782
 
@@ -4744,7 +4789,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4744
4789
  return _promise.default.reject(new _parameter.default('no video control associated to the meeting'));
4745
4790
  }
4746
4791
  return logRequest(this.video.handleClientRequest(this, true).then(function () {
4747
- _util.default.handleVideoLogging(_this26.mediaProperties.videoStream);
4792
+ _util2.default.handleVideoLogging(_this26.mediaProperties.videoStream);
4748
4793
  // @ts-ignore
4749
4794
  _this26.webex.internal.newMetrics.submitClientEvent({
4750
4795
  name: 'client.muted',
@@ -4779,7 +4824,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4779
4824
  key: "unmuteVideo",
4780
4825
  value: function unmuteVideo() {
4781
4826
  var _this27 = this;
4782
- if (!_util.default.isUserInJoinedState(this.locusInfo)) {
4827
+ if (!_util2.default.isUserInJoinedState(this.locusInfo)) {
4783
4828
  return _promise.default.reject(new _webexErrors.UserNotJoinedError());
4784
4829
  }
4785
4830
 
@@ -4792,7 +4837,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4792
4837
  return _promise.default.reject(new _parameter.default('no audio control associated to the meeting'));
4793
4838
  }
4794
4839
  return logRequest(this.video.handleClientRequest(this, false).then(function () {
4795
- _util.default.handleVideoLogging(_this27.mediaProperties.videoStream);
4840
+ _util2.default.handleVideoLogging(_this27.mediaProperties.videoStream);
4796
4841
  // @ts-ignore
4797
4842
  _this27.webex.internal.newMetrics.submitClientEvent({
4798
4843
  name: 'client.unmuted',
@@ -4835,36 +4880,123 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4835
4880
  */
4836
4881
  }, {
4837
4882
  key: "joinWithMedia",
4838
- value: function joinWithMedia() {
4839
- var _this28 = this;
4840
- var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
4841
- var mediaOptions = options.mediaOptions,
4842
- joinOptions = options.joinOptions;
4843
- if (!(mediaOptions !== null && mediaOptions !== void 0 && mediaOptions.allowMediaInLobby)) {
4844
- return _promise.default.reject(new _parameter.default('joinWithMedia() can only be used with allowMediaInLobby set to true'));
4883
+ value: (function () {
4884
+ var _joinWithMedia = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee15() {
4885
+ var options,
4886
+ mediaOptions,
4887
+ _options$joinOptions,
4888
+ joinOptions,
4889
+ joined,
4890
+ turnServerInfo,
4891
+ turnDiscoverySkippedReason,
4892
+ turnDiscoveryRequest,
4893
+ joinResponse,
4894
+ _yield$this$roap$hand,
4895
+ mediaResponse,
4896
+ _this$locusUrl,
4897
+ _leaveError,
4898
+ leaveError,
4899
+ _args15 = arguments;
4900
+ return _regenerator.default.wrap(function _callee15$(_context15) {
4901
+ while (1) switch (_context15.prev = _context15.next) {
4902
+ case 0:
4903
+ options = _args15.length > 0 && _args15[0] !== undefined ? _args15[0] : {};
4904
+ mediaOptions = options.mediaOptions, _options$joinOptions = options.joinOptions, joinOptions = _options$joinOptions === void 0 ? {} : _options$joinOptions;
4905
+ if (mediaOptions !== null && mediaOptions !== void 0 && mediaOptions.allowMediaInLobby) {
4906
+ _context15.next = 4;
4907
+ break;
4908
+ }
4909
+ return _context15.abrupt("return", _promise.default.reject(new _parameter.default('joinWithMedia() can only be used with allowMediaInLobby set to true')));
4910
+ case 4:
4911
+ this.allowMediaInLobby = true;
4912
+ _loggerProxy.default.logger.info('Meeting:index#joinWithMedia called');
4913
+ joined = false;
4914
+ _context15.prev = 7;
4915
+ _context15.next = 10;
4916
+ return this.webex.meetings.reachability.getReachabilityResults();
4917
+ case 10:
4918
+ joinOptions.reachability = _context15.sent;
4919
+ _context15.next = 13;
4920
+ return this.roap.generateTurnDiscoveryRequestMessage(this, true);
4921
+ case 13:
4922
+ turnDiscoveryRequest = _context15.sent;
4923
+ turnDiscoverySkippedReason = turnDiscoveryRequest.turnDiscoverySkippedReason;
4924
+ joinOptions.roapMessage = turnDiscoveryRequest.roapMessage;
4925
+ _context15.next = 18;
4926
+ return this.join(joinOptions);
4927
+ case 18:
4928
+ joinResponse = _context15.sent;
4929
+ joined = true;
4930
+ if (!joinOptions.roapMessage) {
4931
+ _context15.next = 29;
4932
+ break;
4933
+ }
4934
+ _context15.next = 23;
4935
+ return this.roap.handleTurnDiscoveryHttpResponse(this, joinResponse);
4936
+ case 23:
4937
+ _yield$this$roap$hand = _context15.sent;
4938
+ turnServerInfo = _yield$this$roap$hand.turnServerInfo;
4939
+ turnDiscoverySkippedReason = _yield$this$roap$hand.turnDiscoverySkippedReason;
4940
+ this.turnDiscoverySkippedReason = turnDiscoverySkippedReason;
4941
+ this.turnServerUsed = !!turnServerInfo;
4942
+ if (turnServerInfo === undefined) {
4943
+ this.roap.abortTurnDiscovery();
4944
+ }
4945
+ case 29:
4946
+ _context15.next = 31;
4947
+ return this.addMedia(mediaOptions, turnServerInfo);
4948
+ case 31:
4949
+ mediaResponse = _context15.sent;
4950
+ return _context15.abrupt("return", {
4951
+ join: joinResponse,
4952
+ media: mediaResponse
4953
+ });
4954
+ case 35:
4955
+ _context15.prev = 35;
4956
+ _context15.t0 = _context15["catch"](7);
4957
+ _loggerProxy.default.logger.error('Meeting:index#joinWithMedia --> ', _context15.t0);
4958
+ this.roap.abortTurnDiscovery();
4959
+ if (!joined) {
4960
+ _context15.next = 49;
4961
+ break;
4962
+ }
4963
+ _context15.prev = 40;
4964
+ _context15.next = 43;
4965
+ return this.leave({
4966
+ resourceId: joinOptions === null || joinOptions === void 0 ? void 0 : joinOptions.resourceId,
4967
+ reason: 'joinWithMedia failure'
4968
+ });
4969
+ case 43:
4970
+ _context15.next = 49;
4971
+ break;
4972
+ case 45:
4973
+ _context15.prev = 45;
4974
+ _context15.t1 = _context15["catch"](40);
4975
+ _loggerProxy.default.logger.error('Meeting:index#joinWithMedia --> leave error', _context15.t1);
4976
+ leaveError = _context15.t1;
4977
+ case 49:
4978
+ _metrics.default.sendBehavioralMetric(_constants2.default.JOIN_WITH_MEDIA_FAILURE, {
4979
+ correlation_id: this.correlationId,
4980
+ locus_id: (_this$locusUrl = this.locusUrl) === null || _this$locusUrl === void 0 ? void 0 : _this$locusUrl.split('/').pop(),
4981
+ // if join fails, we may end up with no locusUrl
4982
+ reason: _context15.t0.message,
4983
+ stack: _context15.t0.stack,
4984
+ leaveErrorReason: (_leaveError = leaveError) === null || _leaveError === void 0 ? void 0 : _leaveError.message
4985
+ }, {
4986
+ type: _context15.t0.name
4987
+ });
4988
+ throw _context15.t0;
4989
+ case 51:
4990
+ case "end":
4991
+ return _context15.stop();
4992
+ }
4993
+ }, _callee15, this, [[7, 35], [40, 45]]);
4994
+ }));
4995
+ function joinWithMedia() {
4996
+ return _joinWithMedia.apply(this, arguments);
4845
4997
  }
4846
- _loggerProxy.default.logger.info('Meeting:index#joinWithMedia called');
4847
- return this.join(joinOptions).then(function (joinResponse) {
4848
- return _this28.addMedia(mediaOptions).then(function (mediaResponse) {
4849
- return {
4850
- join: joinResponse,
4851
- media: mediaResponse
4852
- };
4853
- });
4854
- }).catch(function (error) {
4855
- _loggerProxy.default.logger.error('Meeting:index#joinWithMedia --> ', error);
4856
- _metrics.default.sendBehavioralMetric(_constants2.default.JOIN_WITH_MEDIA_FAILURE, {
4857
- correlation_id: _this28.correlationId,
4858
- locus_id: _this28.locusUrl.split('/').pop(),
4859
- reason: error.message,
4860
- stack: error.stack
4861
- }, {
4862
- type: error.name
4863
- });
4864
- return _promise.default.reject(error);
4865
- });
4866
- }
4867
-
4998
+ return joinWithMedia;
4999
+ }()
4868
5000
  /**
4869
5001
  * Initiates the reconnection of the media in the meeting
4870
5002
  *
@@ -4873,17 +5005,18 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4873
5005
  * @public
4874
5006
  * @memberof Meeting
4875
5007
  */
5008
+ )
4876
5009
  }, {
4877
5010
  key: "reconnect",
4878
5011
  value: function reconnect(options) {
4879
- var _this29 = this;
5012
+ var _this28 = this;
4880
5013
  _loggerProxy.default.logger.log("Meeting:index#reconnect --> attempting to reconnect meeting ".concat(this.id));
4881
5014
  if (!this.reconnectionManager || !this.reconnectionManager.reconnect) {
4882
5015
  return _promise.default.reject(new _parameter.default('Cannot reconnect, ReconnectionManager must first be defined.'));
4883
5016
  }
4884
5017
 
4885
5018
  // @ts-ignore - currentMediaStatus coming from SelfUtil
4886
- if (!_util.default.isMediaEstablished(this.currentMediaStatus)) {
5019
+ if (!_util2.default.isMediaEstablished(this.currentMediaStatus)) {
4887
5020
  return _promise.default.reject(new _parameter.default('Cannot reconnect, Media has not established to reconnect'));
4888
5021
  }
4889
5022
  try {
@@ -4904,29 +5037,29 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4904
5037
  function: 'reconnect'
4905
5038
  }, _constants.EVENT_TRIGGERS.MEETING_RECONNECTION_STARTING);
4906
5039
  return this.reconnectionManager.reconnect(options).then(function () {
4907
- return _this29.waitForRemoteSDPAnswer();
5040
+ return _this28.waitForRemoteSDPAnswer();
4908
5041
  }).then(function () {
4909
- return _this29.waitForMediaConnectionConnected();
5042
+ return _this28.waitForMediaConnectionConnected();
4910
5043
  }).then(function () {
4911
- _triggerProxy.default.trigger(_this29, {
5044
+ _triggerProxy.default.trigger(_this28, {
4912
5045
  file: 'meeting/index',
4913
5046
  function: 'reconnect'
4914
5047
  }, _constants.EVENT_TRIGGERS.MEETING_RECONNECTION_SUCCESS);
4915
5048
  _loggerProxy.default.logger.log('Meeting:index#reconnect --> Meeting reconnect success');
4916
5049
 
4917
5050
  // @ts-ignore
4918
- _this29.webex.internal.newMetrics.submitClientEvent({
5051
+ _this28.webex.internal.newMetrics.submitClientEvent({
4919
5052
  name: 'client.media.recovered',
4920
5053
  payload: {
4921
5054
  recoveredBy: 'new'
4922
5055
  },
4923
5056
  options: {
4924
- meetingId: _this29.id
5057
+ meetingId: _this28.id
4925
5058
  }
4926
5059
  });
4927
- _this29.reconnectionManager.setStatus(_constants.RECONNECTION.STATE.COMPLETE);
5060
+ _this28.reconnectionManager.setStatus(_constants.RECONNECTION.STATE.COMPLETE);
4928
5061
  }).catch(function (error) {
4929
- _triggerProxy.default.trigger(_this29, {
5062
+ _triggerProxy.default.trigger(_this28, {
4930
5063
  file: 'meeting/index',
4931
5064
  function: 'reconnect'
4932
5065
  }, _constants.EVENT_TRIGGERS.MEETING_RECONNECTION_FAILURE, {
@@ -4934,18 +5067,18 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4934
5067
  });
4935
5068
  _loggerProxy.default.logger.error('Meeting:index#reconnect --> Meeting reconnect failed', error);
4936
5069
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_RECONNECT_FAILURE, {
4937
- correlation_id: _this29.correlationId,
4938
- locus_id: _this29.locusUrl.split('/').pop(),
5070
+ correlation_id: _this28.correlationId,
5071
+ locus_id: _this28.locusUrl.split('/').pop(),
4939
5072
  reason: error.message,
4940
5073
  stack: error.stack
4941
5074
  });
4942
- _this29.uploadLogs({
5075
+ _this28.uploadLogs({
4943
5076
  file: 'meeting/index',
4944
5077
  function: 'reconnect'
4945
5078
  });
4946
5079
  return _promise.default.reject(new _reconnection.default('Reconnection failure event', error));
4947
5080
  }).finally(function () {
4948
- _this29.reconnectionManager.reset();
5081
+ _this28.reconnectionManager.reset();
4949
5082
  });
4950
5083
  }
4951
5084
 
@@ -4988,19 +5121,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4988
5121
  }, {
4989
5122
  key: "setCaptionLanguage",
4990
5123
  value: function setCaptionLanguage(language) {
4991
- var _this30 = this;
5124
+ var _this29 = this;
4992
5125
  return new _promise.default(function (resolve, reject) {
4993
- if (!_this30.isTranscriptionSupported()) {
5126
+ if (!_this29.isTranscriptionSupported()) {
4994
5127
  _loggerProxy.default.logger.error('Meeting:index#setCaptionLanguage --> Webex Assistant is not enabled/supported');
4995
5128
  reject(new Error('Webex Assistant is not enabled/supported'));
4996
5129
  }
4997
5130
  try {
4998
5131
  var voiceaListenerCaptionUpdate = function voiceaListenerCaptionUpdate(payload) {
4999
5132
  // @ts-ignore
5000
- _this30.webex.internal.voicea.off(_internalPluginVoicea.EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, voiceaListenerCaptionUpdate);
5133
+ _this29.webex.internal.voicea.off(_internalPluginVoicea.EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, voiceaListenerCaptionUpdate);
5001
5134
  var statusCode = payload.statusCode;
5002
5135
  if (statusCode === 200) {
5003
- _this30.transcription.languageOptions = _objectSpread(_objectSpread({}, _this30.transcription.languageOptions), {}, {
5136
+ _this29.transcription.languageOptions = _objectSpread(_objectSpread({}, _this29.transcription.languageOptions), {}, {
5004
5137
  currentCaptionLanguage: language
5005
5138
  });
5006
5139
  resolve(language);
@@ -5009,9 +5142,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5009
5142
  }
5010
5143
  };
5011
5144
  // @ts-ignore
5012
- _this30.webex.internal.voicea.on(_internalPluginVoicea.EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, voiceaListenerCaptionUpdate);
5145
+ _this29.webex.internal.voicea.on(_internalPluginVoicea.EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, voiceaListenerCaptionUpdate);
5013
5146
  // @ts-ignore
5014
- _this30.webex.internal.voicea.requestLanguage(language);
5147
+ _this29.webex.internal.voicea.requestLanguage(language);
5015
5148
  } catch (error) {
5016
5149
  _loggerProxy.default.logger.error("Meeting:index#setCaptionLanguage --> ".concat(error));
5017
5150
  reject(error);
@@ -5027,19 +5160,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5027
5160
  }, {
5028
5161
  key: "setSpokenLanguage",
5029
5162
  value: function setSpokenLanguage(language) {
5030
- var _this31 = this;
5163
+ var _this30 = this;
5031
5164
  return new _promise.default(function (resolve, reject) {
5032
- if (!_this31.isTranscriptionSupported()) {
5165
+ if (!_this30.isTranscriptionSupported()) {
5033
5166
  _loggerProxy.default.logger.error('Meeting:index#setCaptionLanguage --> Webex Assistant is not enabled/supported');
5034
5167
  reject(new Error('Webex Assistant is not enabled/supported'));
5035
5168
  }
5036
5169
  try {
5037
5170
  var voiceaListenerLanguageUpdate = function voiceaListenerLanguageUpdate(payload) {
5038
5171
  // @ts-ignore
5039
- _this31.webex.internal.voicea.off(_internalPluginVoicea.EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE, voiceaListenerLanguageUpdate);
5172
+ _this30.webex.internal.voicea.off(_internalPluginVoicea.EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE, voiceaListenerLanguageUpdate);
5040
5173
  var languageCode = payload.languageCode;
5041
5174
  if (languageCode) {
5042
- _this31.transcription.languageOptions = _objectSpread(_objectSpread({}, _this31.transcription.languageOptions), {}, {
5175
+ _this30.transcription.languageOptions = _objectSpread(_objectSpread({}, _this30.transcription.languageOptions), {}, {
5043
5176
  currentSpokenLanguage: languageCode
5044
5177
  });
5045
5178
  resolve(languageCode);
@@ -5049,10 +5182,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5049
5182
  };
5050
5183
 
5051
5184
  // @ts-ignore
5052
- _this31.webex.internal.voicea.on(_internalPluginVoicea.EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE, voiceaListenerLanguageUpdate);
5185
+ _this30.webex.internal.voicea.on(_internalPluginVoicea.EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE, voiceaListenerLanguageUpdate);
5053
5186
 
5054
5187
  // @ts-ignore
5055
- _this31.webex.internal.voicea.setSpokenLanguage(language);
5188
+ _this30.webex.internal.voicea.setSpokenLanguage(language);
5056
5189
  } catch (error) {
5057
5190
  _loggerProxy.default.logger.error("Meeting:index#setSpokenLanguage --> ".concat(error));
5058
5191
  reject(error);
@@ -5069,48 +5202,48 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5069
5202
  }, {
5070
5203
  key: "startTranscription",
5071
5204
  value: (function () {
5072
- var _startTranscription = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee15(options) {
5073
- return _regenerator.default.wrap(function _callee15$(_context15) {
5074
- while (1) switch (_context15.prev = _context15.next) {
5205
+ var _startTranscription = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee16(options) {
5206
+ return _regenerator.default.wrap(function _callee16$(_context16) {
5207
+ while (1) switch (_context16.prev = _context16.next) {
5075
5208
  case 0:
5076
5209
  if (!this.isJoined()) {
5077
- _context15.next = 15;
5210
+ _context16.next = 15;
5078
5211
  break;
5079
5212
  }
5080
5213
  _loggerProxy.default.logger.info('Meeting:index#startTranscription --> Attempting to enable transcription!');
5081
- _context15.prev = 2;
5214
+ _context16.prev = 2;
5082
5215
  if (!this.areVoiceaEventsSetup) {
5083
5216
  this.setUpVoiceaListeners();
5084
5217
  }
5085
5218
  if (!(this.getCurUserType() === 'host')) {
5086
- _context15.next = 7;
5219
+ _context16.next = 7;
5087
5220
  break;
5088
5221
  }
5089
- _context15.next = 7;
5222
+ _context16.next = 7;
5090
5223
  return this.webex.internal.voicea.toggleTranscribing(true, options === null || options === void 0 ? void 0 : options.spokenLanguage);
5091
5224
  case 7:
5092
- _context15.next = 13;
5225
+ _context16.next = 13;
5093
5226
  break;
5094
5227
  case 9:
5095
- _context15.prev = 9;
5096
- _context15.t0 = _context15["catch"](2);
5097
- _loggerProxy.default.logger.error("Meeting:index#startTranscription --> ".concat(_context15.t0));
5228
+ _context16.prev = 9;
5229
+ _context16.t0 = _context16["catch"](2);
5230
+ _loggerProxy.default.logger.error("Meeting:index#startTranscription --> ".concat(_context16.t0));
5098
5231
  _metrics.default.sendBehavioralMetric(_constants2.default.RECEIVE_TRANSCRIPTION_FAILURE, {
5099
5232
  correlation_id: this.correlationId,
5100
- reason: _context15.t0.message,
5101
- stack: _context15.t0.stack
5233
+ reason: _context16.t0.message,
5234
+ stack: _context16.t0.stack
5102
5235
  });
5103
5236
  case 13:
5104
- _context15.next = 17;
5237
+ _context16.next = 17;
5105
5238
  break;
5106
5239
  case 15:
5107
5240
  _loggerProxy.default.logger.error("Meeting:index#startTranscription --> meeting joined : ".concat(this.isJoined()));
5108
5241
  throw new Error('Meeting is not joined');
5109
5242
  case 17:
5110
5243
  case "end":
5111
- return _context15.stop();
5244
+ return _context16.stop();
5112
5245
  }
5113
- }, _callee15, this, [[2, 9]]);
5246
+ }, _callee16, this, [[2, 9]]);
5114
5247
  }));
5115
5248
  function startTranscription(_x15) {
5116
5249
  return _startTranscription.apply(this, arguments);
@@ -5173,8 +5306,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5173
5306
  }, {
5174
5307
  key: "join",
5175
5308
  value: (function () {
5176
- var _join = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee16() {
5177
- var _this32 = this;
5309
+ var _join = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee17() {
5310
+ var _this31 = this;
5178
5311
  var options,
5179
5312
  errorMessage,
5180
5313
  error,
@@ -5184,25 +5317,25 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5184
5317
  _error,
5185
5318
  _errorMessage2,
5186
5319
  _error2,
5187
- _args16 = arguments;
5188
- return _regenerator.default.wrap(function _callee16$(_context16) {
5189
- while (1) switch (_context16.prev = _context16.next) {
5320
+ _args17 = arguments;
5321
+ return _regenerator.default.wrap(function _callee17$(_context17) {
5322
+ while (1) switch (_context17.prev = _context17.next) {
5190
5323
  case 0:
5191
- options = _args16.length > 0 && _args16[0] !== undefined ? _args16[0] : {};
5324
+ options = _args17.length > 0 && _args17[0] !== undefined ? _args17[0] : {};
5192
5325
  if (this.webex.meetings.registered) {
5193
- _context16.next = 6;
5326
+ _context17.next = 6;
5194
5327
  break;
5195
5328
  }
5196
5329
  errorMessage = 'Meeting:index#join --> Device not registered';
5197
5330
  error = new Error(errorMessage);
5198
5331
  _loggerProxy.default.logger.error(errorMessage);
5199
- return _context16.abrupt("return", _promise.default.reject(error));
5332
+ return _context17.abrupt("return", _promise.default.reject(error));
5200
5333
  case 6:
5201
5334
  if (!this.deferJoin) {
5202
- _context16.next = 8;
5335
+ _context17.next = 8;
5203
5336
  break;
5204
5337
  }
5205
- return _context16.abrupt("return", this.deferJoin);
5338
+ return _context17.abrupt("return", this.deferJoin);
5206
5339
  case 8:
5207
5340
  // Create a deferred promise for a consistent resolve value from utils.
5208
5341
  // This also prevents redundant API calls.
@@ -5251,15 +5384,15 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5251
5384
  this.wirelessShare = true;
5252
5385
  }
5253
5386
  if (!options.meetingQuality) {
5254
- _context16.next = 36;
5387
+ _context17.next = 36;
5255
5388
  break;
5256
5389
  }
5257
5390
  if (!(typeof options.meetingQuality === 'string')) {
5258
- _context16.next = 27;
5391
+ _context17.next = 27;
5259
5392
  break;
5260
5393
  }
5261
5394
  if (_constants.QUALITY_LEVELS[options.meetingQuality]) {
5262
- _context16.next = 26;
5395
+ _context17.next = 26;
5263
5396
  break;
5264
5397
  }
5265
5398
  _errorMessage = "Meeting:index#join --> ".concat(options.meetingQuality, " not defined");
@@ -5267,16 +5400,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5267
5400
  _loggerProxy.default.logger.error(_errorMessage);
5268
5401
  joinFailed(_error);
5269
5402
  this.deferJoin = undefined;
5270
- return _context16.abrupt("return", _promise.default.reject(_error));
5403
+ return _context17.abrupt("return", _promise.default.reject(_error));
5271
5404
  case 26:
5272
5405
  this.mediaProperties.setRemoteQualityLevel(options.meetingQuality);
5273
5406
  case 27:
5274
5407
  if (!((0, _typeof2.default)(options.meetingQuality) === 'object')) {
5275
- _context16.next = 36;
5408
+ _context17.next = 36;
5276
5409
  break;
5277
5410
  }
5278
5411
  if (_constants.QUALITY_LEVELS[options.meetingQuality.remote]) {
5279
- _context16.next = 35;
5412
+ _context17.next = 35;
5280
5413
  break;
5281
5414
  }
5282
5415
  _errorMessage2 = "Meeting:index#join --> ".concat(options.meetingQuality.remote, " not defined");
@@ -5284,97 +5417,97 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5284
5417
  _error2 = new Error(_errorMessage2);
5285
5418
  joinFailed(_error2);
5286
5419
  this.deferJoin = undefined;
5287
- return _context16.abrupt("return", _promise.default.reject(new Error(_errorMessage2)));
5420
+ return _context17.abrupt("return", _promise.default.reject(new Error(_errorMessage2)));
5288
5421
  case 35:
5289
5422
  if (options.meetingQuality.remote) {
5290
5423
  this.mediaProperties.setRemoteQualityLevel(options.meetingQuality.remote);
5291
5424
  }
5292
5425
  case 36:
5293
5426
  this.isMultistream = !!options.enableMultistream;
5294
- _context16.prev = 37;
5295
- _context16.next = 40;
5427
+ _context17.prev = 37;
5428
+ _context17.next = 40;
5296
5429
  return this.checkAndRefreshPermissionToken(_constants.MEETING_PERMISSION_TOKEN_REFRESH_THRESHOLD_IN_SEC, _constants.MEETING_PERMISSION_TOKEN_REFRESH_REASON);
5297
5430
  case 40:
5298
- _context16.next = 51;
5431
+ _context17.next = 51;
5299
5432
  break;
5300
5433
  case 42:
5301
- _context16.prev = 42;
5302
- _context16.t0 = _context16["catch"](37);
5303
- _loggerProxy.default.logger.error('Meeting:index#join --> Failed to refresh permission token:', _context16.t0);
5304
- if (!(_context16.t0 instanceof _captchaError.default || _context16.t0 instanceof _passwordError.default || _context16.t0 instanceof _permission.default)) {
5305
- _context16.next = 51;
5434
+ _context17.prev = 42;
5435
+ _context17.t0 = _context17["catch"](37);
5436
+ _loggerProxy.default.logger.error('Meeting:index#join --> Failed to refresh permission token:', _context17.t0);
5437
+ if (!(_context17.t0 instanceof _captchaError.default || _context17.t0 instanceof _passwordError.default || _context17.t0 instanceof _permission.default)) {
5438
+ _context17.next = 51;
5306
5439
  break;
5307
5440
  }
5308
- this.meetingFiniteStateMachine.fail(_context16.t0);
5441
+ this.meetingFiniteStateMachine.fail(_context17.t0);
5309
5442
 
5310
5443
  // Upload logs on refreshpermissionToken refresh Failure
5311
5444
  _triggerProxy.default.trigger(this, {
5312
5445
  file: 'meeting/index',
5313
5446
  function: 'join'
5314
5447
  }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, this);
5315
- joinFailed(_context16.t0);
5448
+ joinFailed(_context17.t0);
5316
5449
  this.deferJoin = undefined;
5317
5450
 
5318
5451
  // if refresh permission token requires captcha, password or permission, we are throwing the errors
5319
5452
  // and bubble it up to client
5320
- return _context16.abrupt("return", _promise.default.reject(_context16.t0));
5453
+ return _context17.abrupt("return", _promise.default.reject(_context17.t0));
5321
5454
  case 51:
5322
- return _context16.abrupt("return", _util.default.joinMeetingOptions(this, options).then(function (join) {
5323
- _this32.meetingFiniteStateMachine.join();
5455
+ return _context17.abrupt("return", _util2.default.joinMeetingOptions(this, options).then(function (join) {
5456
+ _this31.meetingFiniteStateMachine.join();
5324
5457
  _loggerProxy.default.logger.log('Meeting:index#join --> Success');
5325
5458
  _metrics.default.sendBehavioralMetric(_constants2.default.JOIN_SUCCESS, {
5326
- correlation_id: _this32.correlationId
5459
+ correlation_id: _this31.correlationId
5327
5460
  });
5328
5461
  joinSuccess(join);
5329
- _this32.deferJoin = undefined;
5462
+ _this31.deferJoin = undefined;
5330
5463
  return join;
5331
5464
  }).catch(function (error) {
5332
- var _this32$meetingInfo, _error$error;
5333
- _this32.meetingFiniteStateMachine.fail(error);
5465
+ var _this31$meetingInfo, _error$error;
5466
+ _this31.meetingFiniteStateMachine.fail(error);
5334
5467
  _loggerProxy.default.logger.error('Meeting:index#join --> Failed', error);
5335
5468
 
5336
5469
  // @ts-ignore
5337
- _this32.webex.internal.newMetrics.submitClientEvent({
5470
+ _this31.webex.internal.newMetrics.submitClientEvent({
5338
5471
  name: 'client.locus.join.response',
5339
5472
  payload: {
5340
5473
  identifiers: {
5341
- meetingLookupUrl: (_this32$meetingInfo = _this32.meetingInfo) === null || _this32$meetingInfo === void 0 ? void 0 : _this32$meetingInfo.meetingLookupUrl
5474
+ meetingLookupUrl: (_this31$meetingInfo = _this31.meetingInfo) === null || _this31$meetingInfo === void 0 ? void 0 : _this31$meetingInfo.meetingLookupUrl
5342
5475
  }
5343
5476
  },
5344
5477
  options: {
5345
- meetingId: _this32.id,
5478
+ meetingId: _this31.id,
5346
5479
  rawError: error
5347
5480
  }
5348
5481
  });
5349
5482
 
5350
5483
  // TODO: change this to error codes and pre defined dictionary
5351
5484
  _metrics.default.sendBehavioralMetric(_constants2.default.JOIN_FAILURE, {
5352
- correlation_id: _this32.correlationId,
5485
+ correlation_id: _this31.correlationId,
5353
5486
  reason: (_error$error = error.error) === null || _error$error === void 0 ? void 0 : _error$error.message,
5354
5487
  stack: error.stack
5355
5488
  });
5356
5489
 
5357
5490
  // Upload logs on join Failure
5358
- _triggerProxy.default.trigger(_this32, {
5491
+ _triggerProxy.default.trigger(_this31, {
5359
5492
  file: 'meeting/index',
5360
5493
  function: 'join'
5361
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this32);
5494
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this31);
5362
5495
  joinFailed(error);
5363
- _this32.deferJoin = undefined;
5496
+ _this31.deferJoin = undefined;
5364
5497
  return _promise.default.reject(error);
5365
5498
  }).then(function (join) {
5366
5499
  // @ts-ignore - config coming from registerPlugin
5367
- if (_this32.config.enableAutomaticLLM) {
5368
- _this32.updateLLMConnection().catch(function (error) {
5500
+ if (_this31.config.enableAutomaticLLM) {
5501
+ _this31.updateLLMConnection().catch(function (error) {
5369
5502
  _loggerProxy.default.logger.error('Meeting:index#join --> Transcription Socket Connection Failed', error);
5370
5503
  _metrics.default.sendBehavioralMetric(_constants2.default.LLM_CONNECTION_AFTER_JOIN_FAILURE, {
5371
- correlation_id: _this32.correlationId,
5504
+ correlation_id: _this31.correlationId,
5372
5505
  reason: error === null || error === void 0 ? void 0 : error.message,
5373
5506
  stack: error.stack
5374
5507
  });
5375
5508
  }).then(function () {
5376
5509
  _loggerProxy.default.logger.info('Meeting:index#join --> Transcription Socket Connection Success');
5377
- _triggerProxy.default.trigger(_this32, {
5510
+ _triggerProxy.default.trigger(_this31, {
5378
5511
  file: 'meeting/index',
5379
5512
  function: 'join'
5380
5513
  }, _constants.EVENT_TRIGGERS.MEETING_TRANSCRIPTION_CONNECTED, undefined);
@@ -5384,9 +5517,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5384
5517
  }));
5385
5518
  case 52:
5386
5519
  case "end":
5387
- return _context16.stop();
5520
+ return _context17.stop();
5388
5521
  }
5389
- }, _callee16, this, [[37, 42]]);
5522
+ }, _callee17, this, [[37, 42]]);
5390
5523
  }));
5391
5524
  function join() {
5392
5525
  return _join.apply(this, arguments);
@@ -5403,50 +5536,50 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5403
5536
  }, {
5404
5537
  key: "updateLLMConnection",
5405
5538
  value: (function () {
5406
- var _updateLLMConnection = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee17() {
5407
- var _this33 = this;
5539
+ var _updateLLMConnection = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee18() {
5540
+ var _this32 = this;
5408
5541
  var _this$locusInfo6, url, _this$locusInfo6$info, _this$locusInfo6$info2, datachannelUrl, isJoined;
5409
- return _regenerator.default.wrap(function _callee17$(_context17) {
5410
- while (1) switch (_context17.prev = _context17.next) {
5542
+ return _regenerator.default.wrap(function _callee18$(_context18) {
5543
+ while (1) switch (_context18.prev = _context18.next) {
5411
5544
  case 0:
5412
5545
  // @ts-ignore - Fix type
5413
5546
  _this$locusInfo6 = this.locusInfo, url = _this$locusInfo6.url, _this$locusInfo6$info = _this$locusInfo6.info, _this$locusInfo6$info2 = _this$locusInfo6$info === void 0 ? {} : _this$locusInfo6$info, datachannelUrl = _this$locusInfo6$info2.datachannelUrl;
5414
5547
  isJoined = this.isJoined(); // @ts-ignore - Fix type
5415
5548
  if (!this.webex.internal.llm.isConnected()) {
5416
- _context17.next = 8;
5549
+ _context18.next = 8;
5417
5550
  break;
5418
5551
  }
5419
5552
  if (!(url === this.webex.internal.llm.getLocusUrl() && isJoined)) {
5420
- _context17.next = 5;
5553
+ _context18.next = 5;
5421
5554
  break;
5422
5555
  }
5423
- return _context17.abrupt("return", undefined);
5556
+ return _context18.abrupt("return", undefined);
5424
5557
  case 5:
5425
- _context17.next = 7;
5558
+ _context18.next = 7;
5426
5559
  return this.webex.internal.llm.disconnectLLM();
5427
5560
  case 7:
5428
5561
  // @ts-ignore - Fix type
5429
5562
  this.webex.internal.llm.off('event:relay.event', this.processRelayEvent);
5430
5563
  case 8:
5431
5564
  if (isJoined) {
5432
- _context17.next = 10;
5565
+ _context18.next = 10;
5433
5566
  break;
5434
5567
  }
5435
- return _context17.abrupt("return", undefined);
5568
+ return _context18.abrupt("return", undefined);
5436
5569
  case 10:
5437
- return _context17.abrupt("return", this.webex.internal.llm.registerAndConnect(url, datachannelUrl).then(function (registerAndConnectResult) {
5570
+ return _context18.abrupt("return", this.webex.internal.llm.registerAndConnect(url, datachannelUrl).then(function (registerAndConnectResult) {
5438
5571
  // @ts-ignore - Fix type
5439
- _this33.webex.internal.llm.off('event:relay.event', _this33.processRelayEvent);
5572
+ _this32.webex.internal.llm.off('event:relay.event', _this32.processRelayEvent);
5440
5573
  // @ts-ignore - Fix type
5441
- _this33.webex.internal.llm.on('event:relay.event', _this33.processRelayEvent);
5574
+ _this32.webex.internal.llm.on('event:relay.event', _this32.processRelayEvent);
5442
5575
  _loggerProxy.default.logger.info('Meeting:index#updateLLMConnection --> enabled to receive relay events!');
5443
5576
  return _promise.default.resolve(registerAndConnectResult);
5444
5577
  }));
5445
5578
  case 11:
5446
5579
  case "end":
5447
- return _context17.stop();
5580
+ return _context18.stop();
5448
5581
  }
5449
- }, _callee17, this);
5582
+ }, _callee18, this);
5450
5583
  }));
5451
5584
  function updateLLMConnection() {
5452
5585
  return _updateLLMConnection.apply(this, arguments);
@@ -5492,7 +5625,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5492
5625
  }, {
5493
5626
  key: "dialInPstn",
5494
5627
  value: function dialInPstn() {
5495
- var _this34 = this;
5628
+ var _this33 = this;
5496
5629
  if (this.isPhoneProvisioned(this.dialInDeviceStatus)) return _promise.default.resolve(); // prevent multiple dial in devices from being provisioned
5497
5630
 
5498
5631
  var correlationId = this.correlationId,
@@ -5508,10 +5641,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5508
5641
  }).catch(function (error) {
5509
5642
  var _error$error2;
5510
5643
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_DIAL_IN_FAILURE, {
5511
- correlation_id: _this34.correlationId,
5512
- dial_in_url: _this34.dialInUrl,
5644
+ correlation_id: _this33.correlationId,
5645
+ dial_in_url: _this33.dialInUrl,
5513
5646
  locus_id: locusUrl.split('/').pop(),
5514
- client_url: _this34.deviceUrl,
5647
+ client_url: _this33.deviceUrl,
5515
5648
  reason: (_error$error2 = error.error) === null || _error$error2 === void 0 ? void 0 : _error$error2.message,
5516
5649
  stack: error.stack
5517
5650
  });
@@ -5529,7 +5662,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5529
5662
  }, {
5530
5663
  key: "dialOutPstn",
5531
5664
  value: function dialOutPstn(phoneNumber) {
5532
- var _this35 = this;
5665
+ var _this34 = this;
5533
5666
  if (this.isPhoneProvisioned(this.dialOutDeviceStatus)) return _promise.default.resolve(); // prevent multiple dial out devices from being provisioned
5534
5667
 
5535
5668
  var correlationId = this.correlationId,
@@ -5546,10 +5679,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5546
5679
  }).catch(function (error) {
5547
5680
  var _error$error3;
5548
5681
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_DIAL_OUT_FAILURE, {
5549
- correlation_id: _this35.correlationId,
5550
- dial_out_url: _this35.dialOutUrl,
5682
+ correlation_id: _this34.correlationId,
5683
+ dial_out_url: _this34.dialOutUrl,
5551
5684
  locus_id: locusUrl.split('/').pop(),
5552
- client_url: _this35.deviceUrl,
5685
+ client_url: _this34.deviceUrl,
5553
5686
  reason: (_error$error3 = error.error) === null || _error$error3 === void 0 ? void 0 : _error$error3.message,
5554
5687
  stack: error.stack
5555
5688
  });
@@ -5567,7 +5700,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5567
5700
  }, {
5568
5701
  key: "disconnectPhoneAudio",
5569
5702
  value: function disconnectPhoneAudio() {
5570
- return _promise.default.all([this.isPhoneProvisioned(this.dialInDeviceStatus) ? _util.default.disconnectPhoneAudio(this, this.dialInUrl) : _promise.default.resolve(), this.isPhoneProvisioned(this.dialOutDeviceStatus) ? _util.default.disconnectPhoneAudio(this, this.dialOutUrl) : _promise.default.resolve()]);
5703
+ return _promise.default.all([this.isPhoneProvisioned(this.dialInDeviceStatus) ? _util2.default.disconnectPhoneAudio(this, this.dialInUrl) : _promise.default.resolve(), this.isPhoneProvisioned(this.dialOutDeviceStatus) ? _util2.default.disconnectPhoneAudio(this, this.dialOutUrl) : _promise.default.resolve()]);
5571
5704
  }
5572
5705
 
5573
5706
  /**
@@ -5580,7 +5713,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5580
5713
  }, {
5581
5714
  key: "moveTo",
5582
5715
  value: function moveTo(resourceId) {
5583
- var _this36 = this;
5716
+ var _this35 = this;
5584
5717
  if (!resourceId) {
5585
5718
  throw new _parameter.default('Cannot move call without a resourceId.');
5586
5719
  }
@@ -5618,18 +5751,18 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5618
5751
  meetingId: this.id
5619
5752
  }
5620
5753
  });
5621
- this.locusInfo.once(_constants.LOCUSINFO.EVENTS.SELF_OBSERVING, /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee18() {
5754
+ this.locusInfo.once(_constants.LOCUSINFO.EVENTS.SELF_OBSERVING, /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee19() {
5622
5755
  var mediaSettings;
5623
- return _regenerator.default.wrap(function _callee18$(_context18) {
5624
- while (1) switch (_context18.prev = _context18.next) {
5756
+ return _regenerator.default.wrap(function _callee19$(_context19) {
5757
+ while (1) switch (_context19.prev = _context19.next) {
5625
5758
  case 0:
5626
- _context18.prev = 0;
5627
- if (!(_this36.screenShareFloorState === ScreenShareFloorStatus.GRANTED)) {
5628
- _context18.next = 4;
5759
+ _context19.prev = 0;
5760
+ if (!(_this35.screenShareFloorState === ScreenShareFloorStatus.GRANTED)) {
5761
+ _context19.next = 4;
5629
5762
  break;
5630
5763
  }
5631
- _context18.next = 4;
5632
- return _this36.releaseScreenShareFloor();
5764
+ _context19.next = 4;
5765
+ return _this35.releaseScreenShareFloor();
5633
5766
  case 4:
5634
5767
  mediaSettings = {
5635
5768
  mediaDirection: {
@@ -5641,47 +5774,47 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5641
5774
  receiveShare: true
5642
5775
  }
5643
5776
  };
5644
- _this36.cleanupLocalStreams();
5645
- _this36.mediaProperties.setMediaDirection(mediaSettings.mediaDirection);
5646
- _this36.mediaProperties.unsetRemoteMedia();
5777
+ _this35.cleanupLocalStreams();
5778
+ _this35.mediaProperties.setMediaDirection(mediaSettings.mediaDirection);
5779
+ _this35.mediaProperties.unsetRemoteMedia();
5647
5780
 
5648
5781
  // when a move to is intiated by the client , Locus delets the existing media node from the server as soon the DX answers the meeting
5649
5782
  // once the DX answers we establish connection back the media server with only receiveShare enabled
5650
5783
  // @ts-ignore - reconnectMedia does not accept any argument
5651
- _context18.next = 10;
5652
- return _this36.reconnectionManager.reconnectMedia(mediaSettings).then(function () {
5784
+ _context19.next = 10;
5785
+ return _this35.reconnectionManager.reconnectMedia(mediaSettings).then(function () {
5653
5786
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_TO_SUCCESS);
5654
5787
  });
5655
5788
  case 10:
5656
- _context18.next = 16;
5789
+ _context19.next = 16;
5657
5790
  break;
5658
5791
  case 12:
5659
- _context18.prev = 12;
5660
- _context18.t0 = _context18["catch"](0);
5661
- _loggerProxy.default.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId', _context18.t0);
5792
+ _context19.prev = 12;
5793
+ _context19.t0 = _context19["catch"](0);
5794
+ _loggerProxy.default.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId', _context19.t0);
5662
5795
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_TO_FAILURE, {
5663
- correlation_id: _this36.correlationId,
5664
- locus_id: _this36.locusUrl.split('/').pop(),
5665
- reason: _context18.t0.message,
5666
- stack: _context18.t0.stack
5796
+ correlation_id: _this35.correlationId,
5797
+ locus_id: _this35.locusUrl.split('/').pop(),
5798
+ reason: _context19.t0.message,
5799
+ stack: _context19.t0.stack
5667
5800
  });
5668
5801
  case 16:
5669
5802
  case "end":
5670
- return _context18.stop();
5803
+ return _context19.stop();
5671
5804
  }
5672
- }, _callee18, null, [[0, 12]]);
5805
+ }, _callee19, null, [[0, 12]]);
5673
5806
  })));
5674
5807
  _loggerProxy.default.logger.info('Meeting:index#moveTo --> Initated moved to using resourceId', resourceId);
5675
- return _util.default.joinMeetingOptions(this, {
5808
+ return _util2.default.joinMeetingOptions(this, {
5676
5809
  resourceId: resourceId,
5677
5810
  moveToResource: true
5678
5811
  }).then(function () {
5679
- _this36.meetingFiniteStateMachine.join();
5812
+ _this35.meetingFiniteStateMachine.join();
5680
5813
  }).catch(function (error) {
5681
- _this36.meetingFiniteStateMachine.fail(error);
5814
+ _this35.meetingFiniteStateMachine.fail(error);
5682
5815
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_TO_FAILURE, {
5683
- correlation_id: _this36.correlationId,
5684
- locus_id: _this36.locusUrl.split('/').pop(),
5816
+ correlation_id: _this35.correlationId,
5817
+ locus_id: _this35.locusUrl.split('/').pop(),
5685
5818
  reason: error.message,
5686
5819
  stack: error.stack
5687
5820
  });
@@ -5700,7 +5833,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5700
5833
  }, {
5701
5834
  key: "moveFrom",
5702
5835
  value: function moveFrom(resourceId) {
5703
- var _this37 = this;
5836
+ var _this36 = this;
5704
5837
  // On moveFrom ask the developer to re capture it moveFrom then updateMedia
5705
5838
  if (!resourceId) {
5706
5839
  throw new _parameter.default('Cannot move call without a resourceId.');
@@ -5714,20 +5847,20 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5714
5847
  meetingId: this.id
5715
5848
  }
5716
5849
  });
5717
- return _util.default.joinMeetingOptions(this).then(function () {
5718
- return _util.default.leaveMeeting(_this37, {
5850
+ return _util2.default.joinMeetingOptions(this).then(function () {
5851
+ return _util2.default.leaveMeeting(_this36, {
5719
5852
  resourceId: resourceId,
5720
5853
  correlationId: oldCorrelationId,
5721
5854
  moveMeeting: true
5722
5855
  }).then(function () {
5723
- _this37.resourceId = '';
5856
+ _this36.resourceId = '';
5724
5857
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_FROM_SUCCESS);
5725
5858
  });
5726
5859
  }).catch(function (error) {
5727
- _this37.meetingFiniteStateMachine.fail(error);
5860
+ _this36.meetingFiniteStateMachine.fail(error);
5728
5861
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_FROM_FAILURE, {
5729
- correlation_id: _this37.correlationId,
5730
- locus_id: _this37.locusUrl.split('/').pop(),
5862
+ correlation_id: _this36.correlationId,
5863
+ locus_id: _this36.locusUrl.split('/').pop(),
5731
5864
  reason: error.message,
5732
5865
  stack: error.stack
5733
5866
  });
@@ -5752,10 +5885,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5752
5885
  }, {
5753
5886
  key: "createMediaConnection",
5754
5887
  value: (function () {
5755
- var _createMediaConnection = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee19(turnServerInfo, bundlePolicy) {
5888
+ var _createMediaConnection = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee20(turnServerInfo, bundlePolicy) {
5756
5889
  var mc, audioEnabled, videoEnabled, shareEnabled;
5757
- return _regenerator.default.wrap(function _callee19$(_context19) {
5758
- while (1) switch (_context19.prev = _context19.next) {
5890
+ return _regenerator.default.wrap(function _callee20$(_context20) {
5891
+ while (1) switch (_context20.prev = _context20.next) {
5759
5892
  case 0:
5760
5893
  mc = _media.default.createMediaConnection(this.isMultistream, this.getMediaConnectionDebugId(),
5761
5894
  // @ts-ignore
@@ -5781,39 +5914,40 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5781
5914
 
5782
5915
  // publish the streams
5783
5916
  if (!this.mediaProperties.audioStream) {
5784
- _context19.next = 7;
5917
+ _context20.next = 8;
5785
5918
  break;
5786
5919
  }
5787
- _context19.next = 7;
5920
+ this.setSendNamedMediaGroup(_internalMediaCore.MediaType.AudioMain);
5921
+ _context20.next = 8;
5788
5922
  return this.publishStream(_internalMediaCore.MediaType.AudioMain, this.mediaProperties.audioStream);
5789
- case 7:
5923
+ case 8:
5790
5924
  if (!this.mediaProperties.videoStream) {
5791
- _context19.next = 10;
5925
+ _context20.next = 11;
5792
5926
  break;
5793
5927
  }
5794
- _context19.next = 10;
5928
+ _context20.next = 11;
5795
5929
  return this.publishStream(_internalMediaCore.MediaType.VideoMain, this.mediaProperties.videoStream);
5796
- case 10:
5930
+ case 11:
5797
5931
  if (!this.mediaProperties.shareVideoStream) {
5798
- _context19.next = 13;
5932
+ _context20.next = 14;
5799
5933
  break;
5800
5934
  }
5801
- _context19.next = 13;
5935
+ _context20.next = 14;
5802
5936
  return this.publishStream(_internalMediaCore.MediaType.VideoSlides, this.mediaProperties.shareVideoStream);
5803
- case 13:
5937
+ case 14:
5804
5938
  if (!(this.isMultistream && this.mediaProperties.shareAudioStream)) {
5805
- _context19.next = 16;
5939
+ _context20.next = 17;
5806
5940
  break;
5807
5941
  }
5808
- _context19.next = 16;
5942
+ _context20.next = 17;
5809
5943
  return this.publishStream(_internalMediaCore.MediaType.AudioSlides, this.mediaProperties.shareAudioStream);
5810
- case 16:
5811
- return _context19.abrupt("return", mc);
5812
5944
  case 17:
5945
+ return _context20.abrupt("return", mc);
5946
+ case 18:
5813
5947
  case "end":
5814
- return _context19.stop();
5948
+ return _context20.stop();
5815
5949
  }
5816
- }, _callee19, this);
5950
+ }, _callee20, this);
5817
5951
  }));
5818
5952
  function createMediaConnection(_x16, _x17) {
5819
5953
  return _createMediaConnection.apply(this, arguments);
@@ -5833,9 +5967,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5833
5967
  }, {
5834
5968
  key: "forwardEvent",
5835
5969
  value: function forwardEvent(eventEmitter, eventTypeToForward, meetingEventType) {
5836
- var _this38 = this;
5970
+ var _this37 = this;
5837
5971
  eventEmitter.on(eventTypeToForward, function (data) {
5838
- return _triggerProxy.default.trigger(_this38, {
5972
+ return _triggerProxy.default.trigger(_this37, {
5839
5973
  file: 'meetings',
5840
5974
  function: 'addMedia'
5841
5975
  }, meetingEventType, data);
@@ -5853,41 +5987,41 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5853
5987
  }, {
5854
5988
  key: "setUpLocalStreamReferences",
5855
5989
  value: (function () {
5856
- var _setUpLocalStreamReferences = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee20(localStreams) {
5857
- var _localStreams$screenS, _localStreams$screenS2;
5990
+ var _setUpLocalStreamReferences = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee21(localStreams) {
5991
+ var _localStreams$microph, _localStreams$camera, _localStreams$screenS, _localStreams$screenS2, _localStreams$screenS3, _localStreams$screenS4, _localStreams$screenS5, _localStreams$screenS6;
5858
5992
  var setUpStreamPromises;
5859
- return _regenerator.default.wrap(function _callee20$(_context20) {
5860
- while (1) switch (_context20.prev = _context20.next) {
5993
+ return _regenerator.default.wrap(function _callee21$(_context21) {
5994
+ while (1) switch (_context21.prev = _context21.next) {
5861
5995
  case 0:
5862
5996
  setUpStreamPromises = [];
5863
- if (localStreams !== null && localStreams !== void 0 && localStreams.microphone) {
5997
+ if (localStreams !== null && localStreams !== void 0 && localStreams.microphone && (localStreams === null || localStreams === void 0 ? void 0 : (_localStreams$microph = localStreams.microphone) === null || _localStreams$microph === void 0 ? void 0 : _localStreams$microph.readyState) !== 'ended') {
5864
5998
  setUpStreamPromises.push(this.setLocalAudioStream(localStreams.microphone));
5865
5999
  }
5866
- if (localStreams !== null && localStreams !== void 0 && localStreams.camera) {
6000
+ if (localStreams !== null && localStreams !== void 0 && localStreams.camera && (localStreams === null || localStreams === void 0 ? void 0 : (_localStreams$camera = localStreams.camera) === null || _localStreams$camera === void 0 ? void 0 : _localStreams$camera.readyState) !== 'ended') {
5867
6001
  setUpStreamPromises.push(this.setLocalVideoStream(localStreams.camera));
5868
6002
  }
5869
- if (localStreams !== null && localStreams !== void 0 && (_localStreams$screenS = localStreams.screenShare) !== null && _localStreams$screenS !== void 0 && _localStreams$screenS.video) {
6003
+ if (localStreams !== null && localStreams !== void 0 && (_localStreams$screenS = localStreams.screenShare) !== null && _localStreams$screenS !== void 0 && _localStreams$screenS.video && (localStreams === null || localStreams === void 0 ? void 0 : (_localStreams$screenS2 = localStreams.screenShare) === null || _localStreams$screenS2 === void 0 ? void 0 : (_localStreams$screenS3 = _localStreams$screenS2.video) === null || _localStreams$screenS3 === void 0 ? void 0 : _localStreams$screenS3.readyState) !== 'ended') {
5870
6004
  setUpStreamPromises.push(this.setLocalShareVideoStream(localStreams.screenShare.video));
5871
6005
  }
5872
- if (localStreams !== null && localStreams !== void 0 && (_localStreams$screenS2 = localStreams.screenShare) !== null && _localStreams$screenS2 !== void 0 && _localStreams$screenS2.audio) {
6006
+ if (localStreams !== null && localStreams !== void 0 && (_localStreams$screenS4 = localStreams.screenShare) !== null && _localStreams$screenS4 !== void 0 && _localStreams$screenS4.audio && (localStreams === null || localStreams === void 0 ? void 0 : (_localStreams$screenS5 = localStreams.screenShare) === null || _localStreams$screenS5 === void 0 ? void 0 : (_localStreams$screenS6 = _localStreams$screenS5.audio) === null || _localStreams$screenS6 === void 0 ? void 0 : _localStreams$screenS6.readyState) !== 'ended') {
5873
6007
  setUpStreamPromises.push(this.setLocalShareAudioStream(localStreams.screenShare.audio));
5874
6008
  }
5875
- _context20.prev = 5;
5876
- _context20.next = 8;
6009
+ _context21.prev = 5;
6010
+ _context21.next = 8;
5877
6011
  return _promise.default.all(setUpStreamPromises);
5878
6012
  case 8:
5879
- _context20.next = 14;
6013
+ _context21.next = 14;
5880
6014
  break;
5881
6015
  case 10:
5882
- _context20.prev = 10;
5883
- _context20.t0 = _context20["catch"](5);
5884
- _loggerProxy.default.logger.error("Meeting:index#addMedia():setUpLocalStreamReferences --> Error , ", _context20.t0);
5885
- throw _context20.t0;
6016
+ _context21.prev = 10;
6017
+ _context21.t0 = _context21["catch"](5);
6018
+ _loggerProxy.default.logger.error("Meeting:index#addMedia():setUpLocalStreamReferences --> Error , ", _context21.t0);
6019
+ throw _context21.t0;
5886
6020
  case 14:
5887
6021
  case "end":
5888
- return _context20.stop();
6022
+ return _context21.stop();
5889
6023
  }
5890
- }, _callee20, this, [[5, 10]]);
6024
+ }, _callee21, this, [[5, 10]]);
5891
6025
  }));
5892
6026
  function setUpLocalStreamReferences(_x18) {
5893
6027
  return _setUpLocalStreamReferences.apply(this, arguments);
@@ -5904,20 +6038,20 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5904
6038
  }, {
5905
6039
  key: "waitForMediaConnectionConnected",
5906
6040
  value: (function () {
5907
- var _waitForMediaConnectionConnected = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee21() {
6041
+ var _waitForMediaConnectionConnected = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee22() {
5908
6042
  var _this$mediaProperties6, _this$mediaProperties7, _this$mediaProperties8, _this$mediaProperties9, _this$mediaProperties10, _this$mediaProperties11, _this$mediaProperties12, _this$mediaProperties13, _this$mediaProperties14, _this$mediaProperties15, _this$mediaProperties16, _this$mediaProperties17, _this$mediaProperties18, _this$mediaProperties19;
5909
- return _regenerator.default.wrap(function _callee21$(_context21) {
5910
- while (1) switch (_context21.prev = _context21.next) {
6043
+ return _regenerator.default.wrap(function _callee22$(_context22) {
6044
+ while (1) switch (_context22.prev = _context22.next) {
5911
6045
  case 0:
5912
- _context21.prev = 0;
5913
- _context21.next = 3;
6046
+ _context22.prev = 0;
6047
+ _context22.next = 3;
5914
6048
  return this.mediaProperties.waitForMediaConnectionConnected();
5915
6049
  case 3:
5916
- _context21.next = 9;
6050
+ _context22.next = 9;
5917
6051
  break;
5918
6052
  case 5:
5919
- _context21.prev = 5;
5920
- _context21.t0 = _context21["catch"](0);
6053
+ _context22.prev = 5;
6054
+ _context22.t0 = _context22["catch"](0);
5921
6055
  if (!this.hasMediaConnectionConnectedAtLeastOnce) {
5922
6056
  // Only send CA event for join flow if we haven't successfully connected media yet
5923
6057
  // @ts-ignore
@@ -5945,9 +6079,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5945
6079
  throw new Error("Timed out waiting for media connection to be connected, correlationId=".concat(this.correlationId));
5946
6080
  case 9:
5947
6081
  case "end":
5948
- return _context21.stop();
6082
+ return _context22.stop();
5949
6083
  }
5950
- }, _callee21, this, [[0, 5]]);
6084
+ }, _callee22, this, [[0, 5]]);
5951
6085
  }));
5952
6086
  function waitForMediaConnectionConnected() {
5953
6087
  return _waitForMediaConnectionConnected.apply(this, arguments);
@@ -5964,7 +6098,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5964
6098
  }, {
5965
6099
  key: "createStatsAnalyzer",
5966
6100
  value: function createStatsAnalyzer() {
5967
- var _this39 = this;
6101
+ var _this38 = this;
5968
6102
  // @ts-ignore - config coming from registerPlugin
5969
6103
  if (this.config.stats.enableStatsAnalyzer) {
5970
6104
  // @ts-ignore - config coming from registerPlugin
@@ -5972,7 +6106,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5972
6106
  this.statsAnalyzer = new _statsAnalyzer.StatsAnalyzer(
5973
6107
  // @ts-ignore - config coming from registerPlugin
5974
6108
  this.config.stats, function (ssrc) {
5975
- return _this39.receiveSlotManager.findReceiveSlotBySsrc(ssrc);
6109
+ return _this38.receiveSlotManager.findReceiveSlotBySsrc(ssrc);
5976
6110
  }, this.networkQualityMonitor);
5977
6111
  this.setupStatsAnalyzerEventHandlers();
5978
6112
  this.networkQualityMonitor.on(_constants.EVENT_TRIGGERS.NETWORK_QUALITY, this.sendNetworkQualityEvent.bind(this));
@@ -5997,18 +6131,18 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5997
6131
  * @returns {Promise<void>}
5998
6132
  */
5999
6133
  function () {
6000
- var _waitForRemoteSDPAnswer = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee22() {
6134
+ var _waitForRemoteSDPAnswer = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee23() {
6001
6135
  var LOG_HEADER, deferSDPAnswer;
6002
- return _regenerator.default.wrap(function _callee22$(_context22) {
6003
- while (1) switch (_context22.prev = _context22.next) {
6136
+ return _regenerator.default.wrap(function _callee23$(_context23) {
6137
+ while (1) switch (_context23.prev = _context23.next) {
6004
6138
  case 0:
6005
6139
  LOG_HEADER = 'Meeting:index#addMedia():waitForRemoteSDPAnswer -->';
6006
6140
  if (this.deferSDPAnswer) {
6007
- _context22.next = 4;
6141
+ _context23.next = 4;
6008
6142
  break;
6009
6143
  }
6010
6144
  _loggerProxy.default.logger.warn("".concat(LOG_HEADER, " offer not created yet"));
6011
- return _context22.abrupt("return", _promise.default.reject(new Error('waitForRemoteSDPAnswer() called before local sdp offer created')));
6145
+ return _context23.abrupt("return", _promise.default.reject(new Error('waitForRemoteSDPAnswer() called before local sdp offer created')));
6012
6146
  case 4:
6013
6147
  deferSDPAnswer = this.deferSDPAnswer;
6014
6148
  this.sdpResponseTimer = setTimeout(function () {
@@ -6016,12 +6150,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6016
6150
  deferSDPAnswer.reject(new Error('Timed out waiting for REMOTE SDP ANSWER'));
6017
6151
  }, _constants.ROAP_OFFER_ANSWER_EXCHANGE_TIMEOUT);
6018
6152
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " waiting for REMOTE SDP ANSWER..."));
6019
- return _context22.abrupt("return", deferSDPAnswer.promise);
6153
+ return _context23.abrupt("return", deferSDPAnswer.promise);
6020
6154
  case 8:
6021
6155
  case "end":
6022
- return _context22.stop();
6156
+ return _context23.stop();
6023
6157
  }
6024
- }, _callee22, this);
6158
+ }, _callee23, this);
6025
6159
  }));
6026
6160
  function waitForRemoteSDPAnswer() {
6027
6161
  return _waitForRemoteSDPAnswer.apply(this, arguments);
@@ -6040,28 +6174,28 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6040
6174
  }, {
6041
6175
  key: "retryEstablishMediaConnectionWithForcedTurnDiscovery",
6042
6176
  value: (function () {
6043
- var _retryEstablishMediaConnectionWithForcedTurnDiscovery = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee23(remoteMediaManagerConfig, bundlePolicy) {
6177
+ var _retryEstablishMediaConnectionWithForcedTurnDiscovery = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee24(remoteMediaManagerConfig, bundlePolicy) {
6044
6178
  var LOG_HEADER;
6045
- return _regenerator.default.wrap(function _callee23$(_context23) {
6046
- while (1) switch (_context23.prev = _context23.next) {
6179
+ return _regenerator.default.wrap(function _callee24$(_context24) {
6180
+ while (1) switch (_context24.prev = _context24.next) {
6047
6181
  case 0:
6048
6182
  LOG_HEADER = 'Meeting:index#addMedia():retryEstablishMediaConnectionWithForcedTurnDiscovery -->';
6049
- _context23.prev = 1;
6050
- _context23.next = 4;
6183
+ _context24.prev = 1;
6184
+ _context24.next = 4;
6051
6185
  return this.establishMediaConnection(remoteMediaManagerConfig, bundlePolicy, true);
6052
6186
  case 4:
6053
- _context23.next = 10;
6187
+ _context24.next = 10;
6054
6188
  break;
6055
6189
  case 6:
6056
- _context23.prev = 6;
6057
- _context23.t0 = _context23["catch"](1);
6058
- _loggerProxy.default.logger.error("".concat(LOG_HEADER, " retry with TURN-TLS failed, media connection unable to connect, "), _context23.t0);
6059
- throw _context23.t0;
6190
+ _context24.prev = 6;
6191
+ _context24.t0 = _context24["catch"](1);
6192
+ _loggerProxy.default.logger.error("".concat(LOG_HEADER, " retry with TURN-TLS failed, media connection unable to connect, "), _context24.t0);
6193
+ throw _context24.t0;
6060
6194
  case 10:
6061
6195
  case "end":
6062
- return _context23.stop();
6196
+ return _context24.stop();
6063
6197
  }
6064
- }, _callee23, this, [[1, 6]]);
6198
+ }, _callee24, this, [[1, 6]]);
6065
6199
  }));
6066
6200
  function retryEstablishMediaConnectionWithForcedTurnDiscovery(_x19, _x20) {
6067
6201
  return _retryEstablishMediaConnectionWithForcedTurnDiscovery.apply(this, arguments);
@@ -6081,14 +6215,14 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6081
6215
  }, {
6082
6216
  key: "retryWithForcedTurnDiscovery",
6083
6217
  value: (function () {
6084
- var _retryWithForcedTurnDiscovery = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee24(remoteMediaManagerConfig, bundlePolicy) {
6218
+ var _retryWithForcedTurnDiscovery = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee25(remoteMediaManagerConfig, bundlePolicy) {
6085
6219
  var LOG_HEADER;
6086
- return _regenerator.default.wrap(function _callee24$(_context24) {
6087
- while (1) switch (_context24.prev = _context24.next) {
6220
+ return _regenerator.default.wrap(function _callee25$(_context25) {
6221
+ while (1) switch (_context25.prev = _context25.next) {
6088
6222
  case 0:
6089
6223
  this.retriedWithTurnServer = true;
6090
6224
  LOG_HEADER = 'Meeting:index#addMedia():retryWithForcedTurnDiscovery -->';
6091
- _context24.next = 4;
6225
+ _context25.next = 4;
6092
6226
  return this.cleanUpBeforeRetryWithTurnServer();
6093
6227
  case 4:
6094
6228
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_MEDIA_RETRY, {
@@ -6098,22 +6232,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6098
6232
  reason: 'forcingTurnTls'
6099
6233
  });
6100
6234
  if (!(this.state === _constants.MEETING_STATE.STATES.LEFT)) {
6101
- _context24.next = 9;
6235
+ _context25.next = 9;
6102
6236
  break;
6103
6237
  }
6104
6238
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " meeting state was LEFT after first attempt to establish media connection. Attempting to rejoin. "));
6105
- _context24.next = 9;
6239
+ _context25.next = 9;
6106
6240
  return this.join({
6107
6241
  rejoin: true
6108
6242
  });
6109
6243
  case 9:
6110
- _context24.next = 11;
6244
+ _context25.next = 11;
6111
6245
  return this.retryEstablishMediaConnectionWithForcedTurnDiscovery(remoteMediaManagerConfig, bundlePolicy);
6112
6246
  case 11:
6113
6247
  case "end":
6114
- return _context24.stop();
6248
+ return _context25.stop();
6115
6249
  }
6116
- }, _callee24, this);
6250
+ }, _callee25, this);
6117
6251
  }));
6118
6252
  function retryWithForcedTurnDiscovery(_x21, _x22) {
6119
6253
  return _retryWithForcedTurnDiscovery.apply(this, arguments);
@@ -6135,30 +6269,30 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6135
6269
  }, {
6136
6270
  key: "handleWaitForMediaConnectionConnectedError",
6137
6271
  value: (function () {
6138
- var _handleWaitForMediaConnectionConnectedError = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee25(error, remoteMediaManagerConfig, bundlePolicy) {
6272
+ var _handleWaitForMediaConnectionConnectedError = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee26(error, remoteMediaManagerConfig, bundlePolicy) {
6139
6273
  var LOG_HEADER;
6140
- return _regenerator.default.wrap(function _callee25$(_context25) {
6141
- while (1) switch (_context25.prev = _context25.next) {
6274
+ return _regenerator.default.wrap(function _callee26$(_context26) {
6275
+ while (1) switch (_context26.prev = _context26.next) {
6142
6276
  case 0:
6143
6277
  LOG_HEADER = 'Meeting:index#addMedia():handleWaitForMediaConnectionConnectedError -->'; // @ts-ignore - config coming from registerPlugin
6144
6278
  if (this.turnServerUsed) {
6145
- _context25.next = 7;
6279
+ _context26.next = 7;
6146
6280
  break;
6147
6281
  }
6148
6282
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " error waiting for media to connect on UDP, TCP, retrying using TURN-TLS, "), error);
6149
- _context25.next = 5;
6283
+ _context26.next = 5;
6150
6284
  return this.retryWithForcedTurnDiscovery(remoteMediaManagerConfig, bundlePolicy);
6151
6285
  case 5:
6152
- _context25.next = 9;
6286
+ _context26.next = 9;
6153
6287
  break;
6154
6288
  case 7:
6155
6289
  _loggerProxy.default.logger.error("".concat(LOG_HEADER, " error waiting for media to connect using UDP, TCP and TURN-TLS"), error);
6156
6290
  throw new _webexErrors.AddMediaFailed();
6157
6291
  case 9:
6158
6292
  case "end":
6159
- return _context25.stop();
6293
+ return _context26.stop();
6160
6294
  }
6161
- }, _callee25, this);
6295
+ }, _callee26, this);
6162
6296
  }));
6163
6297
  function handleWaitForMediaConnectionConnectedError(_x23, _x24, _x25) {
6164
6298
  return _handleWaitForMediaConnectionConnectedError.apply(this, arguments);
@@ -6166,44 +6300,38 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6166
6300
  return handleWaitForMediaConnectionConnectedError;
6167
6301
  }()
6168
6302
  /**
6169
- * Does TURN discovery, SDP offer/answer exhange, establishes ICE connection and DTLS handshake.
6303
+ * Performs TURN discovery as a separate call to the Locus /media API
6170
6304
  *
6171
- * @private
6172
- * @param {RemoteMediaManagerConfiguration} [remoteMediaManagerConfig]
6173
- * @param {BundlePolicy} [bundlePolicy]
6174
- * @param {boolean} [isForced] - let isForced be true to do turn discovery regardless of reachability results
6175
- * @returns {Promise<void>}
6305
+ * @param {boolean} isRetry
6306
+ * @param {boolean} isForced
6307
+ * @returns {Promise}
6176
6308
  */
6177
6309
  )
6178
6310
  }, {
6179
- key: "establishMediaConnection",
6311
+ key: "doTurnDiscovery",
6180
6312
  value: (function () {
6181
- var _establishMediaConnection = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee26(remoteMediaManagerConfig, bundlePolicy, isForced) {
6182
- var LOG_HEADER, cdl, isRetry, turnDiscoveryObject, turnServerInfo, mc;
6183
- return _regenerator.default.wrap(function _callee26$(_context26) {
6184
- while (1) switch (_context26.prev = _context26.next) {
6313
+ var _doTurnDiscovery = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee27(isRetry, isForced) {
6314
+ var cdl, turnDiscoveryResult;
6315
+ return _regenerator.default.wrap(function _callee27$(_context27) {
6316
+ while (1) switch (_context27.prev = _context27.next) {
6185
6317
  case 0:
6186
- LOG_HEADER = 'Meeting:index#addMedia():establishMediaConnection -->'; // @ts-ignore
6187
- cdl = this.webex.internal.newMetrics.callDiagnosticLatencies;
6188
- isRetry = this.retriedWithTurnServer;
6189
- _context26.prev = 3;
6190
6318
  // @ts-ignore
6319
+ cdl = this.webex.internal.newMetrics.callDiagnosticLatencies; // @ts-ignore
6191
6320
  this.webex.internal.newMetrics.submitInternalEvent({
6192
6321
  name: 'internal.client.add-media.turn-discovery.start'
6193
6322
  });
6194
- _context26.next = 7;
6323
+ _context27.next = 4;
6195
6324
  return this.roap.doTurnDiscovery(this, isRetry, isForced);
6196
- case 7:
6197
- turnDiscoveryObject = _context26.sent;
6198
- this.turnDiscoverySkippedReason = turnDiscoveryObject === null || turnDiscoveryObject === void 0 ? void 0 : turnDiscoveryObject.turnDiscoverySkippedReason;
6325
+ case 4:
6326
+ turnDiscoveryResult = _context27.sent;
6327
+ this.turnDiscoverySkippedReason = turnDiscoveryResult === null || turnDiscoveryResult === void 0 ? void 0 : turnDiscoveryResult.turnDiscoverySkippedReason;
6199
6328
  this.turnServerUsed = !this.turnDiscoverySkippedReason;
6200
6329
 
6201
6330
  // @ts-ignore
6202
6331
  this.webex.internal.newMetrics.submitInternalEvent({
6203
6332
  name: 'internal.client.add-media.turn-discovery.end'
6204
6333
  });
6205
- turnServerInfo = turnDiscoveryObject.turnServerInfo;
6206
- if (this.turnServerUsed && turnServerInfo) {
6334
+ if (this.turnServerUsed && turnDiscoveryResult.turnServerInfo) {
6207
6335
  _metrics.default.sendBehavioralMetric(_constants2.default.TURN_DISCOVERY_LATENCY, {
6208
6336
  correlation_id: this.correlationId,
6209
6337
  latency: cdl.getTurnDiscoveryTime(),
@@ -6211,55 +6339,100 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6211
6339
  retriedWithTurnServer: this.retriedWithTurnServer
6212
6340
  });
6213
6341
  }
6214
- _context26.next = 15;
6342
+ return _context27.abrupt("return", turnDiscoveryResult);
6343
+ case 10:
6344
+ case "end":
6345
+ return _context27.stop();
6346
+ }
6347
+ }, _callee27, this);
6348
+ }));
6349
+ function doTurnDiscovery(_x26, _x27) {
6350
+ return _doTurnDiscovery.apply(this, arguments);
6351
+ }
6352
+ return doTurnDiscovery;
6353
+ }()
6354
+ /**
6355
+ * Does TURN discovery, SDP offer/answer exhange, establishes ICE connection and DTLS handshake.
6356
+ *
6357
+ * @private
6358
+ * @param {RemoteMediaManagerConfiguration} [remoteMediaManagerConfig]
6359
+ * @param {BundlePolicy} [bundlePolicy]
6360
+ * @param {boolean} [isForced] - let isForced be true to do turn discovery regardless of reachability results
6361
+ * @param {TurnServerInfo} [turnServerInfo]
6362
+ * @returns {Promise<void>}
6363
+ */
6364
+ )
6365
+ }, {
6366
+ key: "establishMediaConnection",
6367
+ value: (function () {
6368
+ var _establishMediaConnection = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee28(remoteMediaManagerConfig, bundlePolicy, isForced, turnServerInfo) {
6369
+ var LOG_HEADER, isRetry, _yield$this$doTurnDis, mc;
6370
+ return _regenerator.default.wrap(function _callee28$(_context28) {
6371
+ while (1) switch (_context28.prev = _context28.next) {
6372
+ case 0:
6373
+ LOG_HEADER = 'Meeting:index#addMedia():establishMediaConnection -->';
6374
+ isRetry = this.retriedWithTurnServer;
6375
+ _context28.prev = 2;
6376
+ if (turnServerInfo) {
6377
+ _context28.next = 8;
6378
+ break;
6379
+ }
6380
+ _context28.next = 6;
6381
+ return this.doTurnDiscovery(isRetry, isForced);
6382
+ case 6:
6383
+ _yield$this$doTurnDis = _context28.sent;
6384
+ turnServerInfo = _yield$this$doTurnDis.turnServerInfo;
6385
+ case 8:
6386
+ _context28.next = 10;
6215
6387
  return this.createMediaConnection(turnServerInfo, bundlePolicy);
6216
- case 15:
6217
- mc = _context26.sent;
6388
+ case 10:
6389
+ mc = _context28.sent;
6218
6390
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " media connection created"));
6219
6391
  if (!this.isMultistream) {
6220
- _context26.next = 24;
6392
+ _context28.next = 20;
6221
6393
  break;
6222
6394
  }
6223
6395
  this.remoteMediaManager = new _remoteMediaManager.RemoteMediaManager(this.receiveSlotManager, this.mediaRequestManagers, remoteMediaManagerConfig);
6224
6396
  this.forwardEvent(this.remoteMediaManager, _remoteMediaManager.Event.AudioCreated, _constants.EVENT_TRIGGERS.REMOTE_MEDIA_AUDIO_CREATED);
6397
+ this.forwardEvent(this.remoteMediaManager, _remoteMediaManager.Event.InterpretationAudioCreated, _constants.EVENT_TRIGGERS.REMOTE_MEDIA_INTERPRETATION_AUDIO_CREATED);
6225
6398
  this.forwardEvent(this.remoteMediaManager, _remoteMediaManager.Event.ScreenShareAudioCreated, _constants.EVENT_TRIGGERS.REMOTE_MEDIA_SCREEN_SHARE_AUDIO_CREATED);
6226
6399
  this.forwardEvent(this.remoteMediaManager, _remoteMediaManager.Event.VideoLayoutChanged, _constants.EVENT_TRIGGERS.REMOTE_MEDIA_VIDEO_LAYOUT_CHANGED);
6227
- _context26.next = 24;
6400
+ _context28.next = 20;
6228
6401
  return this.remoteMediaManager.start();
6229
- case 24:
6230
- _context26.next = 26;
6402
+ case 20:
6403
+ _context28.next = 22;
6231
6404
  return mc.initiateOffer();
6232
- case 26:
6233
- _context26.next = 28;
6405
+ case 22:
6406
+ _context28.next = 24;
6234
6407
  return this.waitForRemoteSDPAnswer();
6235
- case 28:
6408
+ case 24:
6236
6409
  this.handleMediaLogging(this.mediaProperties);
6237
- _context26.next = 35;
6410
+ _context28.next = 31;
6238
6411
  break;
6412
+ case 27:
6413
+ _context28.prev = 27;
6414
+ _context28.t0 = _context28["catch"](2);
6415
+ _loggerProxy.default.logger.error("".concat(LOG_HEADER, " error establishing media connection, "), _context28.t0);
6416
+ throw _context28.t0;
6239
6417
  case 31:
6240
- _context26.prev = 31;
6241
- _context26.t0 = _context26["catch"](3);
6242
- _loggerProxy.default.logger.error("".concat(LOG_HEADER, " error establishing media connection, "), _context26.t0);
6243
- throw _context26.t0;
6244
- case 35:
6245
- _context26.prev = 35;
6246
- _context26.next = 38;
6418
+ _context28.prev = 31;
6419
+ _context28.next = 34;
6247
6420
  return this.waitForMediaConnectionConnected();
6248
- case 38:
6249
- _context26.next = 44;
6421
+ case 34:
6422
+ _context28.next = 40;
6250
6423
  break;
6424
+ case 36:
6425
+ _context28.prev = 36;
6426
+ _context28.t1 = _context28["catch"](31);
6427
+ _context28.next = 40;
6428
+ return this.handleWaitForMediaConnectionConnectedError(_context28.t1, remoteMediaManagerConfig, bundlePolicy);
6251
6429
  case 40:
6252
- _context26.prev = 40;
6253
- _context26.t1 = _context26["catch"](35);
6254
- _context26.next = 44;
6255
- return this.handleWaitForMediaConnectionConnectedError(_context26.t1, remoteMediaManagerConfig, bundlePolicy);
6256
- case 44:
6257
6430
  case "end":
6258
- return _context26.stop();
6431
+ return _context28.stop();
6259
6432
  }
6260
- }, _callee26, this, [[3, 31], [35, 40]]);
6433
+ }, _callee28, this, [[2, 27], [31, 36]]);
6261
6434
  }));
6262
- function establishMediaConnection(_x26, _x27, _x28) {
6435
+ function establishMediaConnection(_x28, _x29, _x30, _x31) {
6263
6436
  return _establishMediaConnection.apply(this, arguments);
6264
6437
  }
6265
6438
  return establishMediaConnection;
@@ -6274,22 +6447,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6274
6447
  }, {
6275
6448
  key: "cleanUpOnAddMediaFailure",
6276
6449
  value: (function () {
6277
- var _cleanUpOnAddMediaFailure = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee27() {
6278
- return _regenerator.default.wrap(function _callee27$(_context27) {
6279
- while (1) switch (_context27.prev = _context27.next) {
6450
+ var _cleanUpOnAddMediaFailure = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee29() {
6451
+ return _regenerator.default.wrap(function _callee29$(_context29) {
6452
+ while (1) switch (_context29.prev = _context29.next) {
6280
6453
  case 0:
6281
6454
  if (!this.statsAnalyzer) {
6282
- _context27.next = 3;
6455
+ _context29.next = 3;
6283
6456
  break;
6284
6457
  }
6285
- _context27.next = 3;
6458
+ _context29.next = 3;
6286
6459
  return this.statsAnalyzer.stopAnalyzer();
6287
6460
  case 3:
6288
6461
  this.statsAnalyzer = null;
6289
6462
 
6290
6463
  // when media fails, we want to upload a webrtc dump to see whats going on
6291
6464
  // this function is async, but returns once the stats have been gathered
6292
- _context27.next = 6;
6465
+ _context29.next = 6;
6293
6466
  return this.forceSendStatsReport({
6294
6467
  callFrom: 'addMedia'
6295
6468
  });
@@ -6300,9 +6473,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6300
6473
  }
6301
6474
  case 7:
6302
6475
  case "end":
6303
- return _context27.stop();
6476
+ return _context29.stop();
6304
6477
  }
6305
- }, _callee27, this);
6478
+ }, _callee29, this);
6306
6479
  }));
6307
6480
  function cleanUpOnAddMediaFailure() {
6308
6481
  return _cleanUpOnAddMediaFailure.apply(this, arguments);
@@ -6320,11 +6493,11 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6320
6493
  }, {
6321
6494
  key: "cleanUpBeforeRetryWithTurnServer",
6322
6495
  value: (function () {
6323
- var _cleanUpBeforeRetryWithTurnServer = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee28() {
6324
- return _regenerator.default.wrap(function _callee28$(_context28) {
6325
- while (1) switch (_context28.prev = _context28.next) {
6496
+ var _cleanUpBeforeRetryWithTurnServer = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee30() {
6497
+ return _regenerator.default.wrap(function _callee30$(_context30) {
6498
+ while (1) switch (_context30.prev = _context30.next) {
6326
6499
  case 0:
6327
- _context28.next = 2;
6500
+ _context30.next = 2;
6328
6501
  return this.forceSendStatsReport({
6329
6502
  callFrom: 'cleanUpBeforeRetryWithTurnServer'
6330
6503
  });
@@ -6344,9 +6517,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6344
6517
  }
6345
6518
  case 3:
6346
6519
  case "end":
6347
- return _context28.stop();
6520
+ return _context30.stop();
6348
6521
  }
6349
- }, _callee28, this);
6522
+ }, _callee30, this);
6350
6523
  }));
6351
6524
  function cleanUpBeforeRetryWithTurnServer() {
6352
6525
  return _cleanUpBeforeRetryWithTurnServer.apply(this, arguments);
@@ -6357,6 +6530,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6357
6530
  * Creates a media connection to the server. Media connection is required for sending or receiving any audio/video.
6358
6531
  *
6359
6532
  * @param {AddMediaOptions} options
6533
+ * @param {TurnServerInfo} turnServerInfo - TURN server information (used only internally by the SDK)
6360
6534
  * @returns {Promise<void>}
6361
6535
  * @public
6362
6536
  * @memberof Meeting
@@ -6365,9 +6539,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6365
6539
  }, {
6366
6540
  key: "addMedia",
6367
6541
  value: (function () {
6368
- var _addMedia = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee29() {
6542
+ var _addMedia = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee31() {
6369
6543
  var _this$webex$meetings$2, _this$webex$meetings$3;
6370
6544
  var options,
6545
+ turnServerInfo,
6371
6546
  LOG_HEADER,
6372
6547
  localStreams,
6373
6548
  _options$audioEnabled,
@@ -6380,7 +6555,6 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6380
6555
  shareVideoEnabled,
6381
6556
  remoteMediaManagerConfig,
6382
6557
  bundlePolicy,
6383
- allowMediaInLobby,
6384
6558
  _this$remoteMediaMana,
6385
6559
  connectionType,
6386
6560
  reachabilityStats,
@@ -6406,38 +6580,39 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6406
6580
  _this$mediaProperties39,
6407
6581
  _this$mediaProperties40,
6408
6582
  reachabilityMetrics,
6409
- _args29 = arguments;
6410
- return _regenerator.default.wrap(function _callee29$(_context29) {
6411
- while (1) switch (_context29.prev = _context29.next) {
6583
+ _args31 = arguments;
6584
+ return _regenerator.default.wrap(function _callee31$(_context31) {
6585
+ while (1) switch (_context31.prev = _context31.next) {
6412
6586
  case 0:
6413
- options = _args29.length > 0 && _args29[0] !== undefined ? _args29[0] : {};
6587
+ options = _args31.length > 0 && _args31[0] !== undefined ? _args31[0] : {};
6588
+ turnServerInfo = _args31.length > 1 && _args31[1] !== undefined ? _args31[1] : undefined;
6414
6589
  this.retriedWithTurnServer = false;
6415
6590
  this.hasMediaConnectionConnectedAtLeastOnce = false;
6416
6591
  LOG_HEADER = 'Meeting:index#addMedia -->';
6417
- _loggerProxy.default.logger.info("".concat(LOG_HEADER, " called with: ").concat((0, _stringify.default)(options)));
6592
+ _loggerProxy.default.logger.info("".concat(LOG_HEADER, " called with: ").concat((0, _stringify.default)(options), ", ").concat((0, _stringify.default)(turnServerInfo)));
6418
6593
  if (!(options.allowMediaInLobby !== true && this.meetingState !== _constants.FULL_STATE.ACTIVE)) {
6419
- _context29.next = 7;
6594
+ _context31.next = 8;
6420
6595
  break;
6421
6596
  }
6422
6597
  throw new _webexErrors.MeetingNotActiveError();
6423
- case 7:
6424
- if (!_util.default.isUserInLeftState(this.locusInfo)) {
6425
- _context29.next = 9;
6598
+ case 8:
6599
+ if (!_util2.default.isUserInLeftState(this.locusInfo)) {
6600
+ _context31.next = 10;
6426
6601
  break;
6427
6602
  }
6428
6603
  throw new _webexErrors.UserNotJoinedError();
6429
- case 9:
6430
- 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, allowMediaInLobby = options.allowMediaInLobby;
6604
+ case 10:
6605
+ 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;
6431
6606
  this.allowMediaInLobby = options === null || options === void 0 ? void 0 : options.allowMediaInLobby;
6432
6607
 
6433
6608
  // If the user is unjoined or guest waiting in lobby dont allow the user to addMedia
6434
6609
  // @ts-ignore - isUserUnadmitted coming from SelfUtil
6435
- if (!(this.isUserUnadmitted && !this.wirelessShare && !allowMediaInLobby)) {
6436
- _context29.next = 13;
6610
+ if (!(this.isUserUnadmitted && !this.wirelessShare && !this.allowMediaInLobby)) {
6611
+ _context31.next = 14;
6437
6612
  break;
6438
6613
  }
6439
6614
  throw new _webexErrors.UserInLobbyError();
6440
- case 13:
6615
+ case 14:
6441
6616
  // @ts-ignore
6442
6617
  this.webex.internal.newMetrics.submitClientEvent({
6443
6618
  name: 'client.media.capabilities',
@@ -6492,33 +6667,42 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6492
6667
  });
6493
6668
  this.audio = (0, _muteState.createMuteState)(_constants.AUDIO, this, audioEnabled);
6494
6669
  this.video = (0, _muteState.createMuteState)(_constants.VIDEO, this, videoEnabled);
6495
- _context29.prev = 18;
6496
- _context29.next = 21;
6670
+ _context31.prev = 19;
6671
+ _context31.next = 22;
6497
6672
  return this.setUpLocalStreamReferences(localStreams);
6498
- case 21:
6673
+ case 22:
6499
6674
  this.setMercuryListener();
6500
6675
  this.createStatsAnalyzer();
6501
- _context29.next = 25;
6502
- return this.establishMediaConnection(remoteMediaManagerConfig, bundlePolicy, false);
6503
- case 25:
6504
- _context29.next = 27;
6676
+ _context31.next = 26;
6677
+ return this.establishMediaConnection(remoteMediaManagerConfig, bundlePolicy, false, turnServerInfo);
6678
+ case 26:
6679
+ if (!(audioEnabled || videoEnabled)) {
6680
+ _context31.next = 31;
6681
+ break;
6682
+ }
6683
+ _context31.next = 29;
6505
6684
  return Meeting.handleDeviceLogging();
6506
- case 27:
6685
+ case 29:
6686
+ _context31.next = 32;
6687
+ break;
6688
+ case 31:
6689
+ _loggerProxy.default.logger.info("".concat(LOG_HEADER, " device logging not required"));
6690
+ case 32:
6507
6691
  if (!this.mediaProperties.hasLocalShareStream()) {
6508
- _context29.next = 30;
6692
+ _context31.next = 35;
6509
6693
  break;
6510
6694
  }
6511
- _context29.next = 30;
6695
+ _context31.next = 35;
6512
6696
  return this.enqueueScreenShareFloorRequest();
6513
- case 30:
6514
- _context29.next = 32;
6697
+ case 35:
6698
+ _context31.next = 37;
6515
6699
  return this.mediaProperties.getCurrentConnectionType();
6516
- case 32:
6517
- connectionType = _context29.sent;
6518
- _context29.next = 35;
6700
+ case 37:
6701
+ connectionType = _context31.sent;
6702
+ _context31.next = 40;
6519
6703
  return this.webex.meetings.reachability.getReachabilityMetrics();
6520
- case 35:
6521
- reachabilityStats = _context29.sent;
6704
+ case 40:
6705
+ reachabilityStats = _context31.sent;
6522
6706
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_MEDIA_SUCCESS, _objectSpread({
6523
6707
  correlation_id: this.correlationId,
6524
6708
  locus_id: this.locusUrl.split('/').pop(),
@@ -6537,24 +6721,24 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6537
6721
 
6538
6722
  // We can log ReceiveSlot SSRCs only after the SDP exchange, so doing it here:
6539
6723
  (_this$remoteMediaMana = this.remoteMediaManager) === null || _this$remoteMediaMana === void 0 ? void 0 : _this$remoteMediaMana.logAllReceiveSlots();
6540
- _context29.next = 54;
6724
+ _context31.next = 59;
6541
6725
  break;
6542
- case 42:
6543
- _context29.prev = 42;
6544
- _context29.t0 = _context29["catch"](18);
6545
- _loggerProxy.default.logger.error("".concat(LOG_HEADER, " failed to establish media connection: "), _context29.t0);
6726
+ case 47:
6727
+ _context31.prev = 47;
6728
+ _context31.t0 = _context31["catch"](19);
6729
+ _loggerProxy.default.logger.error("".concat(LOG_HEADER, " failed to establish media connection: "), _context31.t0);
6546
6730
 
6547
6731
  // @ts-ignore
6548
- _context29.next = 47;
6732
+ _context31.next = 52;
6549
6733
  return this.webex.meetings.reachability.getReachabilityMetrics();
6550
- case 47:
6551
- reachabilityMetrics = _context29.sent;
6734
+ case 52:
6735
+ reachabilityMetrics = _context31.sent;
6552
6736
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_MEDIA_FAILURE, _objectSpread({
6553
6737
  correlation_id: this.correlationId,
6554
6738
  locus_id: this.locusUrl.split('/').pop(),
6555
- reason: _context29.t0.message,
6556
- stack: _context29.t0.stack,
6557
- code: _context29.t0.code,
6739
+ reason: _context31.t0.message,
6740
+ stack: _context31.t0.stack,
6741
+ code: _context31.t0.code,
6558
6742
  turnDiscoverySkippedReason: this.turnDiscoverySkippedReason,
6559
6743
  turnServerUsed: this.turnServerUsed,
6560
6744
  retriedWithTurnServer: this.retriedWithTurnServer,
@@ -6563,25 +6747,25 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6563
6747
  connectionState: ((_this$mediaProperties27 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties27 === void 0 ? void 0 : (_this$mediaProperties28 = _this$mediaProperties27.multistreamConnection) === null || _this$mediaProperties28 === void 0 ? void 0 : (_this$mediaProperties29 = _this$mediaProperties28.pc) === null || _this$mediaProperties29 === void 0 ? void 0 : (_this$mediaProperties30 = _this$mediaProperties29.pc) === null || _this$mediaProperties30 === void 0 ? void 0 : _this$mediaProperties30.connectionState) || ((_this$mediaProperties31 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties31 === void 0 ? void 0 : (_this$mediaProperties32 = _this$mediaProperties31.mediaConnection) === null || _this$mediaProperties32 === void 0 ? void 0 : (_this$mediaProperties33 = _this$mediaProperties32.pc) === null || _this$mediaProperties33 === void 0 ? void 0 : _this$mediaProperties33.connectionState) || 'unknown',
6564
6748
  iceConnectionState: ((_this$mediaProperties34 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties34 === void 0 ? void 0 : (_this$mediaProperties35 = _this$mediaProperties34.multistreamConnection) === null || _this$mediaProperties35 === void 0 ? void 0 : (_this$mediaProperties36 = _this$mediaProperties35.pc) === null || _this$mediaProperties36 === void 0 ? void 0 : (_this$mediaProperties37 = _this$mediaProperties36.pc) === null || _this$mediaProperties37 === void 0 ? void 0 : _this$mediaProperties37.iceConnectionState) || ((_this$mediaProperties38 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties38 === void 0 ? void 0 : (_this$mediaProperties39 = _this$mediaProperties38.mediaConnection) === null || _this$mediaProperties39 === void 0 ? void 0 : (_this$mediaProperties40 = _this$mediaProperties39.pc) === null || _this$mediaProperties40 === void 0 ? void 0 : _this$mediaProperties40.iceConnectionState) || 'unknown'
6565
6749
  }, reachabilityMetrics));
6566
- _context29.next = 51;
6750
+ _context31.next = 56;
6567
6751
  return this.cleanUpOnAddMediaFailure();
6568
- case 51:
6752
+ case 56:
6569
6753
  // Upload logs on error while adding media
6570
6754
  _triggerProxy.default.trigger(this, {
6571
6755
  file: 'meeting/index',
6572
6756
  function: 'addMedia'
6573
6757
  }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, this);
6574
- if (_context29.t0 instanceof _internalMediaCore.Errors.SdpError) {
6758
+ if (_context31.t0 instanceof _internalMediaCore.Errors.SdpError) {
6575
6759
  this.leave({
6576
6760
  reason: _constants.MEETING_REMOVED_REASON.MEETING_CONNECTION_FAILED
6577
6761
  });
6578
6762
  }
6579
- throw _context29.t0;
6580
- case 54:
6763
+ throw _context31.t0;
6764
+ case 59:
6581
6765
  case "end":
6582
- return _context29.stop();
6766
+ return _context31.stop();
6583
6767
  }
6584
- }, _callee29, this, [[18, 42]]);
6768
+ }, _callee31, this, [[19, 47]]);
6585
6769
  }));
6586
6770
  function addMedia() {
6587
6771
  return _addMedia.apply(this, arguments);
@@ -6613,7 +6797,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6613
6797
  * @memberof Meeting
6614
6798
  */
6615
6799
  function enqueueMediaUpdate(mediaUpdateType) {
6616
- var _this40 = this;
6800
+ var _this39 = this;
6617
6801
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
6618
6802
  var canUpdateMediaNow = this.canUpdateMedia();
6619
6803
  return new _promise.default(function (resolve, reject) {
@@ -6624,9 +6808,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6624
6808
  options: options
6625
6809
  };
6626
6810
  _loggerProxy.default.logger.log("Meeting:index#enqueueMediaUpdate --> enqueuing media update type=".concat(mediaUpdateType));
6627
- _this40.queuedMediaUpdates.push(queueItem);
6811
+ _this39.queuedMediaUpdates.push(queueItem);
6628
6812
  if (canUpdateMediaNow) {
6629
- _this40.processNextQueuedMediaUpdate();
6813
+ _this39.processNextQueuedMediaUpdate();
6630
6814
  }
6631
6815
  });
6632
6816
  }
@@ -6649,35 +6833,35 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6649
6833
  * @memberof Meeting
6650
6834
  */
6651
6835
  function () {
6652
- var _updateMedia = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee30(options) {
6836
+ var _updateMedia = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee32(options) {
6653
6837
  var audioEnabled, videoEnabled, shareAudioEnabled, shareVideoEnabled;
6654
- return _regenerator.default.wrap(function _callee30$(_context30) {
6655
- while (1) switch (_context30.prev = _context30.next) {
6838
+ return _regenerator.default.wrap(function _callee32$(_context32) {
6839
+ while (1) switch (_context32.prev = _context32.next) {
6656
6840
  case 0:
6657
6841
  this.checkMediaConnection();
6658
6842
  audioEnabled = options.audioEnabled, videoEnabled = options.videoEnabled, shareAudioEnabled = options.shareAudioEnabled, shareVideoEnabled = options.shareVideoEnabled;
6659
6843
  _loggerProxy.default.logger.log("Meeting:index#updateMedia --> called with options=".concat((0, _stringify.default)(options)));
6660
6844
  if (this.canUpdateMedia()) {
6661
- _context30.next = 5;
6845
+ _context32.next = 5;
6662
6846
  break;
6663
6847
  }
6664
- return _context30.abrupt("return", this.enqueueMediaUpdate(MEDIA_UPDATE_TYPE.UPDATE_MEDIA, options));
6848
+ return _context32.abrupt("return", this.enqueueMediaUpdate(MEDIA_UPDATE_TYPE.UPDATE_MEDIA, options));
6665
6849
  case 5:
6666
6850
  if (!this.isMultistream) {
6667
- _context30.next = 10;
6851
+ _context32.next = 10;
6668
6852
  break;
6669
6853
  }
6670
6854
  if (!(shareAudioEnabled !== undefined || shareVideoEnabled !== undefined)) {
6671
- _context30.next = 8;
6855
+ _context32.next = 8;
6672
6856
  break;
6673
6857
  }
6674
6858
  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');
6675
6859
  case 8:
6676
- _context30.next = 12;
6860
+ _context32.next = 12;
6677
6861
  break;
6678
6862
  case 10:
6679
6863
  if (!(shareAudioEnabled !== undefined)) {
6680
- _context30.next = 12;
6864
+ _context32.next = 12;
6681
6865
  break;
6682
6866
  }
6683
6867
  throw new Error('toggling shareAudioEnabled in a transcoded meeting is not supported as of now');
@@ -6702,20 +6886,20 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6702
6886
  this.mediaProperties.mediaDirection.receiveShare = !!(shareAudioEnabled || shareVideoEnabled);
6703
6887
  }
6704
6888
  if (this.isMultistream) {
6705
- _context30.next = 18;
6889
+ _context32.next = 18;
6706
6890
  break;
6707
6891
  }
6708
- _context30.next = 18;
6892
+ _context32.next = 18;
6709
6893
  return this.updateTranscodedMediaConnection();
6710
6894
  case 18:
6711
- return _context30.abrupt("return", undefined);
6895
+ return _context32.abrupt("return", undefined);
6712
6896
  case 19:
6713
6897
  case "end":
6714
- return _context30.stop();
6898
+ return _context32.stop();
6715
6899
  }
6716
- }, _callee30, this);
6900
+ }, _callee32, this);
6717
6901
  }));
6718
- function updateMedia(_x29) {
6902
+ function updateMedia(_x32) {
6719
6903
  return _updateMedia.apply(this, arguments);
6720
6904
  }
6721
6905
  return updateMedia;
@@ -6731,7 +6915,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6731
6915
  }, {
6732
6916
  key: "acknowledge",
6733
6917
  value: function acknowledge(type) {
6734
- var _this41 = this;
6918
+ var _this40 = this;
6735
6919
  if (!type) {
6736
6920
  return _promise.default.reject(new _parameter.default('Type must be set to acknowledge the meeting.'));
6737
6921
  }
@@ -6743,12 +6927,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6743
6927
  }).then(function (response) {
6744
6928
  return _promise.default.resolve(response);
6745
6929
  }).then(function (response) {
6746
- _this41.meetingFiniteStateMachine.ring(type);
6930
+ _this40.meetingFiniteStateMachine.ring(type);
6747
6931
  // @ts-ignore
6748
- _this41.webex.internal.newMetrics.submitClientEvent({
6932
+ _this40.webex.internal.newMetrics.submitClientEvent({
6749
6933
  name: 'client.alert.displayed',
6750
6934
  options: {
6751
- meetingId: _this41.id
6935
+ meetingId: _this40.id
6752
6936
  }
6753
6937
  });
6754
6938
  return _promise.default.resolve({
@@ -6773,12 +6957,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6773
6957
  }, {
6774
6958
  key: "decline",
6775
6959
  value: function decline(reason) {
6776
- var _this42 = this;
6777
- return _util.default.declineMeeting(this, reason).then(function (decline) {
6778
- _this42.meetingFiniteStateMachine.decline();
6960
+ var _this41 = this;
6961
+ return _util2.default.declineMeeting(this, reason).then(function (decline) {
6962
+ _this41.meetingFiniteStateMachine.decline();
6779
6963
  return _promise.default.resolve(decline);
6780
6964
  }).catch(function (error) {
6781
- _this42.meetingFiniteStateMachine.fail(error);
6965
+ _this41.meetingFiniteStateMachine.fail(error);
6782
6966
  return _promise.default.reject(error);
6783
6967
  });
6784
6968
  }
@@ -6808,7 +6992,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6808
6992
  key: "buildLeaveFetchRequestOptions",
6809
6993
  value: function buildLeaveFetchRequestOptions() {
6810
6994
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
6811
- var requestOptions = _util.default.buildLeaveFetchRequestOptions(this, options);
6995
+ var requestOptions = _util2.default.buildLeaveFetchRequestOptions(this, options);
6812
6996
 
6813
6997
  // @ts-ignore
6814
6998
  return this.webex.prepareFetchOptions(requestOptions);
@@ -6829,7 +7013,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6829
7013
  }, {
6830
7014
  key: "leave",
6831
7015
  value: function leave() {
6832
- var _this43 = this;
7016
+ var _this42 = this;
6833
7017
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
6834
7018
  var leaveReason = options.reason || _constants.MEETING_REMOVED_REASON.CLIENT_LEAVE_REQUEST;
6835
7019
 
@@ -6841,7 +7025,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6841
7025
  var payload = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
6842
7026
  return (
6843
7027
  // @ts-ignore
6844
- _this43.webex.internal.newMetrics.submitClientEvent({
7028
+ _this42.webex.internal.newMetrics.submitClientEvent({
6845
7029
  name: 'client.call.leave',
6846
7030
  payload: _objectSpread({
6847
7031
  trigger: 'user-interaction',
@@ -6849,33 +7033,33 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6849
7033
  leaveReason: options.clientEventLeaveReason
6850
7034
  }, payload),
6851
7035
  options: {
6852
- meetingId: _this43.id
7036
+ meetingId: _this42.id
6853
7037
  }
6854
7038
  })
6855
7039
  );
6856
7040
  };
6857
7041
  _loggerProxy.default.logger.log('Meeting:index#leave --> Leaving a meeting');
6858
- return _util.default.leaveMeeting(this, options).then(function (leave) {
7042
+ return _util2.default.leaveMeeting(this, options).then(function (leave) {
6859
7043
  // CA team recommends submitting this *after* locus /leave
6860
7044
  submitLeaveMetric();
6861
- _this43.meetingFiniteStateMachine.leave();
6862
- _this43.clearMeetingData();
7045
+ _this42.meetingFiniteStateMachine.leave();
7046
+ _this42.clearMeetingData();
6863
7047
 
6864
7048
  // upload logs on leave irrespective of meeting delete
6865
- _triggerProxy.default.trigger(_this43, {
7049
+ _triggerProxy.default.trigger(_this42, {
6866
7050
  file: 'meeting/index',
6867
7051
  function: 'leave'
6868
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this43);
7052
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this42);
6869
7053
 
6870
7054
  // TODO: more testing before we remove this code, we are not sure the scenarios for destroy here
6871
- if (_this43.wirelessShare || _this43.guest) {
7055
+ if (_this42.wirelessShare || _this42.guest) {
6872
7056
  // If screen sharing clean the meeting object
6873
- _triggerProxy.default.trigger(_this43, {
7057
+ _triggerProxy.default.trigger(_this42, {
6874
7058
  file: 'meeting/index',
6875
7059
  function: 'leave'
6876
7060
  }, _constants.EVENTS.DESTROY_MEETING, {
6877
7061
  reason: options.reason,
6878
- meetingId: _this43.id
7062
+ meetingId: _this42.id
6879
7063
  });
6880
7064
  }
6881
7065
  _loggerProxy.default.logger.log('Meeting:index#leave --> LEAVE REASON ', leaveReason);
@@ -6892,16 +7076,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6892
7076
  shownToUser: false
6893
7077
  }]
6894
7078
  });
6895
- _this43.meetingFiniteStateMachine.fail(error);
7079
+ _this42.meetingFiniteStateMachine.fail(error);
6896
7080
  _loggerProxy.default.logger.error('Meeting:index#leave --> Failed to leave ', error);
6897
7081
  // upload logs on leave irrespective of meeting delete
6898
- _triggerProxy.default.trigger(_this43, {
7082
+ _triggerProxy.default.trigger(_this42, {
6899
7083
  file: 'meeting/index',
6900
7084
  function: 'leave'
6901
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this43);
7085
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this42);
6902
7086
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_LEAVE_FAILURE, {
6903
- correlation_id: _this43.correlationId,
6904
- locus_id: _this43.locusUrl.split('/').pop(),
7087
+ correlation_id: _this42.correlationId,
7088
+ locus_id: _this42.locusUrl.split('/').pop(),
6905
7089
  reason: error.message,
6906
7090
  stack: error.stack,
6907
7091
  code: error.code
@@ -6921,7 +7105,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6921
7105
  }, {
6922
7106
  key: "startWhiteboardShare",
6923
7107
  value: function startWhiteboardShare(channelUrl, resourceToken) {
6924
- var _this44 = this;
7108
+ var _this43 = this;
6925
7109
  var whiteboard = this.locusInfo.mediaShares.find(function (element) {
6926
7110
  return element.name === 'whiteboard';
6927
7111
  });
@@ -6950,13 +7134,13 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6950
7134
  body.resourceToken = resourceToken;
6951
7135
  }
6952
7136
  return this.meetingRequest.changeMeetingFloor(body).then(function () {
6953
- _this44.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
7137
+ _this43.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
6954
7138
  return _promise.default.resolve();
6955
7139
  }).catch(function (error) {
6956
7140
  _loggerProxy.default.logger.error('Meeting:index#startWhiteboardShare --> Error ', error);
6957
7141
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_START_WHITEBOARD_SHARE_FAILURE, {
6958
- correlation_id: _this44.correlationId,
6959
- locus_id: _this44.locusUrl.split('/').pop(),
7142
+ correlation_id: _this43.correlationId,
7143
+ locus_id: _this43.locusUrl.split('/').pop(),
6960
7144
  reason: error.message,
6961
7145
  stack: error.stack,
6962
7146
  board: {
@@ -6979,7 +7163,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6979
7163
  }, {
6980
7164
  key: "stopWhiteboardShare",
6981
7165
  value: function stopWhiteboardShare(channelUrl) {
6982
- var _this45 = this;
7166
+ var _this44 = this;
6983
7167
  var whiteboard = this.locusInfo.mediaShares.find(function (element) {
6984
7168
  return element.name === 'whiteboard';
6985
7169
  });
@@ -7002,8 +7186,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7002
7186
  }).catch(function (error) {
7003
7187
  _loggerProxy.default.logger.error('Meeting:index#stopWhiteboardShare --> Error ', error);
7004
7188
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_STOP_WHITEBOARD_SHARE_FAILURE, {
7005
- correlation_id: _this45.correlationId,
7006
- locus_id: _this45.locusUrl.split('/').pop(),
7189
+ correlation_id: _this44.correlationId,
7190
+ locus_id: _this44.locusUrl.split('/').pop(),
7007
7191
  reason: error.message,
7008
7192
  stack: error.stack,
7009
7193
  board: {
@@ -7025,7 +7209,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7025
7209
  }, {
7026
7210
  key: "requestScreenShareFloor",
7027
7211
  value: function requestScreenShareFloor() {
7028
- var _this46 = this;
7212
+ var _this45 = this;
7029
7213
  if (!this.mediaProperties.hasLocalShareStream() || !this.mediaProperties.mediaDirection.sendShare) {
7030
7214
  _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, ")"));
7031
7215
  this.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
@@ -7056,34 +7240,34 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7056
7240
  resourceUrl: this.resourceUrl,
7057
7241
  shareInstanceId: this.localShareInstanceId
7058
7242
  }).then(function () {
7059
- _this46.screenShareFloorState = ScreenShareFloorStatus.GRANTED;
7243
+ _this45.screenShareFloorState = ScreenShareFloorStatus.GRANTED;
7060
7244
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_SHARE_SUCCESS, {
7061
- correlation_id: _this46.correlationId,
7062
- locus_id: _this46.locusUrl.split('/').pop()
7245
+ correlation_id: _this45.correlationId,
7246
+ locus_id: _this45.locusUrl.split('/').pop()
7063
7247
  });
7064
7248
  return _promise.default.resolve();
7065
7249
  }).catch(function (error) {
7066
7250
  _loggerProxy.default.logger.error('Meeting:index#share --> Error ', error);
7067
7251
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_SHARE_FAILURE, {
7068
- correlation_id: _this46.correlationId,
7069
- locus_id: _this46.locusUrl.split('/').pop(),
7252
+ correlation_id: _this45.correlationId,
7253
+ locus_id: _this45.locusUrl.split('/').pop(),
7070
7254
  reason: error.message,
7071
7255
  stack: error.stack
7072
7256
  });
7073
7257
 
7074
7258
  // @ts-ignore
7075
- _this46.webex.internal.newMetrics.submitClientEvent({
7259
+ _this45.webex.internal.newMetrics.submitClientEvent({
7076
7260
  name: 'client.share.floor-granted.local',
7077
7261
  payload: {
7078
7262
  mediaType: 'share',
7079
- errors: _util.default.getChangeMeetingFloorErrorPayload(error.message),
7080
- shareInstanceId: _this46.localShareInstanceId
7263
+ errors: _util2.default.getChangeMeetingFloorErrorPayload(error.message),
7264
+ shareInstanceId: _this45.localShareInstanceId
7081
7265
  },
7082
7266
  options: {
7083
- meetingId: _this46.id
7267
+ meetingId: _this45.id
7084
7268
  }
7085
7269
  });
7086
- _this46.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
7270
+ _this45.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
7087
7271
  return _promise.default.reject(error);
7088
7272
  });
7089
7273
  }
@@ -7106,10 +7290,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7106
7290
  }, {
7107
7291
  key: "requestScreenShareFloorIfPending",
7108
7292
  value: function requestScreenShareFloorIfPending() {
7109
- var _this47 = this;
7293
+ var _this46 = this;
7110
7294
  if (this.floorGrantPending && this.state === _constants.MEETING_STATE.STATES.JOINED) {
7111
7295
  this.requestScreenShareFloor().then(function () {
7112
- _this47.floorGrantPending = false;
7296
+ _this46.floorGrantPending = false;
7113
7297
  });
7114
7298
  }
7115
7299
  }
@@ -7123,7 +7307,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7123
7307
  }, {
7124
7308
  key: "releaseScreenShareFloor",
7125
7309
  value: function releaseScreenShareFloor() {
7126
- var _this48 = this;
7310
+ var _this47 = this;
7127
7311
  var content = this.locusInfo.mediaShares.find(function (element) {
7128
7312
  return element.name === _constants.CONTENT;
7129
7313
  });
@@ -7158,8 +7342,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7158
7342
  }).catch(function (error) {
7159
7343
  _loggerProxy.default.logger.error('Meeting:index#releaseScreenShareFloor --> Error ', error);
7160
7344
  _metrics.default.sendBehavioralMetric(_constants2.default.STOP_FLOOR_REQUEST_FAILURE, {
7161
- correlation_id: _this48.correlationId,
7162
- locus_id: _this48.locusUrl.split('/').pop(),
7345
+ correlation_id: _this47.correlationId,
7346
+ locus_id: _this47.locusUrl.split('/').pop(),
7163
7347
  reason: error.message,
7164
7348
  stack: error.stack
7165
7349
  });
@@ -7269,7 +7453,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7269
7453
  }, {
7270
7454
  key: "lockMeeting",
7271
7455
  value: function lockMeeting() {
7272
- return _util.default.lockMeeting(this.inMeetingActions, this.meetingRequest, this.locusUrl);
7456
+ return _util2.default.lockMeeting(this.inMeetingActions, this.meetingRequest, this.locusUrl);
7273
7457
  }
7274
7458
 
7275
7459
  /**
@@ -7281,7 +7465,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7281
7465
  }, {
7282
7466
  key: "unlockMeeting",
7283
7467
  value: function unlockMeeting() {
7284
- return _util.default.unlockMeeting(this.inMeetingActions, this.meetingRequest, this.locusUrl);
7468
+ return _util2.default.unlockMeeting(this.inMeetingActions, this.meetingRequest, this.locusUrl);
7285
7469
  }
7286
7470
 
7287
7471
  /**
@@ -7338,7 +7522,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7338
7522
  }, {
7339
7523
  key: "changeVideoLayout",
7340
7524
  value: function changeVideoLayout(layoutType) {
7341
- var _this49 = this;
7525
+ var _this48 = this;
7342
7526
  var renderInfo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
7343
7527
  var main = renderInfo.main,
7344
7528
  content = renderInfo.content;
@@ -7392,7 +7576,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7392
7576
  }
7393
7577
  this.lastVideoLayoutInfo = (0, _lodash.cloneDeep)(layoutInfo);
7394
7578
  this.locusInfo.once(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_LAYOUT_UPDATED, function (envelope) {
7395
- _triggerProxy.default.trigger(_this49, {
7579
+ _triggerProxy.default.trigger(_this48, {
7396
7580
  file: 'meeting/index',
7397
7581
  function: 'changeVideoLayout'
7398
7582
  }, _constants.EVENT_TRIGGERS.MEETING_CONTROLS_LAYOUT_UPDATE, {
@@ -7470,13 +7654,13 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7470
7654
  }, {
7471
7655
  key: "handleMediaLogging",
7472
7656
  value: function handleMediaLogging(mediaProperties) {
7473
- _util.default.handleVideoLogging(mediaProperties.videoStream);
7474
- _util.default.handleAudioLogging(mediaProperties.audioStream);
7657
+ _util2.default.handleVideoLogging(mediaProperties.videoStream);
7658
+ _util2.default.handleAudioLogging(mediaProperties.audioStream);
7475
7659
  }
7476
7660
 
7477
7661
  /**
7478
7662
  *
7479
- * @returns {string} one of 'attendee','host','cohost', returns the user type of the current user
7663
+ * @returns {string} one of 'panelist', 'attendee', 'host', 'cohost', returns the user type of the current user
7480
7664
  */
7481
7665
  }, {
7482
7666
  key: "getCurUserType",
@@ -7489,8 +7673,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7489
7673
  if (roles.includes(_constants.SELF_ROLES.COHOST)) {
7490
7674
  return 'cohost';
7491
7675
  }
7492
- if (roles.includes(_constants.SELF_ROLES.PRESENTER)) {
7493
- return 'presenter';
7676
+ if (roles.includes(_constants.SELF_ROLES.PANELIST)) {
7677
+ return 'panelist';
7494
7678
  }
7495
7679
  if (roles.includes(_constants.SELF_ROLES.ATTENDEE)) {
7496
7680
  return 'attendee';
@@ -7508,7 +7692,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7508
7692
  }, {
7509
7693
  key: "endMeetingForAll",
7510
7694
  value: function endMeetingForAll() {
7511
- var _this50 = this;
7695
+ var _this49 = this;
7512
7696
  // @ts-ignore
7513
7697
  this.webex.internal.newMetrics.submitClientEvent({
7514
7698
  name: 'client.call.leave',
@@ -7525,26 +7709,26 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7525
7709
  correlation_id: this.correlationId,
7526
7710
  locus_id: this.locusId
7527
7711
  });
7528
- return _util.default.endMeetingForAll(this).then(function (end) {
7529
- _this50.meetingFiniteStateMachine.end();
7530
- _this50.clearMeetingData();
7712
+ return _util2.default.endMeetingForAll(this).then(function (end) {
7713
+ _this49.meetingFiniteStateMachine.end();
7714
+ _this49.clearMeetingData();
7531
7715
  // upload logs on leave irrespective of meeting delete
7532
- _triggerProxy.default.trigger(_this50, {
7716
+ _triggerProxy.default.trigger(_this49, {
7533
7717
  file: 'meeting/index',
7534
7718
  function: 'endMeetingForAll'
7535
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this50);
7719
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this49);
7536
7720
  return end;
7537
7721
  }).catch(function (error) {
7538
- _this50.meetingFiniteStateMachine.fail(error);
7722
+ _this49.meetingFiniteStateMachine.fail(error);
7539
7723
  _loggerProxy.default.logger.error('Meeting:index#endMeetingForAll --> Failed to end meeting ', error);
7540
7724
  // upload logs on leave irrespective of meeting delete
7541
- _triggerProxy.default.trigger(_this50, {
7725
+ _triggerProxy.default.trigger(_this49, {
7542
7726
  file: 'meeting/index',
7543
7727
  function: 'endMeetingForAll'
7544
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this50);
7728
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this49);
7545
7729
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_END_ALL_FAILURE, {
7546
- correlation_id: _this50.correlationId,
7547
- locus_id: _this50.locusUrl.split('/').pop(),
7730
+ correlation_id: _this49.correlationId,
7731
+ locus_id: _this49.locusUrl.split('/').pop(),
7548
7732
  reason: error.message,
7549
7733
  stack: error.stack,
7550
7734
  code: error.code
@@ -7633,39 +7817,39 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7633
7817
  }, {
7634
7818
  key: "enableMusicMode",
7635
7819
  value: (function () {
7636
- var _enableMusicMode = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee31(shouldEnableMusicMode) {
7637
- return _regenerator.default.wrap(function _callee31$(_context31) {
7638
- while (1) switch (_context31.prev = _context31.next) {
7820
+ var _enableMusicMode = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee33(shouldEnableMusicMode) {
7821
+ return _regenerator.default.wrap(function _callee33$(_context33) {
7822
+ while (1) switch (_context33.prev = _context33.next) {
7639
7823
  case 0:
7640
7824
  this.checkMediaConnection();
7641
7825
  if (this.isMultistream) {
7642
- _context31.next = 3;
7826
+ _context33.next = 3;
7643
7827
  break;
7644
7828
  }
7645
7829
  throw new Error('enableMusicMode() only supported with multistream');
7646
7830
  case 3:
7647
7831
  if (!shouldEnableMusicMode) {
7648
- _context31.next = 8;
7832
+ _context33.next = 8;
7649
7833
  break;
7650
7834
  }
7651
- _context31.next = 6;
7835
+ _context33.next = 6;
7652
7836
  return this.sendSlotManager.setCodecParameters(_internalMediaCore.MediaType.AudioMain, {
7653
7837
  maxaveragebitrate: '64000',
7654
7838
  maxplaybackrate: '48000'
7655
7839
  });
7656
7840
  case 6:
7657
- _context31.next = 10;
7841
+ _context33.next = 10;
7658
7842
  break;
7659
7843
  case 8:
7660
- _context31.next = 10;
7844
+ _context33.next = 10;
7661
7845
  return this.sendSlotManager.deleteCodecParameters(_internalMediaCore.MediaType.AudioMain, ['maxaveragebitrate', 'maxplaybackrate']);
7662
7846
  case 10:
7663
7847
  case "end":
7664
- return _context31.stop();
7848
+ return _context33.stop();
7665
7849
  }
7666
- }, _callee31, this);
7850
+ }, _callee33, this);
7667
7851
  }));
7668
- function enableMusicMode(_x30) {
7852
+ function enableMusicMode(_x33) {
7669
7853
  return _enableMusicMode.apply(this, arguments);
7670
7854
  }
7671
7855
  return enableMusicMode;
@@ -7686,7 +7870,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7686
7870
  _this$mediaProperties48,
7687
7871
  _this$mediaProperties49,
7688
7872
  _this$mediaProperties50,
7689
- _this51 = this;
7873
+ _this50 = this;
7690
7874
  var LOG_HEADER = 'Meeting:index#updateTranscodedMediaConnection -->';
7691
7875
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " starting"));
7692
7876
  if (!this.canUpdateMedia()) {
@@ -7711,8 +7895,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7711
7895
  }).catch(function (error) {
7712
7896
  _loggerProxy.default.logger.error("".concat(LOG_HEADER, " Error: "), error);
7713
7897
  _metrics.default.sendBehavioralMetric(_constants2.default.UPDATE_MEDIA_FAILURE, {
7714
- correlation_id: _this51.correlationId,
7715
- locus_id: _this51.locusUrl.split('/').pop(),
7898
+ correlation_id: _this50.correlationId,
7899
+ locus_id: _this50.locusUrl.split('/').pop(),
7716
7900
  reason: error.message,
7717
7901
  stack: error.stack
7718
7902
  });
@@ -7720,6 +7904,32 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7720
7904
  });
7721
7905
  }
7722
7906
 
7907
+ /**
7908
+ * set sending named media group which the audio should send to
7909
+ * @param {MediaType} mediaType of the stream
7910
+ * @param {number} languageCode of the stream
7911
+ * @returns {void}
7912
+ */
7913
+ }, {
7914
+ key: "setSendNamedMediaGroup",
7915
+ value: function setSendNamedMediaGroup(mediaType) {
7916
+ var languageCode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
7917
+ if (mediaType !== _internalMediaCore.MediaType.AudioMain) {
7918
+ throw new Error("cannot set send named media group which media type is ".concat(mediaType));
7919
+ }
7920
+ var value = languageCode || this.simultaneousInterpretation.getTargetLanguageCode();
7921
+ var groups = [];
7922
+ if (value) {
7923
+ groups = [{
7924
+ type: _constants.NAMED_MEDIA_GROUP_TYPE_AUDIO,
7925
+ value: value
7926
+ }];
7927
+ }
7928
+ if (this.isMultistream && this.mediaProperties.webrtcMediaConnection) {
7929
+ this.sendSlotManager.setNamedMediaGroups(mediaType, groups);
7930
+ }
7931
+ }
7932
+
7723
7933
  /**
7724
7934
  * Publishes a stream.
7725
7935
  *
@@ -7730,25 +7940,25 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7730
7940
  }, {
7731
7941
  key: "publishStream",
7732
7942
  value: (function () {
7733
- var _publishStream = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee32(mediaType, stream) {
7734
- return _regenerator.default.wrap(function _callee32$(_context32) {
7735
- while (1) switch (_context32.prev = _context32.next) {
7943
+ var _publishStream = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee34(mediaType, stream) {
7944
+ return _regenerator.default.wrap(function _callee34$(_context34) {
7945
+ while (1) switch (_context34.prev = _context34.next) {
7736
7946
  case 0:
7737
7947
  if (stream) {
7738
- _context32.next = 2;
7948
+ _context34.next = 2;
7739
7949
  break;
7740
7950
  }
7741
- return _context32.abrupt("return");
7951
+ return _context34.abrupt("return");
7742
7952
  case 2:
7743
7953
  if (!this.mediaProperties.webrtcMediaConnection) {
7744
- _context32.next = 7;
7954
+ _context34.next = 7;
7745
7955
  break;
7746
7956
  }
7747
7957
  if (!(this.isMultistream && this.mediaProperties.webrtcMediaConnection)) {
7748
- _context32.next = 6;
7958
+ _context34.next = 6;
7749
7959
  break;
7750
7960
  }
7751
- _context32.next = 6;
7961
+ _context34.next = 6;
7752
7962
  return this.sendSlotManager.publishStream(mediaType, stream);
7753
7963
  case 6:
7754
7964
  this.emitPublishStateChangeEvent({
@@ -7759,11 +7969,11 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7759
7969
  });
7760
7970
  case 7:
7761
7971
  case "end":
7762
- return _context32.stop();
7972
+ return _context34.stop();
7763
7973
  }
7764
- }, _callee32, this);
7974
+ }, _callee34, this);
7765
7975
  }));
7766
- function publishStream(_x31, _x32) {
7976
+ function publishStream(_x34, _x35) {
7767
7977
  return _publishStream.apply(this, arguments);
7768
7978
  }
7769
7979
  return publishStream;
@@ -7779,21 +7989,21 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7779
7989
  }, {
7780
7990
  key: "unpublishStream",
7781
7991
  value: (function () {
7782
- var _unpublishStream = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee33(mediaType, stream) {
7783
- return _regenerator.default.wrap(function _callee33$(_context33) {
7784
- while (1) switch (_context33.prev = _context33.next) {
7992
+ var _unpublishStream = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee35(mediaType, stream) {
7993
+ return _regenerator.default.wrap(function _callee35$(_context35) {
7994
+ while (1) switch (_context35.prev = _context35.next) {
7785
7995
  case 0:
7786
7996
  if (stream) {
7787
- _context33.next = 2;
7997
+ _context35.next = 2;
7788
7998
  break;
7789
7999
  }
7790
- return _context33.abrupt("return");
8000
+ return _context35.abrupt("return");
7791
8001
  case 2:
7792
8002
  if (!(this.isMultistream && this.mediaProperties.webrtcMediaConnection)) {
7793
- _context33.next = 5;
8003
+ _context35.next = 5;
7794
8004
  break;
7795
8005
  }
7796
- _context33.next = 5;
8006
+ _context35.next = 5;
7797
8007
  return this.sendSlotManager.unpublishStream(mediaType);
7798
8008
  case 5:
7799
8009
  this.emitPublishStateChangeEvent({
@@ -7804,11 +8014,11 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7804
8014
  });
7805
8015
  case 6:
7806
8016
  case "end":
7807
- return _context33.stop();
8017
+ return _context35.stop();
7808
8018
  }
7809
- }, _callee33, this);
8019
+ }, _callee35, this);
7810
8020
  }));
7811
- function unpublishStream(_x33, _x34) {
8021
+ function unpublishStream(_x36, _x37) {
7812
8022
  return _unpublishStream.apply(this, arguments);
7813
8023
  }
7814
8024
  return unpublishStream;
@@ -7823,61 +8033,67 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7823
8033
  }, {
7824
8034
  key: "publishStreams",
7825
8035
  value: (function () {
7826
- var _publishStreams = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee34(streams) {
7827
- var _streams$screenShare, _streams$screenShare2, _streams$screenShare3, _streams$screenShare4;
7828
- var floorRequestNeeded, _streams$screenShare5;
7829
- return _regenerator.default.wrap(function _callee34$(_context34) {
7830
- while (1) switch (_context34.prev = _context34.next) {
8036
+ var _publishStreams = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee36(streams) {
8037
+ var _streams$screenShare, _streams$screenShare2, _streams$microphone, _streams$camera, _streams$screenShare3, _streams$screenShare4, _streams$screenShare5, _streams$screenShare6, _streams$screenShare7, _streams$screenShare8;
8038
+ var floorRequestNeeded, _streams$screenShare9;
8039
+ return _regenerator.default.wrap(function _callee36$(_context36) {
8040
+ while (1) switch (_context36.prev = _context36.next) {
7831
8041
  case 0:
7832
8042
  this.checkMediaConnection();
7833
8043
  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))) {
7834
- _context34.next = 3;
8044
+ _context36.next = 3;
7835
8045
  break;
7836
8046
  }
7837
- return _context34.abrupt("return");
8047
+ return _context36.abrupt("return");
7838
8048
  case 3:
8049
+ if (!((streams === null || streams === void 0 ? void 0 : (_streams$microphone = streams.microphone) === null || _streams$microphone === void 0 ? void 0 : _streams$microphone.readyState) === 'ended' || (streams === null || streams === void 0 ? void 0 : (_streams$camera = streams.camera) === null || _streams$camera === void 0 ? void 0 : _streams$camera.readyState) === 'ended' || (streams === null || streams === void 0 ? void 0 : (_streams$screenShare3 = streams.screenShare) === null || _streams$screenShare3 === void 0 ? void 0 : (_streams$screenShare4 = _streams$screenShare3.audio) === null || _streams$screenShare4 === void 0 ? void 0 : _streams$screenShare4.readyState) === 'ended' || (streams === null || streams === void 0 ? void 0 : (_streams$screenShare5 = streams.screenShare) === null || _streams$screenShare5 === void 0 ? void 0 : (_streams$screenShare6 = _streams$screenShare5.video) === null || _streams$screenShare6 === void 0 ? void 0 : _streams$screenShare6.readyState) === 'ended')) {
8050
+ _context36.next = 5;
8051
+ break;
8052
+ }
8053
+ throw new Error("Attempted to publish stream with ended readyState, correlationId=".concat(this.correlationId));
8054
+ case 5:
7839
8055
  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
7840
- if (!(this.isMultistream && (_streams$screenShare3 = streams.screenShare) !== null && _streams$screenShare3 !== void 0 && _streams$screenShare3.audio)) {
7841
- _context34.next = 8;
8056
+ if (!(this.isMultistream && (_streams$screenShare7 = streams.screenShare) !== null && _streams$screenShare7 !== void 0 && _streams$screenShare7.audio)) {
8057
+ _context36.next = 10;
7842
8058
  break;
7843
8059
  }
7844
- _context34.next = 7;
8060
+ _context36.next = 9;
7845
8061
  return this.setLocalShareAudioStream(streams.screenShare.audio);
7846
- case 7:
8062
+ case 9:
7847
8063
  floorRequestNeeded = this.screenShareFloorState === ScreenShareFloorStatus.RELEASED;
7848
- case 8:
7849
- if (!((_streams$screenShare4 = streams.screenShare) !== null && _streams$screenShare4 !== void 0 && _streams$screenShare4.video)) {
7850
- _context34.next = 12;
8064
+ case 10:
8065
+ if (!((_streams$screenShare8 = streams.screenShare) !== null && _streams$screenShare8 !== void 0 && _streams$screenShare8.video)) {
8066
+ _context36.next = 14;
7851
8067
  break;
7852
8068
  }
7853
- _context34.next = 11;
7854
- return this.setLocalShareVideoStream((_streams$screenShare5 = streams.screenShare) === null || _streams$screenShare5 === void 0 ? void 0 : _streams$screenShare5.video);
7855
- case 11:
8069
+ _context36.next = 13;
8070
+ return this.setLocalShareVideoStream((_streams$screenShare9 = streams.screenShare) === null || _streams$screenShare9 === void 0 ? void 0 : _streams$screenShare9.video);
8071
+ case 13:
7856
8072
  floorRequestNeeded = this.screenShareFloorState === ScreenShareFloorStatus.RELEASED;
7857
- case 12:
8073
+ case 14:
7858
8074
  if (!streams.microphone) {
7859
- _context34.next = 15;
8075
+ _context36.next = 17;
7860
8076
  break;
7861
8077
  }
7862
- _context34.next = 15;
8078
+ _context36.next = 17;
7863
8079
  return this.setLocalAudioStream(streams.microphone);
7864
- case 15:
8080
+ case 17:
7865
8081
  if (!streams.camera) {
7866
- _context34.next = 18;
8082
+ _context36.next = 20;
7867
8083
  break;
7868
8084
  }
7869
- _context34.next = 18;
8085
+ _context36.next = 20;
7870
8086
  return this.setLocalVideoStream(streams.camera);
7871
- case 18:
8087
+ case 20:
7872
8088
  if (this.isMultistream) {
7873
- _context34.next = 21;
8089
+ _context36.next = 23;
7874
8090
  break;
7875
8091
  }
7876
- _context34.next = 21;
8092
+ _context36.next = 23;
7877
8093
  return this.updateTranscodedMediaConnection();
7878
- case 21:
8094
+ case 23:
7879
8095
  if (!floorRequestNeeded) {
7880
- _context34.next = 27;
8096
+ _context36.next = 29;
7881
8097
  break;
7882
8098
  }
7883
8099
  this.localShareInstanceId = _uuid.default.v4();
@@ -7901,15 +8117,15 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7901
8117
  // we're sending the http request to Locus to request the screen share floor
7902
8118
  // only after the SDP update, because that's how it's always been done for transcoded meetings
7903
8119
  // and also if sharing from the start, we need confluence to have been created
7904
- _context34.next = 27;
8120
+ _context36.next = 29;
7905
8121
  return this.enqueueScreenShareFloorRequest();
7906
- case 27:
8122
+ case 29:
7907
8123
  case "end":
7908
- return _context34.stop();
8124
+ return _context36.stop();
7909
8125
  }
7910
- }, _callee34, this);
8126
+ }, _callee36, this);
7911
8127
  }));
7912
- function publishStreams(_x35) {
8128
+ function publishStreams(_x38) {
7913
8129
  return _publishStreams.apply(this, arguments);
7914
8130
  }
7915
8131
  return publishStreams;
@@ -7924,10 +8140,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7924
8140
  }, {
7925
8141
  key: "unpublishStreams",
7926
8142
  value: (function () {
7927
- var _unpublishStreams = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee35(streams) {
8143
+ var _unpublishStreams = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee37(streams) {
7928
8144
  var promises, _iterator, _step, stream;
7929
- return _regenerator.default.wrap(function _callee35$(_context35) {
7930
- while (1) switch (_context35.prev = _context35.next) {
8145
+ return _regenerator.default.wrap(function _callee37$(_context37) {
8146
+ while (1) switch (_context37.prev = _context37.next) {
7931
8147
  case 0:
7932
8148
  this.checkMediaConnection();
7933
8149
  promises = [];
@@ -7958,7 +8174,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7958
8174
  if (!this.isMultistream) {
7959
8175
  promises.push(this.updateTranscodedMediaConnection());
7960
8176
  }
7961
- _context35.next = 7;
8177
+ _context37.next = 7;
7962
8178
  return _promise.default.all(promises);
7963
8179
  case 7:
7964
8180
  // we're allowing for the SDK to support just audio share as well
@@ -7979,11 +8195,11 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7979
8195
  }
7980
8196
  case 8:
7981
8197
  case "end":
7982
- return _context35.stop();
8198
+ return _context37.stop();
7983
8199
  }
7984
- }, _callee35, this);
8200
+ }, _callee37, this);
7985
8201
  }));
7986
- function unpublishStreams(_x36) {
8202
+ function unpublishStreams(_x39) {
7987
8203
  return _unpublishStreams.apply(this, arguments);
7988
8204
  }
7989
8205
  return unpublishStreams;
@@ -8043,27 +8259,27 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8043
8259
  }], [{
8044
8260
  key: "handleDeviceLogging",
8045
8261
  value: (function () {
8046
- var _handleDeviceLogging = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee36() {
8262
+ var _handleDeviceLogging = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee38() {
8047
8263
  var devices;
8048
- return _regenerator.default.wrap(function _callee36$(_context36) {
8049
- while (1) switch (_context36.prev = _context36.next) {
8264
+ return _regenerator.default.wrap(function _callee38$(_context38) {
8265
+ while (1) switch (_context38.prev = _context38.next) {
8050
8266
  case 0:
8051
- _context36.prev = 0;
8052
- _context36.next = 3;
8267
+ _context38.prev = 0;
8268
+ _context38.next = 3;
8053
8269
  return (0, _mediaHelpers.getDevices)();
8054
8270
  case 3:
8055
- devices = _context36.sent;
8056
- _util.default.handleDeviceLogging(devices);
8057
- _context36.next = 9;
8271
+ devices = _context38.sent;
8272
+ _util2.default.handleDeviceLogging(devices);
8273
+ _context38.next = 9;
8058
8274
  break;
8059
8275
  case 7:
8060
- _context36.prev = 7;
8061
- _context36.t0 = _context36["catch"](0);
8276
+ _context38.prev = 7;
8277
+ _context38.t0 = _context38["catch"](0);
8062
8278
  case 9:
8063
8279
  case "end":
8064
- return _context36.stop();
8280
+ return _context38.stop();
8065
8281
  }
8066
- }, _callee36, null, [[0, 7]]);
8282
+ }, _callee38, null, [[0, 7]]);
8067
8283
  }));
8068
8284
  function handleDeviceLogging() {
8069
8285
  return _handleDeviceLogging.apply(this, arguments);