@webex/plugin-meetings 3.11.0-webex-services-ready.1 → 3.12.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 (166) hide show
  1. package/dist/aiEnableRequest/index.js +184 -0
  2. package/dist/aiEnableRequest/index.js.map +1 -0
  3. package/dist/aiEnableRequest/utils.js +36 -0
  4. package/dist/aiEnableRequest/utils.js.map +1 -0
  5. package/dist/annotation/index.js +14 -5
  6. package/dist/annotation/index.js.map +1 -1
  7. package/dist/breakouts/breakout.js +1 -1
  8. package/dist/breakouts/index.js +1 -1
  9. package/dist/config.js +5 -1
  10. package/dist/config.js.map +1 -1
  11. package/dist/constants.js +28 -6
  12. package/dist/constants.js.map +1 -1
  13. package/dist/hashTree/constants.js +3 -1
  14. package/dist/hashTree/constants.js.map +1 -1
  15. package/dist/hashTree/hashTree.js +18 -0
  16. package/dist/hashTree/hashTree.js.map +1 -1
  17. package/dist/hashTree/hashTreeParser.js +709 -380
  18. package/dist/hashTree/hashTreeParser.js.map +1 -1
  19. package/dist/hashTree/types.js +4 -2
  20. package/dist/hashTree/types.js.map +1 -1
  21. package/dist/hashTree/utils.js +10 -0
  22. package/dist/hashTree/utils.js.map +1 -1
  23. package/dist/index.js +11 -2
  24. package/dist/index.js.map +1 -1
  25. package/dist/interceptors/constant.js +12 -0
  26. package/dist/interceptors/constant.js.map +1 -0
  27. package/dist/interceptors/dataChannelAuthToken.js +290 -0
  28. package/dist/interceptors/dataChannelAuthToken.js.map +1 -0
  29. package/dist/interceptors/index.js +7 -0
  30. package/dist/interceptors/index.js.map +1 -1
  31. package/dist/interceptors/utils.js +27 -0
  32. package/dist/interceptors/utils.js.map +1 -0
  33. package/dist/interpretation/index.js +2 -2
  34. package/dist/interpretation/index.js.map +1 -1
  35. package/dist/interpretation/siLanguage.js +1 -1
  36. package/dist/locus-info/controlsUtils.js +5 -3
  37. package/dist/locus-info/controlsUtils.js.map +1 -1
  38. package/dist/locus-info/index.js +217 -79
  39. package/dist/locus-info/index.js.map +1 -1
  40. package/dist/locus-info/selfUtils.js +1 -0
  41. package/dist/locus-info/selfUtils.js.map +1 -1
  42. package/dist/locus-info/types.js.map +1 -1
  43. package/dist/media/MediaConnectionAwaiter.js +57 -1
  44. package/dist/media/MediaConnectionAwaiter.js.map +1 -1
  45. package/dist/media/properties.js +4 -2
  46. package/dist/media/properties.js.map +1 -1
  47. package/dist/meeting/in-meeting-actions.js +7 -1
  48. package/dist/meeting/in-meeting-actions.js.map +1 -1
  49. package/dist/meeting/index.js +1071 -862
  50. package/dist/meeting/index.js.map +1 -1
  51. package/dist/meeting/request.js +50 -0
  52. package/dist/meeting/request.js.map +1 -1
  53. package/dist/meeting/request.type.js.map +1 -1
  54. package/dist/meeting/util.js +133 -3
  55. package/dist/meeting/util.js.map +1 -1
  56. package/dist/meetings/index.js +100 -45
  57. package/dist/meetings/index.js.map +1 -1
  58. package/dist/member/index.js +10 -0
  59. package/dist/member/index.js.map +1 -1
  60. package/dist/member/util.js +10 -0
  61. package/dist/member/util.js.map +1 -1
  62. package/dist/metrics/constants.js +2 -1
  63. package/dist/metrics/constants.js.map +1 -1
  64. package/dist/multistream/mediaRequestManager.js +9 -60
  65. package/dist/multistream/mediaRequestManager.js.map +1 -1
  66. package/dist/multistream/remoteMediaManager.js +11 -0
  67. package/dist/multistream/remoteMediaManager.js.map +1 -1
  68. package/dist/reactions/reactions.type.js.map +1 -1
  69. package/dist/reconnection-manager/index.js +0 -1
  70. package/dist/reconnection-manager/index.js.map +1 -1
  71. package/dist/types/aiEnableRequest/index.d.ts +5 -0
  72. package/dist/types/aiEnableRequest/utils.d.ts +2 -0
  73. package/dist/types/config.d.ts +3 -0
  74. package/dist/types/constants.d.ts +23 -1
  75. package/dist/types/hashTree/constants.d.ts +1 -0
  76. package/dist/types/hashTree/hashTree.d.ts +7 -0
  77. package/dist/types/hashTree/hashTreeParser.d.ts +99 -14
  78. package/dist/types/hashTree/types.d.ts +3 -0
  79. package/dist/types/hashTree/utils.d.ts +6 -0
  80. package/dist/types/index.d.ts +1 -0
  81. package/dist/types/interceptors/constant.d.ts +5 -0
  82. package/dist/types/interceptors/dataChannelAuthToken.d.ts +43 -0
  83. package/dist/types/interceptors/index.d.ts +2 -1
  84. package/dist/types/interceptors/utils.d.ts +1 -0
  85. package/dist/types/locus-info/index.d.ts +21 -2
  86. package/dist/types/locus-info/types.d.ts +1 -0
  87. package/dist/types/media/MediaConnectionAwaiter.d.ts +10 -1
  88. package/dist/types/media/properties.d.ts +2 -1
  89. package/dist/types/meeting/in-meeting-actions.d.ts +6 -0
  90. package/dist/types/meeting/index.d.ts +38 -6
  91. package/dist/types/meeting/request.d.ts +16 -1
  92. package/dist/types/meeting/request.type.d.ts +5 -0
  93. package/dist/types/meeting/util.d.ts +31 -0
  94. package/dist/types/meetings/index.d.ts +4 -2
  95. package/dist/types/member/index.d.ts +1 -0
  96. package/dist/types/member/util.d.ts +5 -0
  97. package/dist/types/metrics/constants.d.ts +1 -0
  98. package/dist/types/multistream/mediaRequestManager.d.ts +0 -23
  99. package/dist/types/reactions/reactions.type.d.ts +1 -0
  100. package/dist/types/webinar/utils.d.ts +6 -0
  101. package/dist/webinar/index.js +260 -90
  102. package/dist/webinar/index.js.map +1 -1
  103. package/dist/webinar/utils.js +25 -0
  104. package/dist/webinar/utils.js.map +1 -0
  105. package/package.json +24 -23
  106. package/src/aiEnableRequest/README.md +84 -0
  107. package/src/aiEnableRequest/index.ts +170 -0
  108. package/src/aiEnableRequest/utils.ts +25 -0
  109. package/src/annotation/index.ts +27 -7
  110. package/src/config.ts +3 -0
  111. package/src/constants.ts +29 -1
  112. package/src/hashTree/constants.ts +1 -0
  113. package/src/hashTree/hashTree.ts +17 -0
  114. package/src/hashTree/hashTreeParser.ts +627 -249
  115. package/src/hashTree/types.ts +4 -0
  116. package/src/hashTree/utils.ts +9 -0
  117. package/src/index.ts +8 -1
  118. package/src/interceptors/constant.ts +6 -0
  119. package/src/interceptors/dataChannelAuthToken.ts +170 -0
  120. package/src/interceptors/index.ts +2 -1
  121. package/src/interceptors/utils.ts +16 -0
  122. package/src/interpretation/index.ts +2 -2
  123. package/src/locus-info/controlsUtils.ts +11 -0
  124. package/src/locus-info/index.ts +231 -61
  125. package/src/locus-info/selfUtils.ts +1 -0
  126. package/src/locus-info/types.ts +1 -0
  127. package/src/media/MediaConnectionAwaiter.ts +41 -1
  128. package/src/media/properties.ts +3 -1
  129. package/src/meeting/in-meeting-actions.ts +12 -0
  130. package/src/meeting/index.ts +188 -43
  131. package/src/meeting/request.ts +42 -0
  132. package/src/meeting/request.type.ts +6 -0
  133. package/src/meeting/util.ts +160 -2
  134. package/src/meetings/index.ts +135 -41
  135. package/src/member/index.ts +10 -0
  136. package/src/member/util.ts +12 -0
  137. package/src/metrics/constants.ts +1 -0
  138. package/src/multistream/mediaRequestManager.ts +4 -54
  139. package/src/multistream/remoteMediaManager.ts +13 -0
  140. package/src/reactions/reactions.type.ts +1 -0
  141. package/src/reconnection-manager/index.ts +0 -1
  142. package/src/webinar/index.ts +162 -5
  143. package/src/webinar/utils.ts +16 -0
  144. package/test/unit/spec/aiEnableRequest/index.ts +981 -0
  145. package/test/unit/spec/aiEnableRequest/utils.ts +130 -0
  146. package/test/unit/spec/annotation/index.ts +69 -7
  147. package/test/unit/spec/hashTree/hashTree.ts +66 -0
  148. package/test/unit/spec/hashTree/hashTreeParser.ts +1869 -189
  149. package/test/unit/spec/interceptors/dataChannelAuthToken.ts +210 -0
  150. package/test/unit/spec/interceptors/utils.ts +75 -0
  151. package/test/unit/spec/locus-info/controlsUtils.js +29 -0
  152. package/test/unit/spec/locus-info/index.js +383 -46
  153. package/test/unit/spec/media/MediaConnectionAwaiter.ts +41 -1
  154. package/test/unit/spec/media/properties.ts +12 -3
  155. package/test/unit/spec/meeting/in-meeting-actions.ts +8 -2
  156. package/test/unit/spec/meeting/index.js +662 -85
  157. package/test/unit/spec/meeting/request.js +70 -0
  158. package/test/unit/spec/meeting/utils.js +438 -26
  159. package/test/unit/spec/meetings/index.js +652 -31
  160. package/test/unit/spec/member/index.js +28 -4
  161. package/test/unit/spec/member/util.js +65 -27
  162. package/test/unit/spec/multistream/mediaRequestManager.ts +2 -85
  163. package/test/unit/spec/multistream/remoteMediaManager.ts +30 -0
  164. package/test/unit/spec/reconnection-manager/index.js +4 -8
  165. package/test/unit/spec/webinar/index.ts +348 -36
  166. package/test/unit/spec/webinar/utils.ts +39 -0
@@ -16,7 +16,6 @@ _Object$defineProperty(exports, "__esModule", {
16
16
  value: true
17
17
  });
18
18
  exports.default = exports.ScreenShareFloorStatus = exports.MEDIA_UPDATE_TYPE = void 0;
19
- var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
20
19
  var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
21
20
  var _values = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/values"));
22
21
  var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
@@ -24,6 +23,7 @@ var _map = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/map"))
24
23
  var _isNan = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/number/is-nan"));
25
24
  var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys"));
26
25
  var _weakMap = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/weak-map"));
26
+ var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
27
27
  var _typeof2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/typeof"));
28
28
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
29
29
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
@@ -40,6 +40,7 @@ var _common = require("@webex/common");
40
40
  var _commonTimers = require("@webex/common-timers");
41
41
  var _internalPluginMetrics = require("@webex/internal-plugin-metrics");
42
42
  var _internalMediaCore = require("@webex/internal-media-core");
43
+ var _internalPluginLlm = require("@webex/internal-plugin-llm");
43
44
  var _mediaHelpers = require("@webex/media-helpers");
44
45
  var _internalPluginVoicea = require("@webex/internal-plugin-voicea");
45
46
  var _webCapabilities = require("@webex/web-capabilities");
@@ -90,6 +91,7 @@ var _joinWebinarError = _interopRequireDefault(require("../common/errors/join-we
90
91
  var _brbState = require("./brbState");
91
92
  var _multistreamNotSupportedError = _interopRequireDefault(require("../common/errors/multistream-not-supported-error"));
92
93
  var _joinForbiddenError = _interopRequireDefault(require("../common/errors/join-forbidden-error"));
94
+ var _aiEnableRequest = _interopRequireDefault(require("../aiEnableRequest"));
93
95
  function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof _Symbol && r[_Symbol$iterator] || r["@@iterator"]; if (!t) { if (_Array$isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
94
96
  function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? _Array$from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
95
97
  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
@@ -387,7 +389,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
387
389
  * @memberof Meeting
388
390
  */
389
391
  function Meeting(attrs, _options, callback) {
390
- var _attrs$callStateForMe, _attrs$callStateForMe2, _this$locusInfo, _this$locusInfo$links, _this$locusInfo$links2, _this$locusInfo$links3, _this$locusInfo2, _this$locusInfo2$full, _this$locusInfo3, _this$locusInfo4;
392
+ var _attrs$callStateForMe, _attrs$callStateForMe2, _this$locusInfo2, _this$locusInfo2$link, _this$locusInfo2$link2, _this$locusInfo2$link3, _this$locusInfo3, _this$locusInfo3$full, _this$locusInfo4, _this$locusInfo5;
391
393
  var _this;
392
394
  (0, _classCallCheck2.default)(this, Meeting);
393
395
  _this = _callSuper(this, Meeting, [{}, _options]);
@@ -403,6 +405,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
403
405
  (0, _defineProperty3.default)(_this, "breakouts", void 0);
404
406
  (0, _defineProperty3.default)(_this, "simultaneousInterpretation", void 0);
405
407
  (0, _defineProperty3.default)(_this, "annotation", void 0);
408
+ (0, _defineProperty3.default)(_this, "aiEnableRequest", void 0);
406
409
  (0, _defineProperty3.default)(_this, "webinar", void 0);
407
410
  (0, _defineProperty3.default)(_this, "conversationUrl", void 0);
408
411
  (0, _defineProperty3.default)(_this, "callStateForMetrics", void 0);
@@ -452,6 +455,13 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
452
455
  (0, _defineProperty3.default)(_this, "keepAliveTimerId", void 0);
453
456
  (0, _defineProperty3.default)(_this, "lastVideoLayoutInfo", void 0);
454
457
  (0, _defineProperty3.default)(_this, "locusInfo", void 0);
458
+ // this group of properties is populated via updateMeetingObject() that's registered as a callback with LocusInfo
459
+ (0, _defineProperty3.default)(_this, "isUserUnadmitted", void 0);
460
+ (0, _defineProperty3.default)(_this, "joinedWith", void 0);
461
+ (0, _defineProperty3.default)(_this, "selfId", void 0);
462
+ (0, _defineProperty3.default)(_this, "roles", void 0);
463
+ // ... there is more ... see SelfUtils.parse()
464
+ // end of the group
455
465
  (0, _defineProperty3.default)(_this, "locusMediaRequest", void 0);
456
466
  (0, _defineProperty3.default)(_this, "mediaProperties", void 0);
457
467
  (0, _defineProperty3.default)(_this, "mediaRequestManagers", void 0);
@@ -480,7 +490,6 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
480
490
  (0, _defineProperty3.default)(_this, "endCallInitJoinReq", void 0);
481
491
  (0, _defineProperty3.default)(_this, "endJoinReqResp", void 0);
482
492
  (0, _defineProperty3.default)(_this, "endLocalSDPGenRemoteSDPRecvDelay", void 0);
483
- (0, _defineProperty3.default)(_this, "joinedWith", void 0);
484
493
  (0, _defineProperty3.default)(_this, "locusId", void 0);
485
494
  (0, _defineProperty3.default)(_this, "startCallInitJoinReq", void 0);
486
495
  (0, _defineProperty3.default)(_this, "startJoinReqResp", void 0);
@@ -495,12 +504,11 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
495
504
  (0, _defineProperty3.default)(_this, "permissionTokenReceivedLocalTime", void 0);
496
505
  (0, _defineProperty3.default)(_this, "resourceId", void 0);
497
506
  (0, _defineProperty3.default)(_this, "resourceUrl", void 0);
498
- (0, _defineProperty3.default)(_this, "selfId", void 0);
499
507
  (0, _defineProperty3.default)(_this, "state", void 0);
500
508
  (0, _defineProperty3.default)(_this, "localAudioStreamMuteStateHandler", void 0);
501
509
  (0, _defineProperty3.default)(_this, "localVideoStreamMuteStateHandler", void 0);
502
510
  (0, _defineProperty3.default)(_this, "localOutputTrackChangeHandler", void 0);
503
- (0, _defineProperty3.default)(_this, "roles", void 0);
511
+ (0, _defineProperty3.default)(_this, "localConstraintsChangeHandler", void 0);
504
512
  (0, _defineProperty3.default)(_this, "environment", void 0);
505
513
  (0, _defineProperty3.default)(_this, "namespace", _constants.MEETINGS);
506
514
  (0, _defineProperty3.default)(_this, "allowMediaInLobby", void 0);
@@ -587,13 +595,14 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
587
595
  if (
588
596
  // @ts-ignore - config coming from registerPlugin
589
597
  (_this.config.receiveReactions || options.receiveReactions) && _this.isReactionsSupported()) {
598
+ var _this$locusInfo, _this$locusInfo$info;
590
599
  var member = _this.members.membersCollection.get(e.data.sender.participantId);
591
- if (!member) {
600
+ if (!member && !((_this$locusInfo = _this.locusInfo) !== null && _this$locusInfo !== void 0 && (_this$locusInfo$info = _this$locusInfo.info) !== null && _this$locusInfo$info !== void 0 && _this$locusInfo$info.isWebinar)) {
592
601
  // @ts-ignore -- fix type
593
602
  _loggerProxy.default.logger.warn("Meeting:index#processRelayEvent --> Skipping handling of ".concat(_constants3.REACTION_RELAY_TYPES.REACTION, " for ").concat(_this.id, ". participantId ").concat(e.data.sender.participantId, " does not exist in membersCollection."));
594
603
  break;
595
604
  }
596
- var name = member.name;
605
+ var name = member && member.name || e.data.sender.displayName;
597
606
  var processedReaction = {
598
607
  reaction: e.data.reaction,
599
608
  sender: {
@@ -626,6 +635,61 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
626
635
  function: 'handleLLMOnline'
627
636
  }, _constants.EVENT_TRIGGERS.MEETING_TRANSCRIPTION_CONNECTED, undefined);
628
637
  });
638
+ /**
639
+ * Disconnects and cleans up the default LLM session listeners/timers.
640
+ * @param {Object} options
641
+ * @param {boolean} [options.removeOnlineListener=true] removes the one-time online listener
642
+ * @param {boolean} [options.throwOnError=true] rethrows disconnect errors when true
643
+ * @returns {Promise<void>}
644
+ */
645
+ (0, _defineProperty3.default)(_this, "cleanupLLMConneciton", /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee() {
646
+ var _ref3,
647
+ _ref3$removeOnlineLis,
648
+ removeOnlineListener,
649
+ _ref3$throwOnError,
650
+ throwOnError,
651
+ _args = arguments,
652
+ _t;
653
+ return _regenerator.default.wrap(function (_context) {
654
+ while (1) switch (_context.prev = _context.next) {
655
+ case 0:
656
+ _ref3 = _args.length > 0 && _args[0] !== undefined ? _args[0] : {}, _ref3$removeOnlineLis = _ref3.removeOnlineListener, removeOnlineListener = _ref3$removeOnlineLis === void 0 ? true : _ref3$removeOnlineLis, _ref3$throwOnError = _ref3.throwOnError, throwOnError = _ref3$throwOnError === void 0 ? true : _ref3$throwOnError;
657
+ _context.prev = 1;
658
+ _context.next = 2;
659
+ return _this.webex.internal.llm.disconnectLLM({
660
+ code: 3050,
661
+ reason: 'done (permanent)'
662
+ });
663
+ case 2:
664
+ _context.next = 4;
665
+ break;
666
+ case 3:
667
+ _context.prev = 3;
668
+ _t = _context["catch"](1);
669
+ _loggerProxy.default.logger.error('Meeting:index#cleanupLLMConneciton --> Failed to disconnect default LLM session', _t);
670
+ if (!throwOnError) {
671
+ _context.next = 4;
672
+ break;
673
+ }
674
+ throw _t;
675
+ case 4:
676
+ _context.prev = 4;
677
+ if (removeOnlineListener) {
678
+ // @ts-ignore - Fix type
679
+ _this.webex.internal.llm.off('online', _this.handleLLMOnline);
680
+ }
681
+ // @ts-ignore - fix types
682
+ _this.webex.internal.llm.off('event:relay.event', _this.processRelayEvent);
683
+ // @ts-ignore - Fix type
684
+ _this.webex.internal.llm.off(_constants.LOCUS_LLM_EVENT, _this.processLocusLLMEvent);
685
+ _this.clearLLMHealthCheckTimer();
686
+ return _context.finish(4);
687
+ case 5:
688
+ case "end":
689
+ return _context.stop();
690
+ }
691
+ }, _callee, null, [[1, 3, 4, 5]]);
692
+ })));
629
693
  /**
630
694
  * Handles ROAP_FAILURE event from the webrtc media connection
631
695
  *
@@ -811,8 +875,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
811
875
  seq: event.roapMessage.seq,
812
876
  tieBreaker: event.roapMessage.tieBreaker,
813
877
  meeting: _this // or can pass meeting ID
814
- }).then(function (_ref2) {
815
- var roapAnswer = _ref2.roapAnswer;
878
+ }).then(function (_ref4) {
879
+ var roapAnswer = _ref4.roapAnswer;
816
880
  if (roapAnswer) {
817
881
  _loggerProxy.default.logger.log("".concat(LOG_HEADER, " received Roap ANSWER in http response"));
818
882
  _this.roapMessageReceived(roapAnswer);
@@ -1215,32 +1279,32 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
1215
1279
  * @returns {Promise<void>}
1216
1280
  */
1217
1281
  (0, _defineProperty3.default)(_this, "forceSendStatsReport", /*#__PURE__*/function () {
1218
- var _ref4 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee(_ref3) {
1219
- var callFrom, LOG_HEADER, _this$mediaProperties, _this$mediaProperties2, _t;
1220
- return _regenerator.default.wrap(function (_context) {
1221
- while (1) switch (_context.prev = _context.next) {
1282
+ var _ref6 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee2(_ref5) {
1283
+ var callFrom, LOG_HEADER, _this$mediaProperties, _this$mediaProperties2, _t2;
1284
+ return _regenerator.default.wrap(function (_context2) {
1285
+ while (1) switch (_context2.prev = _context2.next) {
1222
1286
  case 0:
1223
- callFrom = _ref3.callFrom;
1287
+ callFrom = _ref5.callFrom;
1224
1288
  LOG_HEADER = "Meeting:index#forceSendStatsReport --> called from ".concat(callFrom, " : ");
1225
- _context.prev = 1;
1226
- _context.next = 2;
1289
+ _context2.prev = 1;
1290
+ _context2.next = 2;
1227
1291
  return (_this$mediaProperties = _this.mediaProperties) === null || _this$mediaProperties === void 0 ? void 0 : (_this$mediaProperties2 = _this$mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties2 === void 0 ? void 0 : _this$mediaProperties2.forceRtcMetricsSend();
1228
1292
  case 2:
1229
1293
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " successfully uploaded available webrtc telemetry statistics"));
1230
- _context.next = 4;
1294
+ _context2.next = 4;
1231
1295
  break;
1232
1296
  case 3:
1233
- _context.prev = 3;
1234
- _t = _context["catch"](1);
1235
- _loggerProxy.default.logger.error("".concat(LOG_HEADER, " failed to upload webrtc telemetry statistics: "), _t);
1297
+ _context2.prev = 3;
1298
+ _t2 = _context2["catch"](1);
1299
+ _loggerProxy.default.logger.error("".concat(LOG_HEADER, " failed to upload webrtc telemetry statistics: "), _t2);
1236
1300
  case 4:
1237
1301
  case "end":
1238
- return _context.stop();
1302
+ return _context2.stop();
1239
1303
  }
1240
- }, _callee, null, [[1, 3]]);
1304
+ }, _callee2, null, [[1, 3]]);
1241
1305
  }));
1242
1306
  return function (_x) {
1243
- return _ref4.apply(this, arguments);
1307
+ return _ref6.apply(this, arguments);
1244
1308
  };
1245
1309
  }());
1246
1310
  /**
@@ -1300,40 +1364,40 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
1300
1364
  * @memberof Meeting
1301
1365
  * @returns {undefined}
1302
1366
  */
1303
- (0, _defineProperty3.default)(_this, "handleShareAudioStreamEnded", /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee2() {
1304
- var _t2;
1305
- return _regenerator.default.wrap(function (_context2) {
1306
- while (1) switch (_context2.prev = _context2.next) {
1367
+ (0, _defineProperty3.default)(_this, "handleShareAudioStreamEnded", /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee3() {
1368
+ var _t3;
1369
+ return _regenerator.default.wrap(function (_context3) {
1370
+ while (1) switch (_context3.prev = _context3.next) {
1307
1371
  case 0:
1308
1372
  _loggerProxy.default.logger.info("Meeting:index#handleShareAudioStreamEnded --> audio share stream ended");
1309
1373
  // current share audio stream has ended, but there might be an active
1310
1374
  // share video stream. we only leave from wireless share if share has
1311
1375
  // completely ended, which means no share audio or video streams active
1312
1376
  if (!(_this.wirelessShare && !_this.mediaProperties.shareVideoStream)) {
1313
- _context2.next = 1;
1377
+ _context3.next = 1;
1314
1378
  break;
1315
1379
  }
1316
1380
  _this.leave({
1317
1381
  reason: _constants.MEETING_REMOVED_REASON.USER_ENDED_SHARE_STREAMS
1318
1382
  });
1319
- _context2.next = 4;
1383
+ _context3.next = 4;
1320
1384
  break;
1321
1385
  case 1:
1322
- _context2.prev = 1;
1323
- _context2.next = 2;
1386
+ _context3.prev = 1;
1387
+ _context3.next = 2;
1324
1388
  return _this.unpublishStreams([_this.mediaProperties.shareAudioStream]);
1325
1389
  case 2:
1326
- _context2.next = 4;
1390
+ _context3.next = 4;
1327
1391
  break;
1328
1392
  case 3:
1329
- _context2.prev = 3;
1330
- _t2 = _context2["catch"](1);
1331
- _loggerProxy.default.logger.log('Meeting:index#handleShareAudioStreamEnded --> Error stopping share: ', _t2);
1393
+ _context3.prev = 3;
1394
+ _t3 = _context3["catch"](1);
1395
+ _loggerProxy.default.logger.log('Meeting:index#handleShareAudioStreamEnded --> Error stopping share: ', _t3);
1332
1396
  case 4:
1333
1397
  case "end":
1334
- return _context2.stop();
1398
+ return _context3.stop();
1335
1399
  }
1336
- }, _callee2, null, [[1, 3]]);
1400
+ }, _callee3, null, [[1, 3]]);
1337
1401
  })));
1338
1402
  /**
1339
1403
  * Functionality for when a share video is muted or unmuted.
@@ -1365,42 +1429,42 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
1365
1429
  * @memberof Meeting
1366
1430
  * @returns {undefined}
1367
1431
  */
1368
- (0, _defineProperty3.default)(_this, "handleShareVideoStreamEnded", /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee3() {
1369
- var _t3;
1370
- return _regenerator.default.wrap(function (_context3) {
1371
- while (1) switch (_context3.prev = _context3.next) {
1432
+ (0, _defineProperty3.default)(_this, "handleShareVideoStreamEnded", /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee4() {
1433
+ var _t4;
1434
+ return _regenerator.default.wrap(function (_context4) {
1435
+ while (1) switch (_context4.prev = _context4.next) {
1372
1436
  case 0:
1373
1437
  _loggerProxy.default.logger.info("Meeting:index#handleShareVideoStreamEnded --> video share stream ended");
1374
1438
  // current share video stream has ended, but there might be an active
1375
1439
  // share audio stream. we only leave from wireless share if share has
1376
1440
  // completely ended, which means no share audio or video streams active
1377
1441
  if (!(_this.wirelessShare && !_this.mediaProperties.shareAudioStream)) {
1378
- _context3.next = 1;
1442
+ _context4.next = 1;
1379
1443
  break;
1380
1444
  }
1381
1445
  _this.leave({
1382
1446
  reason: _constants.MEETING_REMOVED_REASON.USER_ENDED_SHARE_STREAMS
1383
1447
  });
1384
- _context3.next = 4;
1448
+ _context4.next = 4;
1385
1449
  break;
1386
1450
  case 1:
1387
- _context3.prev = 1;
1388
- _context3.next = 2;
1451
+ _context4.prev = 1;
1452
+ _context4.next = 2;
1389
1453
  return _this.unpublishStreams([_this.mediaProperties.shareVideoStream]);
1390
1454
  case 2:
1391
- _context3.next = 4;
1455
+ _context4.next = 4;
1392
1456
  break;
1393
1457
  case 3:
1394
- _context3.prev = 3;
1395
- _t3 = _context3["catch"](1);
1396
- _loggerProxy.default.logger.log('Meeting:index#handleShareVideoStreamEnded --> Error stopping share: ', _t3);
1458
+ _context4.prev = 3;
1459
+ _t4 = _context4["catch"](1);
1460
+ _loggerProxy.default.logger.log('Meeting:index#handleShareVideoStreamEnded --> Error stopping share: ', _t4);
1397
1461
  case 4:
1398
1462
  _this.triggerStoppedSharing();
1399
1463
  case 5:
1400
1464
  case "end":
1401
- return _context3.stop();
1465
+ return _context4.stop();
1402
1466
  }
1403
- }, _callee3, null, [[1, 3]]);
1467
+ }, _callee4, null, [[1, 3]]);
1404
1468
  })));
1405
1469
  /**
1406
1470
  * Emits meeting:stoppedSharingLocal
@@ -1424,26 +1488,32 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
1424
1488
  * @public
1425
1489
  * @memberof Meeting
1426
1490
  */
1427
- (0, _defineProperty3.default)(_this, "clearMeetingData", function () {
1428
- _this.audio = null;
1429
- _this.video = null;
1430
- _this.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
1431
- if (_this.shareStatus === _constants.SHARE_STATUS.LOCAL_SHARE_ACTIVE) {
1432
- _this.shareStatus = _constants.SHARE_STATUS.NO_SHARE;
1433
- }
1434
- _this.queuedMediaUpdates = [];
1435
- if (_this.transcription) {
1436
- _this.stopTranscription();
1437
- _this.transcription = undefined;
1438
- }
1439
- _this.annotation.deregisterEvents();
1440
-
1441
- // @ts-ignore - fix types
1442
- _this.webex.internal.llm.off('event:relay.event', _this.processRelayEvent);
1443
- // @ts-ignore - Fix type
1444
- _this.webex.internal.llm.off(_constants.LOCUS_LLM_EVENT, _this.processLocusLLMEvent);
1445
- _this.clearLLMHealthCheckTimer();
1446
- });
1491
+ (0, _defineProperty3.default)(_this, "clearMeetingData", /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee5() {
1492
+ return _regenerator.default.wrap(function (_context5) {
1493
+ while (1) switch (_context5.prev = _context5.next) {
1494
+ case 0:
1495
+ _this.audio = null;
1496
+ _this.video = null;
1497
+ _this.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
1498
+ if (_this.shareStatus === _constants.SHARE_STATUS.LOCAL_SHARE_ACTIVE) {
1499
+ _this.shareStatus = _constants.SHARE_STATUS.NO_SHARE;
1500
+ }
1501
+ _this.queuedMediaUpdates = [];
1502
+ if (_this.transcription) {
1503
+ _this.stopTranscription();
1504
+ _this.transcription = undefined;
1505
+ }
1506
+ _this.annotation.deregisterEvents();
1507
+ _context5.next = 1;
1508
+ return _this.cleanupLLMConneciton({
1509
+ throwOnError: false
1510
+ });
1511
+ case 1:
1512
+ case "end":
1513
+ return _context5.stop();
1514
+ }
1515
+ }, _callee5);
1516
+ })));
1447
1517
  /**
1448
1518
  * starts keepAlives being sent
1449
1519
  * @returns {void}
@@ -1606,6 +1676,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
1606
1676
  _this.simultaneousInterpretation = new _interpretation.default({}, {
1607
1677
  parent: _this.webex
1608
1678
  });
1679
+
1680
+ // @ts-ignore
1681
+ _this.aiEnableRequest = new _aiEnableRequest.default({}, {
1682
+ parent: _this.webex
1683
+ });
1684
+
1609
1685
  /**
1610
1686
  * @instance
1611
1687
  * @type {Annotation}
@@ -2185,9 +2261,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2185
2261
  * @memberof Meeting
2186
2262
  */
2187
2263
  _this.recordingController = new _recordingController.default(_this.meetingRequest, {
2188
- serviceUrl: (_this$locusInfo = _this.locusInfo) === null || _this$locusInfo === void 0 ? void 0 : (_this$locusInfo$links = _this$locusInfo.links) === null || _this$locusInfo$links === void 0 ? void 0 : (_this$locusInfo$links2 = _this$locusInfo$links.services) === null || _this$locusInfo$links2 === void 0 ? void 0 : (_this$locusInfo$links3 = _this$locusInfo$links2.record) === null || _this$locusInfo$links3 === void 0 ? void 0 : _this$locusInfo$links3.url,
2189
- sessionId: (_this$locusInfo2 = _this.locusInfo) === null || _this$locusInfo2 === void 0 ? void 0 : (_this$locusInfo2$full = _this$locusInfo2.fullState) === null || _this$locusInfo2$full === void 0 ? void 0 : _this$locusInfo2$full.sessionId,
2190
- locusUrl: (_this$locusInfo3 = _this.locusInfo) === null || _this$locusInfo3 === void 0 ? void 0 : _this$locusInfo3.url,
2264
+ serviceUrl: (_this$locusInfo2 = _this.locusInfo) === null || _this$locusInfo2 === void 0 ? void 0 : (_this$locusInfo2$link = _this$locusInfo2.links) === null || _this$locusInfo2$link === void 0 ? void 0 : (_this$locusInfo2$link2 = _this$locusInfo2$link.services) === null || _this$locusInfo2$link2 === void 0 ? void 0 : (_this$locusInfo2$link3 = _this$locusInfo2$link2.record) === null || _this$locusInfo2$link3 === void 0 ? void 0 : _this$locusInfo2$link3.url,
2265
+ sessionId: (_this$locusInfo3 = _this.locusInfo) === null || _this$locusInfo3 === void 0 ? void 0 : (_this$locusInfo3$full = _this$locusInfo3.fullState) === null || _this$locusInfo3$full === void 0 ? void 0 : _this$locusInfo3$full.sessionId,
2266
+ locusUrl: (_this$locusInfo4 = _this.locusInfo) === null || _this$locusInfo4 === void 0 ? void 0 : _this$locusInfo4.url,
2191
2267
  displayHints: []
2192
2268
  });
2193
2269
 
@@ -2199,7 +2275,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2199
2275
  * @memberof Meeting
2200
2276
  */
2201
2277
  _this.controlsOptionsManager = new _controlsOptionsManager.default(_this.meetingRequest, {
2202
- locusUrl: (_this$locusInfo4 = _this.locusInfo) === null || _this$locusInfo4 === void 0 ? void 0 : _this$locusInfo4.url,
2278
+ locusUrl: (_this$locusInfo5 = _this.locusInfo) === null || _this$locusInfo5 === void 0 ? void 0 : _this$locusInfo5.url,
2203
2279
  displayHints: []
2204
2280
  });
2205
2281
  _this.setUpLocusInfoListeners();
@@ -2228,6 +2304,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2228
2304
  _this.updateTranscodedMediaConnection();
2229
2305
  }
2230
2306
  };
2307
+ _this.localConstraintsChangeHandler = function () {
2308
+ if (!_this.isMultistream) {
2309
+ var _this$mediaProperties6;
2310
+ (_this$mediaProperties6 = _this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties6 === void 0 ? void 0 : _this$mediaProperties6.updatePreferredBitrateKbps();
2311
+ }
2312
+ };
2231
2313
 
2232
2314
  /**
2233
2315
  * Promise that exists if SDP offer has been generated, and resolves once sdp answer is received.
@@ -2564,20 +2646,20 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2564
2646
  }, {
2565
2647
  key: "injectMeetingInfo",
2566
2648
  value: (function () {
2567
- var _injectMeetingInfo = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee4(meetingInfo, fetchParams, meetingLookupUrl) {
2568
- return _regenerator.default.wrap(function (_context4) {
2569
- while (1) switch (_context4.prev = _context4.next) {
2649
+ var _injectMeetingInfo = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee6(meetingInfo, fetchParams, meetingLookupUrl) {
2650
+ return _regenerator.default.wrap(function (_context6) {
2651
+ while (1) switch (_context6.prev = _context6.next) {
2570
2652
  case 0:
2571
- _context4.next = 1;
2653
+ _context6.next = 1;
2572
2654
  return this.prepForFetchMeetingInfo(fetchParams, 'injectMeetingInfo');
2573
2655
  case 1:
2574
2656
  this.parseMeetingInfo(meetingInfo, this.destination);
2575
2657
  this.setMeetingInfo(meetingInfo, meetingLookupUrl);
2576
2658
  case 2:
2577
2659
  case "end":
2578
- return _context4.stop();
2660
+ return _context6.stop();
2579
2661
  }
2580
- }, _callee4, this);
2662
+ }, _callee6, this);
2581
2663
  }));
2582
2664
  function injectMeetingInfo(_x2, _x3, _x4) {
2583
2665
  return _injectMeetingInfo.apply(this, arguments);
@@ -2596,15 +2678,15 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2596
2678
  )
2597
2679
  }, {
2598
2680
  key: "prepForFetchMeetingInfo",
2599
- value: function prepForFetchMeetingInfo(_ref7, caller) {
2600
- var _ref7$password = _ref7.password,
2601
- password = _ref7$password === void 0 ? null : _ref7$password,
2602
- _ref7$registrationId = _ref7.registrationId,
2603
- registrationId = _ref7$registrationId === void 0 ? null : _ref7$registrationId,
2604
- _ref7$captchaCode = _ref7.captchaCode,
2605
- captchaCode = _ref7$captchaCode === void 0 ? null : _ref7$captchaCode,
2606
- _ref7$extraParams = _ref7.extraParams,
2607
- extraParams = _ref7$extraParams === void 0 ? {} : _ref7$extraParams;
2681
+ value: function prepForFetchMeetingInfo(_ref0, caller) {
2682
+ var _ref0$password = _ref0.password,
2683
+ password = _ref0$password === void 0 ? null : _ref0$password,
2684
+ _ref0$registrationId = _ref0.registrationId,
2685
+ registrationId = _ref0$registrationId === void 0 ? null : _ref0$registrationId,
2686
+ _ref0$captchaCode = _ref0.captchaCode,
2687
+ captchaCode = _ref0$captchaCode === void 0 ? null : _ref0$captchaCode,
2688
+ _ref0$extraParams = _ref0.extraParams,
2689
+ extraParams = _ref0$extraParams === void 0 ? {} : _ref0$extraParams;
2608
2690
  // when fetch meeting info is called directly by the client, we want to clear out the random timer for sdk to do it
2609
2691
  if (this.fetchMeetingInfoTimeoutId) {
2610
2692
  clearTimeout(this.fetchMeetingInfoTimeoutId);
@@ -2628,18 +2710,18 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2628
2710
  }, {
2629
2711
  key: "fetchMeetingInfoInternal",
2630
2712
  value: (function () {
2631
- var _fetchMeetingInfoInternal = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee5(_ref8) {
2632
- var destination, destinationType, _ref8$password, password, _ref8$captchaCode, captchaCode, _ref8$extraParams, extraParams, _ref8$sendCAevents, sendCAevents, _ref8$registrationId, registrationId, _ref8$classificationI, classificationId, captchaInfo, info, _err$body, _err$body2, _t4;
2633
- return _regenerator.default.wrap(function (_context5) {
2634
- while (1) switch (_context5.prev = _context5.next) {
2713
+ var _fetchMeetingInfoInternal = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee7(_ref1) {
2714
+ var destination, destinationType, _ref1$password, password, _ref1$captchaCode, captchaCode, _ref1$extraParams, extraParams, _ref1$sendCAevents, sendCAevents, _ref1$registrationId, registrationId, _ref1$classificationI, classificationId, captchaInfo, info, _err$body, _err$body2, _t5;
2715
+ return _regenerator.default.wrap(function (_context7) {
2716
+ while (1) switch (_context7.prev = _context7.next) {
2635
2717
  case 0:
2636
- destination = _ref8.destination, destinationType = _ref8.destinationType, _ref8$password = _ref8.password, password = _ref8$password === void 0 ? null : _ref8$password, _ref8$captchaCode = _ref8.captchaCode, captchaCode = _ref8$captchaCode === void 0 ? null : _ref8$captchaCode, _ref8$extraParams = _ref8.extraParams, extraParams = _ref8$extraParams === void 0 ? {} : _ref8$extraParams, _ref8$sendCAevents = _ref8.sendCAevents, sendCAevents = _ref8$sendCAevents === void 0 ? false : _ref8$sendCAevents, _ref8$registrationId = _ref8.registrationId, registrationId = _ref8$registrationId === void 0 ? null : _ref8$registrationId, _ref8$classificationI = _ref8.classificationId, classificationId = _ref8$classificationI === void 0 ? null : _ref8$classificationI;
2637
- _context5.prev = 1;
2718
+ destination = _ref1.destination, destinationType = _ref1.destinationType, _ref1$password = _ref1.password, password = _ref1$password === void 0 ? null : _ref1$password, _ref1$captchaCode = _ref1.captchaCode, captchaCode = _ref1$captchaCode === void 0 ? null : _ref1$captchaCode, _ref1$extraParams = _ref1.extraParams, extraParams = _ref1$extraParams === void 0 ? {} : _ref1$extraParams, _ref1$sendCAevents = _ref1.sendCAevents, sendCAevents = _ref1$sendCAevents === void 0 ? false : _ref1$sendCAevents, _ref1$registrationId = _ref1.registrationId, registrationId = _ref1$registrationId === void 0 ? null : _ref1$registrationId, _ref1$classificationI = _ref1.classificationId, classificationId = _ref1$classificationI === void 0 ? null : _ref1$classificationI;
2719
+ _context7.prev = 1;
2638
2720
  captchaInfo = captchaCode ? {
2639
2721
  code: captchaCode,
2640
2722
  id: this.requiredCaptcha.captchaId
2641
2723
  } : null;
2642
- _context5.next = 2;
2724
+ _context7.next = 2;
2643
2725
  return this.attrs.meetingInfoProvider.fetchMeetingInfo(destination, destinationType, password, captchaInfo,
2644
2726
  // @ts-ignore - config coming from registerPlugin
2645
2727
  this.config.installedOrgID, this.locusId, extraParams, {
@@ -2647,112 +2729,112 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2647
2729
  sendCAevents: sendCAevents
2648
2730
  }, registrationId, null, classificationId);
2649
2731
  case 2:
2650
- info = _context5.sent;
2732
+ info = _context7.sent;
2651
2733
  this.parseMeetingInfo(info === null || info === void 0 ? void 0 : info.body, this.destination, info === null || info === void 0 ? void 0 : info.errors);
2652
2734
  this.setMeetingInfo(info === null || info === void 0 ? void 0 : info.body, info === null || info === void 0 ? void 0 : info.url);
2653
- return _context5.abrupt("return", _promise.default.resolve());
2735
+ return _context7.abrupt("return", _promise.default.resolve());
2654
2736
  case 3:
2655
- _context5.prev = 3;
2656
- _t4 = _context5["catch"](1);
2737
+ _context7.prev = 3;
2738
+ _t5 = _context7["catch"](1);
2657
2739
  this.updateMeetingActions();
2658
- if (!(_t4 instanceof _meetingInfoV.MeetingInfoV2PolicyError)) {
2659
- _context5.next = 4;
2740
+ if (!(_t5 instanceof _meetingInfoV.MeetingInfoV2PolicyError)) {
2741
+ _context7.next = 4;
2660
2742
  break;
2661
2743
  }
2662
2744
  this.meetingInfoFailureReason = _constants.MEETING_INFO_FAILURE_REASON.POLICY;
2663
- this.meetingInfoFailureCode = _t4.wbxAppApiCode;
2664
- if (_t4.meetingInfo) {
2665
- this.meetingInfo = _t4.meetingInfo;
2745
+ this.meetingInfoFailureCode = _t5.wbxAppApiCode;
2746
+ if (_t5.meetingInfo) {
2747
+ this.meetingInfo = _t5.meetingInfo;
2666
2748
  }
2667
2749
  throw new _permission.default();
2668
2750
  case 4:
2669
- if (!(_t4 instanceof _meetingInfoV.MeetingInfoV2JoinWebinarError)) {
2670
- _context5.next = 5;
2751
+ if (!(_t5 instanceof _meetingInfoV.MeetingInfoV2JoinWebinarError)) {
2752
+ _context7.next = 5;
2671
2753
  break;
2672
2754
  }
2673
2755
  this.meetingInfoFailureReason = _constants.MEETING_INFO_FAILURE_REASON.WEBINAR_REGISTRATION;
2674
- if (_constants.WEBINAR_ERROR_WEBCAST.includes(_t4.wbxAppApiCode)) {
2756
+ if (_constants.WEBINAR_ERROR_WEBCAST.includes(_t5.wbxAppApiCode)) {
2675
2757
  this.meetingInfoFailureReason = _constants.MEETING_INFO_FAILURE_REASON.NEED_JOIN_WITH_WEBCAST;
2676
- } else if (_constants.WEBINAR_ERROR_REGISTRATION_ID.includes(_t4.wbxAppApiCode)) {
2758
+ } else if (_constants.WEBINAR_ERROR_REGISTRATION_ID.includes(_t5.wbxAppApiCode)) {
2677
2759
  this.meetingInfoFailureReason = _constants.MEETING_INFO_FAILURE_REASON.WEBINAR_NEED_REGISTRATION_ID;
2678
2760
  }
2679
- this.meetingInfoFailureCode = _t4.wbxAppApiCode;
2680
- if (_t4.meetingInfo) {
2681
- this.meetingInfo = _t4.meetingInfo;
2761
+ this.meetingInfoFailureCode = _t5.wbxAppApiCode;
2762
+ if (_t5.meetingInfo) {
2763
+ this.meetingInfo = _t5.meetingInfo;
2682
2764
  }
2683
2765
  this.requiredCaptcha = null;
2684
2766
  throw new _joinWebinarError.default();
2685
2767
  case 5:
2686
- if (!(_t4 instanceof _meetingInfoV.MeetingInfoV2JoinForbiddenError)) {
2687
- _context5.next = 6;
2768
+ if (!(_t5 instanceof _meetingInfoV.MeetingInfoV2JoinForbiddenError)) {
2769
+ _context7.next = 6;
2688
2770
  break;
2689
2771
  }
2690
2772
  this.meetingInfoFailureReason = _constants.MEETING_INFO_FAILURE_REASON.JOIN_FORBIDDEN;
2691
- this.meetingInfoFailureCode = _t4.wbxAppApiCode;
2692
- if (_t4.meetingInfo) {
2693
- this.meetingInfo = _t4.meetingInfo;
2773
+ this.meetingInfoFailureCode = _t5.wbxAppApiCode;
2774
+ if (_t5.meetingInfo) {
2775
+ this.meetingInfo = _t5.meetingInfo;
2694
2776
  }
2695
2777
 
2696
2778
  // Handle the case where user hasn't reached Join Before Host (JBH) time (error code 403003)
2697
- if (_constants.JOIN_BEFORE_HOST === _t4.wbxAppApiCode) {
2779
+ if (_constants.JOIN_BEFORE_HOST === _t5.wbxAppApiCode) {
2698
2780
  this.meetingInfoFailureReason = _constants.MEETING_INFO_FAILURE_REASON.NOT_REACH_JBH;
2699
2781
  }
2700
- throw new _joinForbiddenError.default(this.meetingInfoFailureReason, _t4);
2782
+ throw new _joinForbiddenError.default(this.meetingInfoFailureReason, _t5);
2701
2783
  case 6:
2702
- if (!(_t4 instanceof _meetingInfoV.MeetingInfoV2PasswordError)) {
2703
- _context5.next = 8;
2784
+ if (!(_t5 instanceof _meetingInfoV.MeetingInfoV2PasswordError)) {
2785
+ _context7.next = 8;
2704
2786
  break;
2705
2787
  }
2706
2788
  _loggerProxy.default.logger.info(// @ts-ignore
2707
- "Meeting:index#fetchMeetingInfo --> Info Unable to fetch meeting info for ".concat(this.destination, " - password required (code=").concat(_t4 === null || _t4 === void 0 ? void 0 : (_err$body = _t4.body) === null || _err$body === void 0 ? void 0 : _err$body.code, ")."));
2789
+ "Meeting:index#fetchMeetingInfo --> Info Unable to fetch meeting info for ".concat(this.destination, " - password required (code=").concat(_t5 === null || _t5 === void 0 ? void 0 : (_err$body = _t5.body) === null || _err$body === void 0 ? void 0 : _err$body.code, ")."));
2708
2790
 
2709
2791
  // when wbxappapi requires password it still populates partial meeting info in the response
2710
- if (_t4.meetingInfo) {
2711
- this.meetingInfo = _t4.meetingInfo;
2712
- this.meetingNumber = _t4.meetingInfo.meetingNumber;
2792
+ if (_t5.meetingInfo) {
2793
+ this.meetingInfo = _t5.meetingInfo;
2794
+ this.meetingNumber = _t5.meetingInfo.meetingNumber;
2713
2795
  }
2714
- this.meetingInfoFailureCode = _t4.wbxAppApiCode;
2796
+ this.meetingInfoFailureCode = _t5.wbxAppApiCode;
2715
2797
  this.passwordStatus = _constants.PASSWORD_STATUS.REQUIRED;
2716
2798
  this.meetingInfoFailureReason = _constants.MEETING_INFO_FAILURE_REASON.WRONG_PASSWORD;
2717
2799
  if (!this.requiredCaptcha) {
2718
- _context5.next = 7;
2800
+ _context7.next = 7;
2719
2801
  break;
2720
2802
  }
2721
- _context5.next = 7;
2803
+ _context7.next = 7;
2722
2804
  return this.refreshCaptcha();
2723
2805
  case 7:
2724
2806
  throw new _passwordError.default();
2725
2807
  case 8:
2726
- if (!(_t4 instanceof _meetingInfoV.MeetingInfoV2CaptchaError)) {
2727
- _context5.next = 9;
2808
+ if (!(_t5 instanceof _meetingInfoV.MeetingInfoV2CaptchaError)) {
2809
+ _context7.next = 9;
2728
2810
  break;
2729
2811
  }
2730
2812
  _loggerProxy.default.logger.info(// @ts-ignore
2731
- "Meeting:index#fetchMeetingInfo --> Info Unable to fetch meeting info for ".concat(this.destination, " - captcha required (code=").concat(_t4 === null || _t4 === void 0 ? void 0 : (_err$body2 = _t4.body) === null || _err$body2 === void 0 ? void 0 : _err$body2.code, ")."));
2813
+ "Meeting:index#fetchMeetingInfo --> Info Unable to fetch meeting info for ".concat(this.destination, " - captcha required (code=").concat(_t5 === null || _t5 === void 0 ? void 0 : (_err$body2 = _t5.body) === null || _err$body2 === void 0 ? void 0 : _err$body2.code, ")."));
2732
2814
  if (this.requiredCaptcha) {
2733
2815
  this.meetingInfoFailureReason = _constants.MEETING_INFO_FAILURE_REASON.WRONG_CAPTCHA;
2734
- } else if (_t4.isRegistrationIdRequired) {
2816
+ } else if (_t5.isRegistrationIdRequired) {
2735
2817
  this.meetingInfoFailureReason = _constants.MEETING_INFO_FAILURE_REASON.WRONG_REGISTRATION_ID;
2736
2818
  } else {
2737
2819
  this.meetingInfoFailureReason = _constants.MEETING_INFO_FAILURE_REASON.WRONG_PASSWORD;
2738
2820
  }
2739
- this.meetingInfoFailureCode = _t4.wbxAppApiCode;
2740
- if (_t4.isPasswordRequired) {
2821
+ this.meetingInfoFailureCode = _t5.wbxAppApiCode;
2822
+ if (_t5.isPasswordRequired) {
2741
2823
  this.passwordStatus = _constants.PASSWORD_STATUS.REQUIRED;
2742
2824
  }
2743
- if (_t4.isRegistrationIdRequired) {
2825
+ if (_t5.isRegistrationIdRequired) {
2744
2826
  this.registrationIdStatus = _constants.REGISTRATION_ID_STATUS.REQUIRED;
2745
2827
  }
2746
- this.requiredCaptcha = _t4.captchaInfo;
2828
+ this.requiredCaptcha = _t5.captchaInfo;
2747
2829
  throw new _captchaError.default();
2748
2830
  case 9:
2749
2831
  this.meetingInfoFailureReason = _constants.MEETING_INFO_FAILURE_REASON.OTHER;
2750
- throw _t4;
2832
+ throw _t5;
2751
2833
  case 10:
2752
2834
  case "end":
2753
- return _context5.stop();
2835
+ return _context7.stop();
2754
2836
  }
2755
- }, _callee5, this, [[1, 3]]);
2837
+ }, _callee7, this, [[1, 3]]);
2756
2838
  }));
2757
2839
  function fetchMeetingInfoInternal(_x5) {
2758
2840
  return _fetchMeetingInfoInternal.apply(this, arguments);
@@ -2769,18 +2851,18 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2769
2851
  }, {
2770
2852
  key: "refreshPermissionToken",
2771
2853
  value: (function () {
2772
- var _refreshPermissionToken = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee6(reason) {
2854
+ var _refreshPermissionToken = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee8(reason) {
2773
2855
  var _this$meetingInfo;
2774
- var isStartingSpaceInstantV2Meeting, destination, destinationType, permissionTokenExpiryInfo, timeLeft, expiryTime, currentTime, _t5;
2775
- return _regenerator.default.wrap(function (_context6) {
2776
- while (1) switch (_context6.prev = _context6.next) {
2856
+ var isStartingSpaceInstantV2Meeting, destination, destinationType, permissionTokenExpiryInfo, timeLeft, expiryTime, currentTime, _t6;
2857
+ return _regenerator.default.wrap(function (_context8) {
2858
+ while (1) switch (_context8.prev = _context8.next) {
2777
2859
  case 0:
2778
2860
  if ((_this$meetingInfo = this.meetingInfo) !== null && _this$meetingInfo !== void 0 && _this$meetingInfo.permissionToken) {
2779
- _context6.next = 1;
2861
+ _context8.next = 1;
2780
2862
  break;
2781
2863
  }
2782
2864
  _loggerProxy.default.logger.info("Meeting:index#refreshPermissionToken --> cannot refresh the permission token, because we don't have it (reason=".concat(reason, ")"));
2783
- return _context6.abrupt("return");
2865
+ return _context8.abrupt("return");
2784
2866
  case 1:
2785
2867
  isStartingSpaceInstantV2Meeting = this.destinationType === _constants.DESTINATION_TYPE.CONVERSATION_URL &&
2786
2868
  // @ts-ignore - config coming from registerPlugin
@@ -2802,8 +2884,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2802
2884
  reason: reason,
2803
2885
  destinationType: destinationType
2804
2886
  });
2805
- _context6.prev = 2;
2806
- _context6.next = 3;
2887
+ _context8.prev = 2;
2888
+ _context8.next = 3;
2807
2889
  return this.fetchMeetingInfoInternal({
2808
2890
  destination: destination,
2809
2891
  destinationType: destinationType,
@@ -2813,23 +2895,23 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2813
2895
  sendCAevents: true // because if we're refreshing the permissionToken, it means that user is intending to join that meeting, so we want CA events
2814
2896
  });
2815
2897
  case 3:
2816
- _context6.next = 5;
2898
+ _context8.next = 5;
2817
2899
  break;
2818
2900
  case 4:
2819
- _context6.prev = 4;
2820
- _t5 = _context6["catch"](2);
2821
- _loggerProxy.default.logger.info('Meeting:index#refreshPermissionToken --> failed to refresh the permission token:', _t5);
2901
+ _context8.prev = 4;
2902
+ _t6 = _context8["catch"](2);
2903
+ _loggerProxy.default.logger.info('Meeting:index#refreshPermissionToken --> failed to refresh the permission token:', _t6);
2822
2904
  _metrics.default.sendBehavioralMetric(_constants2.default.PERMISSION_TOKEN_REFRESH_ERROR, {
2823
2905
  correlationId: this.correlationId,
2824
- reason: _t5.message,
2825
- stack: _t5.stack
2906
+ reason: _t6.message,
2907
+ stack: _t6.stack
2826
2908
  });
2827
- throw _t5;
2909
+ throw _t6;
2828
2910
  case 5:
2829
2911
  case "end":
2830
- return _context6.stop();
2912
+ return _context8.stop();
2831
2913
  }
2832
- }, _callee6, this, [[2, 4]]);
2914
+ }, _callee8, this, [[2, 4]]);
2833
2915
  }));
2834
2916
  function refreshPermissionToken(_x6) {
2835
2917
  return _refreshPermissionToken.apply(this, arguments);
@@ -2850,22 +2932,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2850
2932
  }, {
2851
2933
  key: "fetchMeetingInfo",
2852
2934
  value: (function () {
2853
- var _fetchMeetingInfo = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee7(options) {
2854
- return _regenerator.default.wrap(function (_context7) {
2855
- while (1) switch (_context7.prev = _context7.next) {
2935
+ var _fetchMeetingInfo = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee9(options) {
2936
+ return _regenerator.default.wrap(function (_context9) {
2937
+ while (1) switch (_context9.prev = _context9.next) {
2856
2938
  case 0:
2857
- _context7.next = 1;
2939
+ _context9.next = 1;
2858
2940
  return this.prepForFetchMeetingInfo(options, 'fetchMeetingInfo');
2859
2941
  case 1:
2860
- return _context7.abrupt("return", this.fetchMeetingInfoInternal(_objectSpread({
2942
+ return _context9.abrupt("return", this.fetchMeetingInfoInternal(_objectSpread({
2861
2943
  destination: this.destination,
2862
2944
  destinationType: this.destinationType
2863
2945
  }, options)));
2864
2946
  case 2:
2865
2947
  case "end":
2866
- return _context7.stop();
2948
+ return _context9.stop();
2867
2949
  }
2868
- }, _callee7, this);
2950
+ }, _callee9, this);
2869
2951
  }));
2870
2952
  function fetchMeetingInfo(_x7) {
2871
2953
  return _fetchMeetingInfo.apply(this, arguments);
@@ -3391,10 +3473,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3391
3473
  key: "setupLocusControlsListener",
3392
3474
  value: function setupLocusControlsListener() {
3393
3475
  var _this12 = this;
3394
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_RECORDING_UPDATED, function (_ref9) {
3395
- var state = _ref9.state,
3396
- modifiedBy = _ref9.modifiedBy,
3397
- lastModified = _ref9.lastModified;
3476
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_RECORDING_UPDATED, function (_ref10) {
3477
+ var state = _ref10.state,
3478
+ modifiedBy = _ref10.modifiedBy,
3479
+ lastModified = _ref10.lastModified;
3398
3480
  var event;
3399
3481
  switch (state) {
3400
3482
  case _constants.RECORDING_STATE.RECORDING:
@@ -3425,8 +3507,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3425
3507
  function: 'setupLocusControlsListener'
3426
3508
  }, event, _this12.recording);
3427
3509
  });
3428
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_CONTAINER_UPDATED, function (_ref0) {
3429
- var meetingContainerUrl = _ref0.meetingContainerUrl;
3510
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_CONTAINER_UPDATED, function (_ref11) {
3511
+ var meetingContainerUrl = _ref11.meetingContainerUrl;
3430
3512
  _triggerProxy.default.trigger(_this12, {
3431
3513
  file: 'meeting/index',
3432
3514
  function: 'setupLocusControlsListener'
@@ -3434,9 +3516,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3434
3516
  meetingContainerUrl: meetingContainerUrl
3435
3517
  });
3436
3518
  });
3437
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_TRANSCRIBE_UPDATED, function (_ref1) {
3438
- var caption = _ref1.caption,
3439
- transcribing = _ref1.transcribing;
3519
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_TRANSCRIBE_UPDATED, function (_ref12) {
3520
+ var caption = _ref12.caption,
3521
+ transcribing = _ref12.transcribing;
3440
3522
  // user need to be joined to start the llm and receive transcription
3441
3523
  if (_this12.isJoined()) {
3442
3524
  // @ts-ignore - config coming from registerPlugin
@@ -3453,8 +3535,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3453
3535
  }
3454
3536
  }
3455
3537
  });
3456
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_TRANSCRIPTION_SPOKEN_LANGUAGE_UPDATED, function (_ref10) {
3457
- var spokenLanguage = _ref10.spokenLanguage;
3538
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_TRANSCRIPTION_SPOKEN_LANGUAGE_UPDATED, function (_ref13) {
3539
+ var spokenLanguage = _ref13.spokenLanguage;
3458
3540
  if (spokenLanguage) {
3459
3541
  var _this12$transcription;
3460
3542
  if ((_this12$transcription = _this12.transcription) !== null && _this12$transcription !== void 0 && _this12$transcription.languageOptions) {
@@ -3471,8 +3553,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3471
3553
  });
3472
3554
  }
3473
3555
  });
3474
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_MANUAL_CAPTION_UPDATED, function (_ref11) {
3475
- var enable = _ref11.enable;
3556
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_MANUAL_CAPTION_UPDATED, function (_ref14) {
3557
+ var enable = _ref14.enable;
3476
3558
  _triggerProxy.default.trigger(_this12, {
3477
3559
  file: 'meeting/index',
3478
3560
  function: 'setupLocusControlsListener'
@@ -3480,31 +3562,31 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3480
3562
  enable: enable
3481
3563
  });
3482
3564
  });
3483
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_HESIOD_LLM_ID_UPDATED, function (_ref12) {
3484
- var hesiodLlmId = _ref12.hesiodLlmId;
3565
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_HESIOD_LLM_ID_UPDATED, function (_ref15) {
3566
+ var hesiodLlmId = _ref15.hesiodLlmId;
3485
3567
  if (hesiodLlmId) {
3486
3568
  // @ts-ignore
3487
3569
  _this12.webex.internal.voicea.onCaptionServiceIdUpdate(hesiodLlmId);
3488
3570
  }
3489
3571
  });
3490
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_BREAKOUT_UPDATED, function (_ref13) {
3491
- var breakout = _ref13.breakout;
3572
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_BREAKOUT_UPDATED, function (_ref16) {
3573
+ var breakout = _ref16.breakout;
3492
3574
  _this12.breakouts.updateBreakout(breakout);
3493
3575
  _triggerProxy.default.trigger(_this12, {
3494
3576
  file: 'meeting/index',
3495
3577
  function: 'setupLocusControlsListener'
3496
3578
  }, _constants.EVENT_TRIGGERS.MEETING_BREAKOUTS_UPDATE);
3497
3579
  });
3498
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_INTERPRETATION_UPDATED, function (_ref14) {
3499
- var interpretation = _ref14.interpretation;
3580
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_INTERPRETATION_UPDATED, function (_ref17) {
3581
+ var interpretation = _ref17.interpretation;
3500
3582
  _this12.simultaneousInterpretation.updateInterpretation(interpretation);
3501
3583
  _triggerProxy.default.trigger(_this12, {
3502
3584
  file: 'meeting/index',
3503
3585
  function: 'setupLocusControlsListener'
3504
3586
  }, _constants.EVENT_TRIGGERS.MEETING_INTERPRETATION_UPDATE);
3505
3587
  });
3506
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_ENTRY_EXIT_TONE_UPDATED, function (_ref15) {
3507
- var entryExitTone = _ref15.entryExitTone;
3588
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_ENTRY_EXIT_TONE_UPDATED, function (_ref18) {
3589
+ var entryExitTone = _ref18.entryExitTone;
3508
3590
  _triggerProxy.default.trigger(_this12, {
3509
3591
  file: 'meeting/index',
3510
3592
  function: 'setupLocusControlsListener'
@@ -3512,8 +3594,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3512
3594
  entryExitTone: entryExitTone
3513
3595
  });
3514
3596
  });
3515
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MUTE_ON_ENTRY_CHANGED, function (_ref16) {
3516
- var state = _ref16.state;
3597
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MUTE_ON_ENTRY_CHANGED, function (_ref19) {
3598
+ var state = _ref19.state;
3517
3599
  _triggerProxy.default.trigger(_this12, {
3518
3600
  file: 'meeting/index',
3519
3601
  function: 'setupLocusControlsListener'
@@ -3521,8 +3603,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3521
3603
  state: state
3522
3604
  });
3523
3605
  });
3524
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_SHARE_CONTROL_CHANGED, function (_ref17) {
3525
- var state = _ref17.state;
3606
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_SHARE_CONTROL_CHANGED, function (_ref20) {
3607
+ var state = _ref20.state;
3526
3608
  _triggerProxy.default.trigger(_this12, {
3527
3609
  file: 'meeting/index',
3528
3610
  function: 'setupLocusControlsListener'
@@ -3530,8 +3612,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3530
3612
  state: state
3531
3613
  });
3532
3614
  });
3533
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_DISALLOW_UNMUTE_CHANGED, function (_ref18) {
3534
- var state = _ref18.state;
3615
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_DISALLOW_UNMUTE_CHANGED, function (_ref21) {
3616
+ var state = _ref21.state;
3535
3617
  _triggerProxy.default.trigger(_this12, {
3536
3618
  file: 'meeting/index',
3537
3619
  function: 'setupLocusControlsListener'
@@ -3539,8 +3621,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3539
3621
  state: state
3540
3622
  });
3541
3623
  });
3542
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_REACTIONS_CHANGED, function (_ref19) {
3543
- var state = _ref19.state;
3624
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_REACTIONS_CHANGED, function (_ref22) {
3625
+ var state = _ref22.state;
3544
3626
  _triggerProxy.default.trigger(_this12, {
3545
3627
  file: 'meeting/index',
3546
3628
  function: 'setupLocusControlsListener'
@@ -3548,8 +3630,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3548
3630
  state: state
3549
3631
  });
3550
3632
  });
3551
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED, function (_ref20) {
3552
- var state = _ref20.state;
3633
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED, function (_ref23) {
3634
+ var state = _ref23.state;
3553
3635
  _triggerProxy.default.trigger(_this12, {
3554
3636
  file: 'meeting/index',
3555
3637
  function: 'setupLocusControlsListener'
@@ -3557,8 +3639,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3557
3639
  state: state
3558
3640
  });
3559
3641
  });
3560
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_RAISE_HAND_CHANGED, function (_ref21) {
3561
- var state = _ref21.state;
3642
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_RAISE_HAND_CHANGED, function (_ref24) {
3643
+ var state = _ref24.state;
3562
3644
  _triggerProxy.default.trigger(_this12, {
3563
3645
  file: 'meeting/index',
3564
3646
  function: 'setupLocusControlsListener'
@@ -3566,8 +3648,17 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3566
3648
  state: state
3567
3649
  });
3568
3650
  });
3569
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_WEBCAST_CHANGED, function (_ref22) {
3570
- var state = _ref22.state;
3651
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_AI_SUMMARY_NOTIFICATION_UPDATED, function (_ref25) {
3652
+ var aiSummaryNotification = _ref25.aiSummaryNotification;
3653
+ _triggerProxy.default.trigger(_this12, {
3654
+ file: 'meeting/index',
3655
+ function: 'setupLocusControlsListener'
3656
+ }, _constants.EVENT_TRIGGERS.MEETING_CONTROLS_AI_SUMMARY_NOTIFICATION_UPDATED, {
3657
+ aiSummaryNotification: aiSummaryNotification
3658
+ });
3659
+ });
3660
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_WEBCAST_CHANGED, function (_ref26) {
3661
+ var state = _ref26.state;
3571
3662
  _triggerProxy.default.trigger(_this12, {
3572
3663
  file: 'meeting/index',
3573
3664
  function: 'setupLocusControlsListener'
@@ -3575,8 +3666,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3575
3666
  state: state
3576
3667
  });
3577
3668
  });
3578
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_FULL_CHANGED, function (_ref23) {
3579
- var state = _ref23.state;
3669
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_FULL_CHANGED, function (_ref27) {
3670
+ var state = _ref27.state;
3580
3671
  _triggerProxy.default.trigger(_this12, {
3581
3672
  file: 'meeting/index',
3582
3673
  function: 'setupLocusControlsListener'
@@ -3584,8 +3675,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3584
3675
  state: state
3585
3676
  });
3586
3677
  });
3587
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_PRACTICE_SESSION_STATUS_UPDATED, function (_ref24) {
3588
- var state = _ref24.state;
3678
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_PRACTICE_SESSION_STATUS_UPDATED, function (_ref28) {
3679
+ var state = _ref28.state;
3589
3680
  _this12.webinar.updatePracticeSessionStatus(state);
3590
3681
  _triggerProxy.default.trigger(_this12, {
3591
3682
  file: 'meeting/index',
@@ -3594,8 +3685,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3594
3685
  state: state
3595
3686
  });
3596
3687
  });
3597
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_STAGE_VIEW_UPDATED, function (_ref25) {
3598
- var state = _ref25.state;
3688
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_STAGE_VIEW_UPDATED, function (_ref29) {
3689
+ var state = _ref29.state;
3599
3690
  _triggerProxy.default.trigger(_this12, {
3600
3691
  file: 'meeting/index',
3601
3692
  function: 'setupLocusControlsListener'
@@ -3603,8 +3694,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3603
3694
  state: state
3604
3695
  });
3605
3696
  });
3606
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_VIDEO_CHANGED, function (_ref26) {
3607
- var state = _ref26.state;
3697
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_VIDEO_CHANGED, function (_ref30) {
3698
+ var state = _ref30.state;
3608
3699
  _triggerProxy.default.trigger(_this12, {
3609
3700
  file: 'meeting/index',
3610
3701
  function: 'setupLocusControlsListener'
@@ -3612,8 +3703,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3612
3703
  state: state
3613
3704
  });
3614
3705
  });
3615
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_AUTO_END_MEETING_WARNING_CHANGED, function (_ref27) {
3616
- var state = _ref27.state;
3706
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_AUTO_END_MEETING_WARNING_CHANGED, function (_ref31) {
3707
+ var state = _ref31.state;
3617
3708
  _triggerProxy.default.trigger(_this12, {
3618
3709
  file: 'meeting/index',
3619
3710
  function: 'setupLocusControlsListener'
@@ -3621,8 +3712,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3621
3712
  state: state
3622
3713
  });
3623
3714
  });
3624
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_ANNOTATION_CHANGED, function (_ref28) {
3625
- var state = _ref28.state;
3715
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_ANNOTATION_CHANGED, function (_ref32) {
3716
+ var state = _ref32.state;
3626
3717
  _triggerProxy.default.trigger(_this12, {
3627
3718
  file: 'meeting/index',
3628
3719
  function: 'setupLocusControlsListener'
@@ -3630,8 +3721,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3630
3721
  state: state
3631
3722
  });
3632
3723
  });
3633
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_REMOTE_DESKTOP_CONTROL_CHANGED, function (_ref29) {
3634
- var state = _ref29.state;
3724
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_REMOTE_DESKTOP_CONTROL_CHANGED, function (_ref33) {
3725
+ var state = _ref33.state;
3635
3726
  _triggerProxy.default.trigger(_this12, {
3636
3727
  file: 'meeting/index',
3637
3728
  function: 'setupLocusControlsListener'
@@ -3639,8 +3730,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3639
3730
  state: state
3640
3731
  });
3641
3732
  });
3642
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_POLLING_QA_CHANGED, function (_ref30) {
3643
- var state = _ref30.state;
3733
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_POLLING_QA_CHANGED, function (_ref34) {
3734
+ var state = _ref34.state;
3644
3735
  _triggerProxy.default.trigger(_this12, {
3645
3736
  file: 'meeting/index',
3646
3737
  function: 'setupLocusControlsListener'
@@ -3687,21 +3778,21 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3687
3778
  var _this13 = this;
3688
3779
  // Will get triggered on local and remote share
3689
3780
  this.locusInfo.on(_constants.EVENTS.LOCUS_INFO_UPDATE_MEDIA_SHARES, /*#__PURE__*/function () {
3690
- var _ref31 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee8(payload) {
3781
+ var _ref35 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee0(payload) {
3691
3782
  var _payload$previous, _payload$previous2;
3692
- var _payload$current, contentShare, whiteboardShare, previousContentShare, previousWhiteboardShare, newShareStatus, _this13$locusInfo, _this13$locusInfo$inf, _this13$webinar, oldShareStatus, sendStartedSharingRemote, _this13$mediaProperti, _t6, _t7;
3693
- return _regenerator.default.wrap(function (_context8) {
3694
- while (1) switch (_context8.prev = _context8.next) {
3783
+ var _payload$current, contentShare, whiteboardShare, previousContentShare, previousWhiteboardShare, newShareStatus, _this13$locusInfo, _this13$locusInfo$inf, _this13$webinar, oldShareStatus, sendStartedSharingRemote, _this13$mediaProperti, _t7, _t8;
3784
+ return _regenerator.default.wrap(function (_context0) {
3785
+ while (1) switch (_context0.prev = _context0.next) {
3695
3786
  case 0:
3696
3787
  _payload$current = payload.current, contentShare = _payload$current.content, whiteboardShare = _payload$current.whiteboard;
3697
3788
  previousContentShare = (_payload$previous = payload.previous) === null || _payload$previous === void 0 ? void 0 : _payload$previous.content;
3698
3789
  previousWhiteboardShare = (_payload$previous2 = payload.previous) === null || _payload$previous2 === void 0 ? void 0 : _payload$previous2.whiteboard;
3699
3790
  _this13.triggerAnnotationInfoEvent(contentShare, previousContentShare);
3700
3791
  if (!(!payload.forceUpdate && 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))) {
3701
- _context8.next = 1;
3792
+ _context0.next = 1;
3702
3793
  break;
3703
3794
  }
3704
- return _context8.abrupt("return");
3795
+ return _context0.abrupt("return");
3705
3796
  case 1:
3706
3797
  newShareStatus = _this13.shareStatus; // REMOTE - check if remote started sharing
3707
3798
  if (_this13.selfId !== contentShare.beneficiaryId && contentShare.disposition === _constants.FLOOR_ACTION.GRANTED) {
@@ -3739,22 +3830,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3739
3830
  }
3740
3831
  _loggerProxy.default.logger.info("Meeting:index#setUpLocusInfoMediaInactiveListener --> this.shareStatus=".concat(_this13.shareStatus, " newShareStatus=").concat(newShareStatus));
3741
3832
  if (!(newShareStatus !== _this13.shareStatus)) {
3742
- _context8.next = 17;
3833
+ _context0.next = 17;
3743
3834
  break;
3744
3835
  }
3745
3836
  oldShareStatus = _this13.shareStatus; // update our state before we send out any notifications
3746
3837
  _this13.shareStatus = newShareStatus;
3747
3838
 
3748
3839
  // send out "stop" notifications for the old state
3749
- _t6 = oldShareStatus;
3750
- _context8.next = _t6 === _constants.SHARE_STATUS.REMOTE_SHARE_ACTIVE ? 2 : _t6 === _constants.SHARE_STATUS.LOCAL_SHARE_ACTIVE ? 3 : _t6 === _constants.SHARE_STATUS.WHITEBOARD_SHARE_ACTIVE ? 4 : _t6 === _constants.SHARE_STATUS.NO_SHARE ? 5 : 6;
3840
+ _t7 = oldShareStatus;
3841
+ _context0.next = _t7 === _constants.SHARE_STATUS.REMOTE_SHARE_ACTIVE ? 2 : _t7 === _constants.SHARE_STATUS.LOCAL_SHARE_ACTIVE ? 3 : _t7 === _constants.SHARE_STATUS.WHITEBOARD_SHARE_ACTIVE ? 4 : _t7 === _constants.SHARE_STATUS.NO_SHARE ? 5 : 6;
3751
3842
  break;
3752
3843
  case 2:
3753
3844
  _triggerProxy.default.trigger(_this13, {
3754
3845
  file: 'meetings/index',
3755
3846
  function: 'remoteShare'
3756
3847
  }, _constants.EVENT_TRIGGERS.MEETING_STOPPED_SHARING_REMOTE);
3757
- return _context8.abrupt("continue", 7);
3848
+ return _context0.abrupt("continue", 7);
3758
3849
  case 3:
3759
3850
  _triggerProxy.default.trigger(_this13, {
3760
3851
  file: 'meeting/index',
@@ -3762,7 +3853,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3762
3853
  }, _constants.EVENT_TRIGGERS.MEETING_STOPPED_SHARING_LOCAL, {
3763
3854
  reason: _constants.SHARE_STOPPED_REASON.SELF_STOPPED
3764
3855
  });
3765
- return _context8.abrupt("continue", 7);
3856
+ return _context0.abrupt("continue", 7);
3766
3857
  case 4:
3767
3858
  _triggerProxy.default.trigger(_this13, {
3768
3859
  file: 'meeting/index',
@@ -3785,14 +3876,14 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3785
3876
  meetingId: _this13.id
3786
3877
  }
3787
3878
  });
3788
- return _context8.abrupt("continue", 7);
3879
+ return _context0.abrupt("continue", 7);
3789
3880
  case 5:
3790
- return _context8.abrupt("continue", 7);
3881
+ return _context0.abrupt("continue", 7);
3791
3882
  case 6:
3792
- return _context8.abrupt("continue", 7);
3883
+ return _context0.abrupt("continue", 7);
3793
3884
  case 7:
3794
- _t7 = newShareStatus;
3795
- _context8.next = _t7 === _constants.SHARE_STATUS.REMOTE_SHARE_ACTIVE ? 8 : _t7 === _constants.SHARE_STATUS.LOCAL_SHARE_ACTIVE ? 12 : _t7 === _constants.SHARE_STATUS.WHITEBOARD_SHARE_ACTIVE ? 13 : _t7 === _constants.SHARE_STATUS.NO_SHARE ? 14 : 15;
3885
+ _t8 = newShareStatus;
3886
+ _context0.next = _t8 === _constants.SHARE_STATUS.REMOTE_SHARE_ACTIVE ? 8 : _t8 === _constants.SHARE_STATUS.LOCAL_SHARE_ACTIVE ? 12 : _t8 === _constants.SHARE_STATUS.WHITEBOARD_SHARE_ACTIVE ? 13 : _t8 === _constants.SHARE_STATUS.NO_SHARE ? 14 : 15;
3796
3887
  break;
3797
3888
  case 8:
3798
3889
  sendStartedSharingRemote = function sendStartedSharingRemote() {
@@ -3818,19 +3909,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3818
3909
  resourceType: contentShare.resourceType
3819
3910
  });
3820
3911
  };
3821
- _context8.prev = 9;
3912
+ _context0.prev = 9;
3822
3913
  if (!((_this13$mediaProperti = _this13.mediaProperties.mediaDirection) !== null && _this13$mediaProperti !== void 0 && _this13$mediaProperti.sendShare && oldShareStatus === _constants.SHARE_STATUS.LOCAL_SHARE_ACTIVE)) {
3823
- _context8.next = 10;
3914
+ _context0.next = 10;
3824
3915
  break;
3825
3916
  }
3826
- _context8.next = 10;
3917
+ _context0.next = 10;
3827
3918
  return _this13.unpublishStreams([_this13.mediaProperties.shareVideoStream, _this13.mediaProperties.shareAudioStream]);
3828
3919
  case 10:
3829
- _context8.prev = 10;
3920
+ _context0.prev = 10;
3830
3921
  sendStartedSharingRemote();
3831
- return _context8.finish(10);
3922
+ return _context0.finish(10);
3832
3923
  case 11:
3833
- return _context8.abrupt("continue", 16);
3924
+ return _context0.abrupt("continue", 16);
3834
3925
  case 12:
3835
3926
  _triggerProxy.default.trigger(_this13, {
3836
3927
  file: 'meeting/index',
@@ -3847,7 +3938,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3847
3938
  meetingId: _this13.id
3848
3939
  }
3849
3940
  });
3850
- return _context8.abrupt("continue", 16);
3941
+ return _context0.abrupt("continue", 16);
3851
3942
  case 13:
3852
3943
  _triggerProxy.default.trigger(_this13, {
3853
3944
  file: 'meeting/index',
@@ -3866,14 +3957,14 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3866
3957
  meetingId: _this13.id
3867
3958
  }
3868
3959
  });
3869
- return _context8.abrupt("continue", 16);
3960
+ return _context0.abrupt("continue", 16);
3870
3961
  case 14:
3871
- return _context8.abrupt("continue", 16);
3962
+ return _context0.abrupt("continue", 16);
3872
3963
  case 15:
3873
- return _context8.abrupt("continue", 16);
3964
+ return _context0.abrupt("continue", 16);
3874
3965
  case 16:
3875
3966
  _this13.members.locusMediaSharesUpdate(payload);
3876
- _context8.next = 18;
3967
+ _context0.next = 18;
3877
3968
  break;
3878
3969
  case 17:
3879
3970
  if (newShareStatus === _constants.SHARE_STATUS.REMOTE_SHARE_ACTIVE) {
@@ -3917,12 +4008,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3917
4008
  }
3918
4009
  case 18:
3919
4010
  case "end":
3920
- return _context8.stop();
4011
+ return _context0.stop();
3921
4012
  }
3922
- }, _callee8, null, [[9,, 10, 11]]);
4013
+ }, _callee0, null, [[9,, 10, 11]]);
3923
4014
  }));
3924
4015
  return function (_x8) {
3925
- return _ref31.apply(this, arguments);
4016
+ return _ref35.apply(this, arguments);
3926
4017
  };
3927
4018
  }());
3928
4019
  }
@@ -3951,6 +4042,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3951
4042
  _this14.recordingController.setLocusUrl(_this14.locusUrl);
3952
4043
  _this14.controlsOptionsManager.setLocusUrl(_this14.locusUrl, !!isMainLocus);
3953
4044
  _this14.webinar.locusUrlUpdate(url);
4045
+ // @ts-ignore
4046
+ _this14.webex.internal.llm.setRefreshHandler(function () {
4047
+ return _this14.refreshDataChannelToken();
4048
+ });
3954
4049
  _triggerProxy.default.trigger(_this14, {
3955
4050
  file: 'meeting/index',
3956
4051
  function: 'setUpLocusSelfListener'
@@ -3974,12 +4069,13 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3974
4069
  value: function setUpLocusServicesListener() {
3975
4070
  var _this15 = this;
3976
4071
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.LINKS_SERVICES, function (payload) {
3977
- var _payload$services, _payload$services$rec, _this15$locusInfo, _this15$locusInfo$ful, _payload$services2, _payload$services2$br, _payload$services3, _payload$services3$ap, _payload$services4, _payload$services4$ap;
4072
+ var _payload$services, _payload$services$rec, _this15$locusInfo, _this15$locusInfo$ful, _payload$services2, _payload$services2$br, _payload$services3, _payload$services3$ap, _payload$services4, _payload$services4$ap, _payload$services5, _payload$services5$ap;
3978
4073
  _this15.recordingController.setServiceUrl(payload === null || payload === void 0 ? void 0 : (_payload$services = payload.services) === null || _payload$services === void 0 ? void 0 : (_payload$services$rec = _payload$services.record) === null || _payload$services$rec === void 0 ? void 0 : _payload$services$rec.url);
3979
4074
  _this15.recordingController.setSessionId((_this15$locusInfo = _this15.locusInfo) === null || _this15$locusInfo === void 0 ? void 0 : (_this15$locusInfo$ful = _this15$locusInfo.fullState) === null || _this15$locusInfo$ful === void 0 ? void 0 : _this15$locusInfo$ful.sessionId);
3980
4075
  _this15.breakouts.breakoutServiceUrlUpdate(payload === null || payload === void 0 ? void 0 : (_payload$services2 = payload.services) === null || _payload$services2 === void 0 ? void 0 : (_payload$services2$br = _payload$services2.breakout) === null || _payload$services2$br === void 0 ? void 0 : _payload$services2$br.url);
3981
4076
  _this15.annotation.approvalUrlUpdate(payload === null || payload === void 0 ? void 0 : (_payload$services3 = payload.services) === null || _payload$services3 === void 0 ? void 0 : (_payload$services3$ap = _payload$services3.approval) === null || _payload$services3$ap === void 0 ? void 0 : _payload$services3$ap.url);
3982
4077
  _this15.simultaneousInterpretation.approvalUrlUpdate(payload === null || payload === void 0 ? void 0 : (_payload$services4 = payload.services) === null || _payload$services4 === void 0 ? void 0 : (_payload$services4$ap = _payload$services4.approval) === null || _payload$services4$ap === void 0 ? void 0 : _payload$services4$ap.url);
4078
+ _this15.aiEnableRequest.approvalUrlUpdate(payload === null || payload === void 0 ? void 0 : (_payload$services5 = payload.services) === null || _payload$services5 === void 0 ? void 0 : (_payload$services5$ap = _payload$services5.approval) === null || _payload$services5$ap === void 0 ? void 0 : _payload$services5$ap.url);
3983
4079
  });
3984
4080
  }
3985
4081
 
@@ -4038,8 +4134,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4038
4134
  });
4039
4135
  }
4040
4136
  });
4041
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.MEETING_INFO_UPDATED, function (_ref32) {
4042
- var isInitializing = _ref32.isInitializing;
4137
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.MEETING_INFO_UPDATED, function (_ref36) {
4138
+ var isInitializing = _ref36.isInitializing;
4043
4139
  _this17.updateMeetingActions();
4044
4140
  _this17.recordingController.setDisplayHints(_this17.userDisplayHints);
4045
4141
  _this17.recordingController.setUserPolicy(_this17.selfUserPolicies);
@@ -4066,6 +4162,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4066
4162
  // @ts-ignore - config coming from registerPlugin
4067
4163
  if (datachannelUrl && this.config.enableAutomaticLLM) {
4068
4164
  this.updateLLMConnection();
4165
+ if (this.webinar.isJoinPracticeSessionDataChannel()) {
4166
+ this.webinar.updatePSDataChannel();
4167
+ }
4069
4168
  }
4070
4169
  }
4071
4170
 
@@ -4177,10 +4276,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4177
4276
  _this19.updateLLMConnection();
4178
4277
  });
4179
4278
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_ADMITTED_GUEST, /*#__PURE__*/function () {
4180
- var _ref33 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee9(payload) {
4279
+ var _ref37 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee1(payload) {
4181
4280
  var _this19$rtcMetrics;
4182
- return _regenerator.default.wrap(function (_context9) {
4183
- while (1) switch (_context9.prev = _context9.next) {
4281
+ return _regenerator.default.wrap(function (_context1) {
4282
+ while (1) switch (_context1.prev = _context1.next) {
4184
4283
  case 0:
4185
4284
  _this19.stopKeepAlive();
4186
4285
  if (payload) {
@@ -4206,12 +4305,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4206
4305
  _this19.updateLLMConnection();
4207
4306
  case 1:
4208
4307
  case "end":
4209
- return _context9.stop();
4308
+ return _context1.stop();
4210
4309
  }
4211
- }, _callee9);
4310
+ }, _callee1);
4212
4311
  }));
4213
4312
  return function (_x9) {
4214
- return _ref33.apply(this, arguments);
4313
+ return _ref37.apply(this, arguments);
4215
4314
  };
4216
4315
  }());
4217
4316
 
@@ -4263,6 +4362,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4263
4362
  function: 'setUpLocusInfoSelfListener'
4264
4363
  }, _constants.EVENT_TRIGGERS.MEETING_BREAKOUTS_UPDATE);
4265
4364
  });
4365
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_ID_CHANGED, function (payload) {
4366
+ _this19.aiEnableRequest.selfParticipantIdUpdate(payload.selfId);
4367
+ });
4266
4368
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_MEETING_INTERPRETATION_CHANGED, function (payload) {
4267
4369
  var targetChanged = _this19.simultaneousInterpretation.updateSelfInterpretation(payload);
4268
4370
  _triggerProxy.default.trigger(_this19, {
@@ -4330,49 +4432,49 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4330
4432
  }
4331
4433
  });
4332
4434
  this.locusInfo.on(_constants.EVENTS.DESTROY_MEETING, /*#__PURE__*/function () {
4333
- var _ref34 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee0(payload) {
4334
- var _t8;
4335
- return _regenerator.default.wrap(function (_context0) {
4336
- while (1) switch (_context0.prev = _context0.next) {
4435
+ var _ref38 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee10(payload) {
4436
+ var _t9;
4437
+ return _regenerator.default.wrap(function (_context10) {
4438
+ while (1) switch (_context10.prev = _context10.next) {
4337
4439
  case 0:
4338
4440
  if (!_this20.wirelessShare) {
4339
- _context0.next = 2;
4441
+ _context10.next = 2;
4340
4442
  break;
4341
4443
  }
4342
4444
  if (!_this20.mediaProperties.shareVideoStream) {
4343
- _context0.next = 1;
4445
+ _context10.next = 1;
4344
4446
  break;
4345
4447
  }
4346
- _context0.next = 1;
4448
+ _context10.next = 1;
4347
4449
  return _this20.setLocalShareVideoStream(undefined);
4348
4450
  case 1:
4349
4451
  if (!_this20.mediaProperties.shareAudioStream) {
4350
- _context0.next = 2;
4452
+ _context10.next = 2;
4351
4453
  break;
4352
4454
  }
4353
- _context0.next = 2;
4455
+ _context10.next = 2;
4354
4456
  return _this20.setLocalShareAudioStream(undefined);
4355
4457
  case 2:
4356
4458
  if (!payload.shouldLeave) {
4357
- _context0.next = 7;
4459
+ _context10.next = 7;
4358
4460
  break;
4359
4461
  }
4360
- _context0.prev = 3;
4361
- _context0.next = 4;
4462
+ _context10.prev = 3;
4463
+ _context10.next = 4;
4362
4464
  return _this20.leave({
4363
4465
  reason: payload.reason
4364
4466
  });
4365
4467
  case 4:
4366
4468
  _loggerProxy.default.logger.warn('Meeting:index#setUpLocusInfoMeetingListener --> DESTROY_MEETING. The meeting has been left, but has not been destroyed, you should see a later event for leave.');
4367
- _context0.next = 6;
4469
+ _context10.next = 6;
4368
4470
  break;
4369
4471
  case 5:
4370
- _context0.prev = 5;
4371
- _t8 = _context0["catch"](3);
4472
+ _context10.prev = 5;
4473
+ _t9 = _context10["catch"](3);
4372
4474
  // @ts-ignore
4373
- _loggerProxy.default.logger.error("Meeting:index#setUpLocusInfoMeetingListener --> DESTROY_MEETING. Issue with leave for meeting, meeting still in collection: ".concat(_this20, ", error: ").concat(_t8));
4475
+ _loggerProxy.default.logger.error("Meeting:index#setUpLocusInfoMeetingListener --> DESTROY_MEETING. Issue with leave for meeting, meeting still in collection: ".concat(_this20, ", error: ").concat(_t9));
4374
4476
  case 6:
4375
- _context0.next = 8;
4477
+ _context10.next = 8;
4376
4478
  break;
4377
4479
  case 7:
4378
4480
  _loggerProxy.default.logger.info('Meeting:index#setUpLocusInfoMeetingListener --> MEETING_REMOVED_REASON', payload.reason);
@@ -4386,12 +4488,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4386
4488
  });
4387
4489
  case 8:
4388
4490
  case "end":
4389
- return _context0.stop();
4491
+ return _context10.stop();
4390
4492
  }
4391
- }, _callee0, null, [[3, 5]]);
4493
+ }, _callee10, null, [[3, 5]]);
4392
4494
  }));
4393
4495
  return function (_x0) {
4394
- return _ref34.apply(this, arguments);
4496
+ return _ref38.apply(this, arguments);
4395
4497
  };
4396
4498
  }());
4397
4499
  }
@@ -4509,31 +4611,31 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4509
4611
  }, {
4510
4612
  key: "beRightBack",
4511
4613
  value: (function () {
4512
- var _beRightBack = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee1(enabled) {
4614
+ var _beRightBack = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee11(enabled) {
4513
4615
  var _this22 = this;
4514
4616
  var errorMessage, error, _errorMessage, _error;
4515
- return _regenerator.default.wrap(function (_context1) {
4516
- while (1) switch (_context1.prev = _context1.next) {
4617
+ return _regenerator.default.wrap(function (_context11) {
4618
+ while (1) switch (_context11.prev = _context11.next) {
4517
4619
  case 0:
4518
4620
  if (this.isMultistream) {
4519
- _context1.next = 1;
4621
+ _context11.next = 1;
4520
4622
  break;
4521
4623
  }
4522
4624
  errorMessage = 'Meeting:index#beRightBack --> Not a multistream meeting';
4523
4625
  error = new Error(errorMessage);
4524
4626
  _loggerProxy.default.logger.error(error);
4525
- return _context1.abrupt("return", _promise.default.reject(error));
4627
+ return _context11.abrupt("return", _promise.default.reject(error));
4526
4628
  case 1:
4527
4629
  if (this.mediaProperties.webrtcMediaConnection) {
4528
- _context1.next = 2;
4630
+ _context11.next = 2;
4529
4631
  break;
4530
4632
  }
4531
4633
  _errorMessage = 'Meeting:index#beRightBack --> WebRTC media connection is not defined';
4532
4634
  _error = new Error(_errorMessage);
4533
4635
  _loggerProxy.default.logger.error(_error);
4534
- return _context1.abrupt("return", _promise.default.reject(_error));
4636
+ return _context11.abrupt("return", _promise.default.reject(_error));
4535
4637
  case 2:
4536
- return _context1.abrupt("return", this.brbState.enable(enabled, this.sendSlotManager).then(function () {
4638
+ return _context11.abrupt("return", this.brbState.enable(enabled, this.sendSlotManager).then(function () {
4537
4639
  if (_this22.audio && enabled) {
4538
4640
  // locus mutes the participant with brb enabled request,
4539
4641
  // so we need to explicitly update remote mute for correct logic flow
@@ -4544,9 +4646,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4544
4646
  }));
4545
4647
  case 3:
4546
4648
  case "end":
4547
- return _context1.stop();
4649
+ return _context11.stop();
4548
4650
  }
4549
- }, _callee1, this);
4651
+ }, _callee11, this);
4550
4652
  }));
4551
4653
  function beRightBack(_x1) {
4552
4654
  return _beRightBack.apply(this, arguments);
@@ -4744,6 +4846,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4744
4846
  canLowerAllHands: _util2.default.canUserLowerAllHands(this.userDisplayHints),
4745
4847
  canLowerSomeoneElsesHand: _util2.default.canUserLowerSomeoneElsesHand(this.userDisplayHints),
4746
4848
  bothLeaveAndEndMeetingAvailable: _util2.default.bothLeaveAndEndMeetingAvailable(this.userDisplayHints),
4849
+ requireHostEndMeetingBeforeLeave: _util2.default.requireHostEndMeetingBeforeLeave(this.userDisplayHints),
4747
4850
  canEnableClosedCaption: _util2.default.canEnableClosedCaption(this.userDisplayHints),
4748
4851
  canStartTranscribing: _util2.default.canStartTranscribing(this.userDisplayHints),
4749
4852
  canStopTranscribing: _util2.default.canStopTranscribing(this.userDisplayHints),
@@ -4973,7 +5076,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4973
5076
  canDisablePollingQA: _util5.default.hasHints({
4974
5077
  requiredHints: [_constants.DISPLAY_HINTS.DISABLE_ATTENDEE_START_POLLING_QA],
4975
5078
  displayHints: this.userDisplayHints
4976
- })
5079
+ }),
5080
+ canAttendeeRequestAiAssistantEnabled: _util2.default.canAttendeeRequestAiAssistantEnabled(this.userDisplayHints, this.roles),
5081
+ isAttendeeRequestAiAssistantDeclinedAll: _util2.default.attendeeRequestAiAssistantDeclinedAll(this.userDisplayHints)
4977
5082
  }) || changed;
4978
5083
  }
4979
5084
  if (changed) {
@@ -5055,7 +5160,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5055
5160
  this.locusInfo.initialSetup({
5056
5161
  trigger: 'join-response',
5057
5162
  locus: mtgLocus,
5058
- dataSets: data.dataSets
5163
+ dataSets: data.dataSets,
5164
+ metadata: data.metadata
5059
5165
  });
5060
5166
  }
5061
5167
 
@@ -5170,10 +5276,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5170
5276
  key: "closeRemoteStreams",
5171
5277
  value: function closeRemoteStreams() {
5172
5278
  var _this24 = this;
5173
- var _this$mediaProperties6 = this.mediaProperties,
5174
- remoteAudioStream = _this$mediaProperties6.remoteAudioStream,
5175
- remoteVideoStream = _this$mediaProperties6.remoteVideoStream,
5176
- remoteShareStream = _this$mediaProperties6.remoteShareStream;
5279
+ var _this$mediaProperties7 = this.mediaProperties,
5280
+ remoteAudioStream = _this$mediaProperties7.remoteAudioStream,
5281
+ remoteVideoStream = _this$mediaProperties7.remoteVideoStream,
5282
+ remoteShareStream = _this$mediaProperties7.remoteShareStream;
5177
5283
 
5178
5284
  /**
5179
5285
  * Triggers an event to the developer
@@ -5217,11 +5323,11 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5217
5323
  }, {
5218
5324
  key: "setLocalAudioStream",
5219
5325
  value: (function () {
5220
- var _setLocalAudioStream = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee10(localStream) {
5326
+ var _setLocalAudioStream = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee12(localStream) {
5221
5327
  var _this$audio2;
5222
5328
  var oldStream;
5223
- return _regenerator.default.wrap(function (_context10) {
5224
- while (1) switch (_context10.prev = _context10.next) {
5329
+ return _regenerator.default.wrap(function (_context12) {
5330
+ while (1) switch (_context12.prev = _context12.next) {
5225
5331
  case 0:
5226
5332
  oldStream = this.mediaProperties.audioStream;
5227
5333
  oldStream === null || oldStream === void 0 ? void 0 : oldStream.off(_mediaHelpers.LocalStreamEventNames.UserMuteStateChange, this.localAudioStreamMuteStateHandler);
@@ -5235,19 +5341,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5235
5341
  localStream === null || localStream === void 0 ? void 0 : localStream.on(_mediaHelpers.LocalStreamEventNames.SystemMuteStateChange, this.localAudioStreamMuteStateHandler);
5236
5342
  localStream === null || localStream === void 0 ? void 0 : localStream.on(_mediaHelpers.LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);
5237
5343
  if (!(!this.isMultistream || !localStream)) {
5238
- _context10.next = 1;
5344
+ _context12.next = 1;
5239
5345
  break;
5240
5346
  }
5241
- _context10.next = 1;
5347
+ _context12.next = 1;
5242
5348
  return this.unpublishStream(_internalMediaCore.MediaType.AudioMain, oldStream);
5243
5349
  case 1:
5244
- _context10.next = 2;
5350
+ _context12.next = 2;
5245
5351
  return this.publishStream(_internalMediaCore.MediaType.AudioMain, this.mediaProperties.audioStream);
5246
5352
  case 2:
5247
5353
  case "end":
5248
- return _context10.stop();
5354
+ return _context12.stop();
5249
5355
  }
5250
- }, _callee10, this);
5356
+ }, _callee12, this);
5251
5357
  }));
5252
5358
  function setLocalAudioStream(_x10) {
5253
5359
  return _setLocalAudioStream.apply(this, arguments);
@@ -5265,16 +5371,17 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5265
5371
  }, {
5266
5372
  key: "setLocalVideoStream",
5267
5373
  value: (function () {
5268
- var _setLocalVideoStream = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee11(localStream) {
5374
+ var _setLocalVideoStream = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee13(localStream) {
5269
5375
  var _this$video2;
5270
5376
  var oldStream;
5271
- return _regenerator.default.wrap(function (_context11) {
5272
- while (1) switch (_context11.prev = _context11.next) {
5377
+ return _regenerator.default.wrap(function (_context13) {
5378
+ while (1) switch (_context13.prev = _context13.next) {
5273
5379
  case 0:
5274
5380
  oldStream = this.mediaProperties.videoStream;
5275
5381
  oldStream === null || oldStream === void 0 ? void 0 : oldStream.off(_mediaHelpers.LocalStreamEventNames.UserMuteStateChange, this.localVideoStreamMuteStateHandler);
5276
5382
  oldStream === null || oldStream === void 0 ? void 0 : oldStream.off(_mediaHelpers.LocalStreamEventNames.SystemMuteStateChange, this.localVideoStreamMuteStateHandler);
5277
5383
  oldStream === null || oldStream === void 0 ? void 0 : oldStream.off(_mediaHelpers.LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);
5384
+ oldStream === null || oldStream === void 0 ? void 0 : oldStream.off(_mediaHelpers.LocalStreamEventNames.ConstraintsChange, this.localConstraintsChangeHandler);
5278
5385
 
5279
5386
  // we don't update this.mediaProperties.mediaDirection.sendVideo, because we always keep it as true to avoid extra SDP exchanges
5280
5387
  this.mediaProperties.setLocalVideoStream(localStream);
@@ -5282,20 +5389,21 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5282
5389
  localStream === null || localStream === void 0 ? void 0 : localStream.on(_mediaHelpers.LocalStreamEventNames.UserMuteStateChange, this.localVideoStreamMuteStateHandler);
5283
5390
  localStream === null || localStream === void 0 ? void 0 : localStream.on(_mediaHelpers.LocalStreamEventNames.SystemMuteStateChange, this.localVideoStreamMuteStateHandler);
5284
5391
  localStream === null || localStream === void 0 ? void 0 : localStream.on(_mediaHelpers.LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);
5392
+ localStream === null || localStream === void 0 ? void 0 : localStream.on(_mediaHelpers.LocalStreamEventNames.ConstraintsChange, this.localConstraintsChangeHandler);
5285
5393
  if (!(!this.isMultistream || !localStream)) {
5286
- _context11.next = 1;
5394
+ _context13.next = 1;
5287
5395
  break;
5288
5396
  }
5289
- _context11.next = 1;
5397
+ _context13.next = 1;
5290
5398
  return this.unpublishStream(_internalMediaCore.MediaType.VideoMain, oldStream);
5291
5399
  case 1:
5292
- _context11.next = 2;
5400
+ _context13.next = 2;
5293
5401
  return this.publishStream(_internalMediaCore.MediaType.VideoMain, this.mediaProperties.videoStream);
5294
5402
  case 2:
5295
5403
  case "end":
5296
- return _context11.stop();
5404
+ return _context13.stop();
5297
5405
  }
5298
- }, _callee11, this);
5406
+ }, _callee13, this);
5299
5407
  }));
5300
5408
  function setLocalVideoStream(_x11) {
5301
5409
  return _setLocalVideoStream.apply(this, arguments);
@@ -5314,10 +5422,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5314
5422
  }, {
5315
5423
  key: "setLocalShareVideoStream",
5316
5424
  value: (function () {
5317
- var _setLocalShareVideoStream = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee12(localDisplayStream) {
5425
+ var _setLocalShareVideoStream = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee14(localDisplayStream) {
5318
5426
  var oldStream;
5319
- return _regenerator.default.wrap(function (_context12) {
5320
- while (1) switch (_context12.prev = _context12.next) {
5427
+ return _regenerator.default.wrap(function (_context14) {
5428
+ while (1) switch (_context14.prev = _context14.next) {
5321
5429
  case 0:
5322
5430
  oldStream = this.mediaProperties.shareVideoStream;
5323
5431
  oldStream === null || oldStream === void 0 ? void 0 : oldStream.off(_mediaHelpers.LocalStreamEventNames.SystemMuteStateChange, this.handleShareVideoStreamMuteStateChange);
@@ -5329,19 +5437,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5329
5437
  localDisplayStream === null || localDisplayStream === void 0 ? void 0 : localDisplayStream.on(_mediaHelpers.LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);
5330
5438
  this.mediaProperties.mediaDirection.sendShare = this.mediaProperties.hasLocalShareStream();
5331
5439
  if (!(!this.isMultistream || !localDisplayStream)) {
5332
- _context12.next = 1;
5440
+ _context14.next = 1;
5333
5441
  break;
5334
5442
  }
5335
- _context12.next = 1;
5443
+ _context14.next = 1;
5336
5444
  return this.unpublishStream(_internalMediaCore.MediaType.VideoSlides, oldStream);
5337
5445
  case 1:
5338
- _context12.next = 2;
5446
+ _context14.next = 2;
5339
5447
  return this.publishStream(_internalMediaCore.MediaType.VideoSlides, this.mediaProperties.shareVideoStream);
5340
5448
  case 2:
5341
5449
  case "end":
5342
- return _context12.stop();
5450
+ return _context14.stop();
5343
5451
  }
5344
- }, _callee12, this);
5452
+ }, _callee14, this);
5345
5453
  }));
5346
5454
  function setLocalShareVideoStream(_x12) {
5347
5455
  return _setLocalShareVideoStream.apply(this, arguments);
@@ -5359,10 +5467,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5359
5467
  }, {
5360
5468
  key: "setLocalShareAudioStream",
5361
5469
  value: (function () {
5362
- var _setLocalShareAudioStream = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee13(localSystemAudioStream) {
5470
+ var _setLocalShareAudioStream = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee15(localSystemAudioStream) {
5363
5471
  var oldStream;
5364
- return _regenerator.default.wrap(function (_context13) {
5365
- while (1) switch (_context13.prev = _context13.next) {
5472
+ return _regenerator.default.wrap(function (_context15) {
5473
+ while (1) switch (_context15.prev = _context15.next) {
5366
5474
  case 0:
5367
5475
  oldStream = this.mediaProperties.shareAudioStream;
5368
5476
  oldStream === null || oldStream === void 0 ? void 0 : oldStream.off(_mediaHelpers.StreamEventNames.Ended, this.handleShareAudioStreamEnded);
@@ -5372,19 +5480,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5372
5480
  localSystemAudioStream === null || localSystemAudioStream === void 0 ? void 0 : localSystemAudioStream.on(_mediaHelpers.LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);
5373
5481
  this.mediaProperties.mediaDirection.sendShare = this.mediaProperties.hasLocalShareStream();
5374
5482
  if (!(!this.isMultistream || !localSystemAudioStream)) {
5375
- _context13.next = 1;
5483
+ _context15.next = 1;
5376
5484
  break;
5377
5485
  }
5378
- _context13.next = 1;
5486
+ _context15.next = 1;
5379
5487
  return this.unpublishStream(_internalMediaCore.MediaType.AudioSlides, oldStream);
5380
5488
  case 1:
5381
- _context13.next = 2;
5489
+ _context15.next = 2;
5382
5490
  return this.publishStream(_internalMediaCore.MediaType.AudioSlides, this.mediaProperties.shareAudioStream);
5383
5491
  case 2:
5384
5492
  case "end":
5385
- return _context13.stop();
5493
+ return _context15.stop();
5386
5494
  }
5387
- }, _callee13, this);
5495
+ }, _callee15, this);
5388
5496
  }));
5389
5497
  function setLocalShareAudioStream(_x13) {
5390
5498
  return _setLocalShareAudioStream.apply(this, arguments);
@@ -5425,17 +5533,18 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5425
5533
  }, {
5426
5534
  key: "cleanupLocalStreams",
5427
5535
  value: function cleanupLocalStreams() {
5428
- var _this$mediaProperties7 = this.mediaProperties,
5429
- audioStream = _this$mediaProperties7.audioStream,
5430
- videoStream = _this$mediaProperties7.videoStream,
5431
- shareAudioStream = _this$mediaProperties7.shareAudioStream,
5432
- shareVideoStream = _this$mediaProperties7.shareVideoStream;
5536
+ var _this$mediaProperties8 = this.mediaProperties,
5537
+ audioStream = _this$mediaProperties8.audioStream,
5538
+ videoStream = _this$mediaProperties8.videoStream,
5539
+ shareAudioStream = _this$mediaProperties8.shareAudioStream,
5540
+ shareVideoStream = _this$mediaProperties8.shareVideoStream;
5433
5541
  audioStream === null || audioStream === void 0 ? void 0 : audioStream.off(_mediaHelpers.LocalStreamEventNames.UserMuteStateChange, this.localAudioStreamMuteStateHandler);
5434
5542
  audioStream === null || audioStream === void 0 ? void 0 : audioStream.off(_mediaHelpers.LocalStreamEventNames.SystemMuteStateChange, this.localAudioStreamMuteStateHandler);
5435
5543
  audioStream === null || audioStream === void 0 ? void 0 : audioStream.off(_mediaHelpers.LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);
5436
5544
  videoStream === null || videoStream === void 0 ? void 0 : videoStream.off(_mediaHelpers.LocalStreamEventNames.UserMuteStateChange, this.localVideoStreamMuteStateHandler);
5437
5545
  videoStream === null || videoStream === void 0 ? void 0 : videoStream.off(_mediaHelpers.LocalStreamEventNames.SystemMuteStateChange, this.localVideoStreamMuteStateHandler);
5438
5546
  videoStream === null || videoStream === void 0 ? void 0 : videoStream.off(_mediaHelpers.LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);
5547
+ videoStream === null || videoStream === void 0 ? void 0 : videoStream.off(_mediaHelpers.LocalStreamEventNames.ConstraintsChange, this.localConstraintsChangeHandler);
5439
5548
  shareAudioStream === null || shareAudioStream === void 0 ? void 0 : shareAudioStream.off(_mediaHelpers.StreamEventNames.Ended, this.handleShareAudioStreamEnded);
5440
5549
  shareAudioStream === null || shareAudioStream === void 0 ? void 0 : shareAudioStream.off(_mediaHelpers.LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);
5441
5550
  shareVideoStream === null || shareVideoStream === void 0 ? void 0 : shareVideoStream.off(_mediaHelpers.LocalStreamEventNames.SystemMuteStateChange, this.handleShareVideoStreamMuteStateChange);
@@ -5824,7 +5933,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5824
5933
  }, {
5825
5934
  key: "joinWithMedia",
5826
5935
  value: (function () {
5827
- var _joinWithMedia = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee14() {
5936
+ var _joinWithMedia = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee16() {
5828
5937
  var _this30 = this;
5829
5938
  var options,
5830
5939
  mediaOptions,
@@ -5847,20 +5956,20 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5847
5956
  shouldRetry,
5848
5957
  _error2,
5849
5958
  _error3,
5850
- _args14 = arguments,
5851
- _t9,
5852
- _t0;
5853
- return _regenerator.default.wrap(function (_context14) {
5854
- while (1) switch (_context14.prev = _context14.next) {
5959
+ _args16 = arguments,
5960
+ _t0,
5961
+ _t1;
5962
+ return _regenerator.default.wrap(function (_context16) {
5963
+ while (1) switch (_context16.prev = _context16.next) {
5855
5964
  case 0:
5856
- options = _args14.length > 0 && _args14[0] !== undefined ? _args14[0] : {};
5965
+ options = _args16.length > 0 && _args16[0] !== undefined ? _args16[0] : {};
5857
5966
  mediaOptions = options.mediaOptions, _options$joinOptions = options.joinOptions, joinOptions = _options$joinOptions === void 0 ? {} : _options$joinOptions;
5858
5967
  _this$joinWithMediaRe = this.joinWithMediaRetryInfo, isRetry = _this$joinWithMediaRe.isRetry, prevJoinResponse = _this$joinWithMediaRe.prevJoinResponse;
5859
5968
  if (mediaOptions !== null && mediaOptions !== void 0 && mediaOptions.allowMediaInLobby) {
5860
- _context14.next = 1;
5969
+ _context16.next = 1;
5861
5970
  break;
5862
5971
  }
5863
- return _context14.abrupt("return", _promise.default.reject(new _parameter.default('joinWithMedia() can only be used with allowMediaInLobby set to true')));
5972
+ return _context16.abrupt("return", _promise.default.reject(new _parameter.default('joinWithMedia() can only be used with allowMediaInLobby set to true')));
5864
5973
  case 1:
5865
5974
  this.allowMediaInLobby = true;
5866
5975
  _loggerProxy.default.logger.info('Meeting:index#joinWithMedia called');
@@ -5872,39 +5981,39 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5872
5981
  in case WebRTC is not available at all.
5873
5982
  */
5874
5983
  if (!(_webCapabilities.WebCapabilities.supportsRTCPeerConnection() === _webCapabilities.CapabilityState.NOT_CAPABLE)) {
5875
- _context14.next = 2;
5984
+ _context16.next = 2;
5876
5985
  break;
5877
5986
  }
5878
5987
  throw new _internalMediaCore.Errors.WebrtcApiNotAvailableError('RTCPeerConnection API is not available in this environment');
5879
5988
  case 2:
5880
- _context14.prev = 2;
5989
+ _context16.prev = 2;
5881
5990
  forceTurnDiscovery = false;
5882
5991
  if (joinResponse) {
5883
- _context14.next = 7;
5992
+ _context16.next = 7;
5884
5993
  break;
5885
5994
  }
5886
- _context14.next = 3;
5995
+ _context16.next = 3;
5887
5996
  return this.roap.generateTurnDiscoveryRequestMessage(this, true);
5888
5997
  case 3:
5889
- turnDiscoveryRequest = _context14.sent;
5998
+ turnDiscoveryRequest = _context16.sent;
5890
5999
  turnDiscoverySkippedReason = turnDiscoveryRequest.turnDiscoverySkippedReason;
5891
6000
  joinOptions.roapMessage = turnDiscoveryRequest.roapMessage;
5892
6001
  _loggerProxy.default.logger.info('Meeting:index#joinWithMedia ---> calling join with joinOptions, ', joinOptions);
5893
- _context14.next = 4;
6002
+ _context16.next = 4;
5894
6003
  return this.join(joinOptions);
5895
6004
  case 4:
5896
- joinResponse = _context14.sent;
6005
+ joinResponse = _context16.sent;
5897
6006
  joined = true;
5898
6007
 
5899
6008
  // if we sent out TURN discovery Roap message with join, process the TURN discovery response
5900
6009
  if (!joinOptions.roapMessage) {
5901
- _context14.next = 6;
6010
+ _context16.next = 6;
5902
6011
  break;
5903
6012
  }
5904
- _context14.next = 5;
6013
+ _context16.next = 5;
5905
6014
  return this.roap.handleTurnDiscoveryHttpResponse(this, joinResponse);
5906
6015
  case 5:
5907
- _yield$this$roap$hand = _context14.sent;
6016
+ _yield$this$roap$hand = _context16.sent;
5908
6017
  turnServerInfo = _yield$this$roap$hand.turnServerInfo;
5909
6018
  turnDiscoverySkippedReason = _yield$this$roap$hand.turnDiscoverySkippedReason;
5910
6019
  this.turnDiscoverySkippedReason = turnDiscoverySkippedReason;
@@ -5913,7 +6022,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5913
6022
  this.roap.abortTurnDiscovery();
5914
6023
  }
5915
6024
  case 6:
5916
- _context14.next = 8;
6025
+ _context16.next = 8;
5917
6026
  break;
5918
6027
  case 7:
5919
6028
  // This is a retry, when join succeeded but addMedia failed, so we'll just call addMedia() again,
@@ -5921,43 +6030,43 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5921
6030
  forceTurnDiscovery = true;
5922
6031
  joined = true;
5923
6032
  case 8:
5924
- _context14.next = 9;
6033
+ _context16.next = 9;
5925
6034
  return this.addMediaInternal(function () {
5926
6035
  return _this30.joinWithMediaRetryInfo.isRetry ? 'JOIN_MEETING_FINAL' : 'JOIN_MEETING_RETRY';
5927
6036
  }, turnServerInfo, forceTurnDiscovery, mediaOptions);
5928
6037
  case 9:
5929
- mediaResponse = _context14.sent;
6038
+ mediaResponse = _context16.sent;
5930
6039
  this.joinWithMediaRetryInfo = {
5931
6040
  isRetry: false,
5932
6041
  prevJoinResponse: undefined
5933
6042
  };
5934
- return _context14.abrupt("return", {
6043
+ return _context16.abrupt("return", {
5935
6044
  join: joinResponse,
5936
6045
  media: mediaResponse,
5937
6046
  multistreamEnabled: this.isMultistream
5938
6047
  });
5939
6048
  case 10:
5940
- _context14.prev = 10;
5941
- _t9 = _context14["catch"](2);
5942
- _loggerProxy.default.logger.error('Meeting:index#joinWithMedia --> ', _t9);
6049
+ _context16.prev = 10;
6050
+ _t0 = _context16["catch"](2);
6051
+ _loggerProxy.default.logger.error('Meeting:index#joinWithMedia --> ', _t0);
5943
6052
  this.roap.abortTurnDiscovery();
5944
6053
 
5945
6054
  // if this was the first attempt, let's do a retry
5946
6055
  shouldRetry = !isRetry;
5947
- if (_internalPluginMetrics.CallDiagnosticUtils.isSdpOfferCreationError(_t9) || _internalPluginMetrics.CallDiagnosticUtils.isWebrtcApiNotAvailableError(_t9)) {
6056
+ if (_internalPluginMetrics.CallDiagnosticUtils.isSdpOfferCreationError(_t0) || _internalPluginMetrics.CallDiagnosticUtils.isWebrtcApiNotAvailableError(_t0)) {
5948
6057
  // errors related to offer creation (for example missing H264 codec) will happen again no matter how many times we try,
5949
6058
  // so there is no point doing a retry
5950
6059
  shouldRetry = false;
5951
6060
  }
5952
- if (_internalPluginMetrics.CallDiagnosticUtils.isBrowserMediaError(_t9)) {
6061
+ if (_internalPluginMetrics.CallDiagnosticUtils.isBrowserMediaError(_t0)) {
5953
6062
  shouldRetry = false;
5954
6063
  // eslint-disable-next-line no-ex-assign
5955
- _t9 = (0, _lodash.merge)({
6064
+ _t0 = (0, _lodash.merge)({
5956
6065
  error: {
5957
6066
  body: {
5958
- errorCode: _internalPluginMetrics.CallDiagnosticUtils.getBrowserMediaErrorCode(_t9),
5959
- message: (_error2 = _t9) === null || _error2 === void 0 ? void 0 : _error2.message,
5960
- name: (_error3 = _t9) === null || _error3 === void 0 ? void 0 : _error3.name
6067
+ errorCode: _internalPluginMetrics.CallDiagnosticUtils.getBrowserMediaErrorCode(_t0),
6068
+ message: (_error2 = _t0) === null || _error2 === void 0 ? void 0 : _error2.message,
6069
+ name: (_error3 = _t0) === null || _error3 === void 0 ? void 0 : _error3.name
5961
6070
  }
5962
6071
  }
5963
6072
  });
@@ -5965,54 +6074,54 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5965
6074
 
5966
6075
  // we only want to call leave if join was successful and this was a retry or we won't be doing any more retries
5967
6076
  if (!(joined && (isRetry || !shouldRetry))) {
5968
- _context14.next = 14;
6077
+ _context16.next = 14;
5969
6078
  break;
5970
6079
  }
5971
- _context14.prev = 11;
5972
- _context14.next = 12;
6080
+ _context16.prev = 11;
6081
+ _context16.next = 12;
5973
6082
  return this.leave({
5974
6083
  resourceId: joinOptions === null || joinOptions === void 0 ? void 0 : joinOptions.resourceId,
5975
6084
  reason: 'joinWithMedia failure'
5976
6085
  });
5977
6086
  case 12:
5978
- _context14.next = 14;
6087
+ _context16.next = 14;
5979
6088
  break;
5980
6089
  case 13:
5981
- _context14.prev = 13;
5982
- _t0 = _context14["catch"](11);
5983
- _loggerProxy.default.logger.error('Meeting:index#joinWithMedia --> leave error', _t0);
5984
- leaveError = _t0;
6090
+ _context16.prev = 13;
6091
+ _t1 = _context16["catch"](11);
6092
+ _loggerProxy.default.logger.error('Meeting:index#joinWithMedia --> leave error', _t1);
6093
+ leaveError = _t1;
5985
6094
  case 14:
5986
6095
  _metrics.default.sendBehavioralMetric(_constants2.default.JOIN_WITH_MEDIA_FAILURE, {
5987
6096
  correlation_id: this.correlationId,
5988
6097
  locus_id: (_this$locusUrl = this.locusUrl) === null || _this$locusUrl === void 0 ? void 0 : _this$locusUrl.split('/').pop(),
5989
6098
  // if join fails, we may end up with no locusUrl
5990
- reason: _t9.message,
5991
- stack: _t9.stack,
6099
+ reason: _t0.message,
6100
+ stack: _t0.stack,
5992
6101
  leaveErrorReason: (_leaveError = leaveError) === null || _leaveError === void 0 ? void 0 : _leaveError.message,
5993
6102
  isRetry: isRetry
5994
6103
  }, {
5995
- type: _t9.name
6104
+ type: _t0.name
5996
6105
  });
5997
6106
  if (!shouldRetry) {
5998
- _context14.next = 15;
6107
+ _context16.next = 15;
5999
6108
  break;
6000
6109
  }
6001
6110
  _loggerProxy.default.logger.warn('Meeting:index#joinWithMedia --> retrying call to joinWithMedia');
6002
6111
  this.joinWithMediaRetryInfo.isRetry = true;
6003
6112
  this.joinWithMediaRetryInfo.prevJoinResponse = joinResponse;
6004
- return _context14.abrupt("return", this.joinWithMedia(options));
6113
+ return _context16.abrupt("return", this.joinWithMedia(options));
6005
6114
  case 15:
6006
6115
  this.joinWithMediaRetryInfo = {
6007
6116
  isRetry: false,
6008
6117
  prevJoinResponse: undefined
6009
6118
  };
6010
- throw _t9;
6119
+ throw _t0;
6011
6120
  case 16:
6012
6121
  case "end":
6013
- return _context14.stop();
6122
+ return _context16.stop();
6014
6123
  }
6015
- }, _callee14, this, [[2, 10], [11, 13]]);
6124
+ }, _callee16, this, [[2, 10], [11, 13]]);
6016
6125
  }));
6017
6126
  function joinWithMedia() {
6018
6127
  return _joinWithMedia.apply(this, arguments);
@@ -6042,20 +6151,20 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6042
6151
  return _promise.default.reject(new _parameter.default('Cannot reconnect, Media has not established to reconnect'));
6043
6152
  }
6044
6153
  this.cleanUpBeforeReconnection();
6045
- return this.reconnectionManager.reconnect(options, /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee15() {
6046
- return _regenerator.default.wrap(function (_context15) {
6047
- while (1) switch (_context15.prev = _context15.next) {
6154
+ return this.reconnectionManager.reconnect(options, /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee17() {
6155
+ return _regenerator.default.wrap(function (_context17) {
6156
+ while (1) switch (_context17.prev = _context17.next) {
6048
6157
  case 0:
6049
- _context15.next = 1;
6158
+ _context17.next = 1;
6050
6159
  return _this31.waitForRemoteSDPAnswer();
6051
6160
  case 1:
6052
- _context15.next = 2;
6161
+ _context17.next = 2;
6053
6162
  return _this31.waitForMediaConnectionConnected();
6054
6163
  case 2:
6055
6164
  case "end":
6056
- return _context15.stop();
6165
+ return _context17.stop();
6057
6166
  }
6058
- }, _callee15);
6167
+ }, _callee17);
6059
6168
  }))).then(function () {
6060
6169
  _loggerProxy.default.logger.log('Meeting:index#reconnect --> Meeting reconnect success');
6061
6170
  }).catch(function (error) {
@@ -6095,8 +6204,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6095
6204
  }, {
6096
6205
  key: "isReactionsSupported",
6097
6206
  value: function isReactionsSupported() {
6098
- var _this$locusInfo5, _this$locusInfo5$cont;
6099
- if ((_this$locusInfo5 = this.locusInfo) !== null && _this$locusInfo5 !== void 0 && (_this$locusInfo5$cont = _this$locusInfo5.controls) !== null && _this$locusInfo5$cont !== void 0 && _this$locusInfo5$cont.reactions.enabled) {
6207
+ var _this$locusInfo6, _this$locusInfo6$cont;
6208
+ if ((_this$locusInfo6 = this.locusInfo) !== null && _this$locusInfo6 !== void 0 && (_this$locusInfo6$cont = _this$locusInfo6.controls) !== null && _this$locusInfo6$cont !== void 0 && _this$locusInfo6$cont.reactions.enabled) {
6100
6209
  return true;
6101
6210
  }
6102
6211
  _loggerProxy.default.logger.error('Meeting:index#isReactionsSupported --> Reactions is not supported');
@@ -6196,47 +6305,47 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6196
6305
  }, {
6197
6306
  key: "startTranscription",
6198
6307
  value: (function () {
6199
- var _startTranscription = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee16(options) {
6200
- var _t1;
6201
- return _regenerator.default.wrap(function (_context16) {
6202
- while (1) switch (_context16.prev = _context16.next) {
6308
+ var _startTranscription = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee18(options) {
6309
+ var _t10;
6310
+ return _regenerator.default.wrap(function (_context18) {
6311
+ while (1) switch (_context18.prev = _context18.next) {
6203
6312
  case 0:
6204
6313
  if (!this.isJoined()) {
6205
- _context16.next = 5;
6314
+ _context18.next = 5;
6206
6315
  break;
6207
6316
  }
6208
6317
  _loggerProxy.default.logger.info('Meeting:index#startTranscription --> Attempting to enable transcription!');
6209
- _context16.prev = 1;
6318
+ _context18.prev = 1;
6210
6319
  if (!this.areVoiceaEventsSetup) {
6211
6320
  this.setUpVoiceaListeners();
6212
6321
  }
6213
6322
 
6214
6323
  // @ts-ignore
6215
- _context16.next = 2;
6324
+ _context18.next = 2;
6216
6325
  return this.webex.internal.voicea.turnOnCaptions(options === null || options === void 0 ? void 0 : options.spokenLanguage);
6217
6326
  case 2:
6218
- _context16.next = 4;
6327
+ _context18.next = 4;
6219
6328
  break;
6220
6329
  case 3:
6221
- _context16.prev = 3;
6222
- _t1 = _context16["catch"](1);
6223
- _loggerProxy.default.logger.error("Meeting:index#startTranscription --> ".concat(_t1));
6330
+ _context18.prev = 3;
6331
+ _t10 = _context18["catch"](1);
6332
+ _loggerProxy.default.logger.error("Meeting:index#startTranscription --> ".concat(_t10));
6224
6333
  _metrics.default.sendBehavioralMetric(_constants2.default.RECEIVE_TRANSCRIPTION_FAILURE, {
6225
6334
  correlation_id: this.correlationId,
6226
- reason: _t1.message,
6227
- stack: _t1.stack
6335
+ reason: _t10.message,
6336
+ stack: _t10.stack
6228
6337
  });
6229
6338
  case 4:
6230
- _context16.next = 6;
6339
+ _context18.next = 6;
6231
6340
  break;
6232
6341
  case 5:
6233
6342
  _loggerProxy.default.logger.error("Meeting:index#startTranscription --> meeting joined : ".concat(this.isJoined()));
6234
6343
  throw new Error('Meeting is not joined');
6235
6344
  case 6:
6236
6345
  case "end":
6237
- return _context16.stop();
6346
+ return _context18.stop();
6238
6347
  }
6239
- }, _callee16, this, [[1, 3]]);
6348
+ }, _callee18, this, [[1, 3]]);
6240
6349
  }));
6241
6350
  function startTranscription(_x14) {
6242
6351
  return _startTranscription.apply(this, arguments);
@@ -6302,7 +6411,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6302
6411
  * Scenario D: Joining any other way (sip, pstn, conversationUrl, link just need to specify resourceId)
6303
6412
  */
6304
6413
  function () {
6305
- var _join = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee17() {
6414
+ var _join = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee19() {
6306
6415
  var _this34 = this;
6307
6416
  var options,
6308
6417
  errorMessage,
@@ -6313,26 +6422,26 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6313
6422
  _error4,
6314
6423
  _errorMessage3,
6315
6424
  _error5,
6316
- _args17 = arguments,
6317
- _t10;
6318
- return _regenerator.default.wrap(function (_context17) {
6319
- while (1) switch (_context17.prev = _context17.next) {
6425
+ _args19 = arguments,
6426
+ _t11;
6427
+ return _regenerator.default.wrap(function (_context19) {
6428
+ while (1) switch (_context19.prev = _context19.next) {
6320
6429
  case 0:
6321
- options = _args17.length > 0 && _args17[0] !== undefined ? _args17[0] : {};
6430
+ options = _args19.length > 0 && _args19[0] !== undefined ? _args19[0] : {};
6322
6431
  if (this.webex.meetings.registered) {
6323
- _context17.next = 1;
6432
+ _context19.next = 1;
6324
6433
  break;
6325
6434
  }
6326
6435
  errorMessage = 'Meeting:index#join --> Device not registered';
6327
6436
  error = new Error(errorMessage);
6328
6437
  _loggerProxy.default.logger.error(errorMessage);
6329
- return _context17.abrupt("return", _promise.default.reject(error));
6438
+ return _context19.abrupt("return", _promise.default.reject(error));
6330
6439
  case 1:
6331
6440
  if (!this.deferJoin) {
6332
- _context17.next = 2;
6441
+ _context19.next = 2;
6333
6442
  break;
6334
6443
  }
6335
- return _context17.abrupt("return", this.deferJoin);
6444
+ return _context19.abrupt("return", this.deferJoin);
6336
6445
  case 2:
6337
6446
  // Create a deferred promise for a consistent resolve value from utils.
6338
6447
  // This also prevents redundant API calls.
@@ -6384,15 +6493,15 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6384
6493
  this.wirelessShare = true;
6385
6494
  }
6386
6495
  if (!options.meetingQuality) {
6387
- _context17.next = 6;
6496
+ _context19.next = 6;
6388
6497
  break;
6389
6498
  }
6390
6499
  if (!(typeof options.meetingQuality === 'string')) {
6391
- _context17.next = 4;
6500
+ _context19.next = 4;
6392
6501
  break;
6393
6502
  }
6394
6503
  if (_constants.QUALITY_LEVELS[options.meetingQuality]) {
6395
- _context17.next = 3;
6504
+ _context19.next = 3;
6396
6505
  break;
6397
6506
  }
6398
6507
  _errorMessage2 = "Meeting:index#join --> ".concat(options.meetingQuality, " not defined");
@@ -6400,16 +6509,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6400
6509
  _loggerProxy.default.logger.error(_errorMessage2);
6401
6510
  joinFailed(_error4);
6402
6511
  this.deferJoin = undefined;
6403
- return _context17.abrupt("return", _promise.default.reject(_error4));
6512
+ return _context19.abrupt("return", _promise.default.reject(_error4));
6404
6513
  case 3:
6405
6514
  this.mediaProperties.setRemoteQualityLevel(options.meetingQuality);
6406
6515
  case 4:
6407
6516
  if (!((0, _typeof2.default)(options.meetingQuality) === 'object')) {
6408
- _context17.next = 6;
6517
+ _context19.next = 6;
6409
6518
  break;
6410
6519
  }
6411
6520
  if (_constants.QUALITY_LEVELS[options.meetingQuality.remote]) {
6412
- _context17.next = 5;
6521
+ _context19.next = 5;
6413
6522
  break;
6414
6523
  }
6415
6524
  _errorMessage3 = "Meeting:index#join --> ".concat(options.meetingQuality.remote, " not defined");
@@ -6417,42 +6526,42 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6417
6526
  _error5 = new Error(_errorMessage3);
6418
6527
  joinFailed(_error5);
6419
6528
  this.deferJoin = undefined;
6420
- return _context17.abrupt("return", _promise.default.reject(new Error(_errorMessage3)));
6529
+ return _context19.abrupt("return", _promise.default.reject(new Error(_errorMessage3)));
6421
6530
  case 5:
6422
6531
  if (options.meetingQuality.remote) {
6423
6532
  this.mediaProperties.setRemoteQualityLevel(options.meetingQuality.remote);
6424
6533
  }
6425
6534
  case 6:
6426
6535
  this.isMultistream = !!options.enableMultistream;
6427
- _context17.prev = 7;
6428
- _context17.next = 8;
6536
+ _context19.prev = 7;
6537
+ _context19.next = 8;
6429
6538
  return this.checkAndRefreshPermissionToken(_constants.MEETING_PERMISSION_TOKEN_REFRESH_THRESHOLD_IN_SEC, _constants.MEETING_PERMISSION_TOKEN_REFRESH_REASON);
6430
6539
  case 8:
6431
- _context17.next = 10;
6540
+ _context19.next = 10;
6432
6541
  break;
6433
6542
  case 9:
6434
- _context17.prev = 9;
6435
- _t10 = _context17["catch"](7);
6436
- _loggerProxy.default.logger.error('Meeting:index#join --> Failed to refresh permission token:', _t10);
6437
- if (!(_t10 instanceof _captchaError.default || _t10 instanceof _passwordError.default || _t10 instanceof _permission.default)) {
6438
- _context17.next = 10;
6543
+ _context19.prev = 9;
6544
+ _t11 = _context19["catch"](7);
6545
+ _loggerProxy.default.logger.error('Meeting:index#join --> Failed to refresh permission token:', _t11);
6546
+ if (!(_t11 instanceof _captchaError.default || _t11 instanceof _passwordError.default || _t11 instanceof _permission.default)) {
6547
+ _context19.next = 10;
6439
6548
  break;
6440
6549
  }
6441
- this.meetingFiniteStateMachine.fail(_t10);
6550
+ this.meetingFiniteStateMachine.fail(_t11);
6442
6551
 
6443
6552
  // Upload logs on refreshpermissionToken refresh Failure
6444
6553
  _triggerProxy.default.trigger(this, {
6445
6554
  file: 'meeting/index',
6446
6555
  function: 'join'
6447
6556
  }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, this);
6448
- joinFailed(_t10);
6557
+ joinFailed(_t11);
6449
6558
  this.deferJoin = undefined;
6450
6559
 
6451
6560
  // if refresh permission token requires captcha, password or permission, we are throwing the errors
6452
6561
  // and bubble it up to client
6453
- return _context17.abrupt("return", _promise.default.reject(_t10));
6562
+ return _context19.abrupt("return", _promise.default.reject(_t11));
6454
6563
  case 10:
6455
- return _context17.abrupt("return", _util2.default.joinMeetingOptions(this, options).then(function (join) {
6564
+ return _context19.abrupt("return", _util2.default.joinMeetingOptions(this, options).then(function (join) {
6456
6565
  _this34.meetingFiniteStateMachine.join();
6457
6566
  _this34.setupLocusMediaRequest();
6458
6567
 
@@ -6505,9 +6614,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6505
6614
  }));
6506
6615
  case 11:
6507
6616
  case "end":
6508
- return _context17.stop();
6617
+ return _context19.stop();
6509
6618
  }
6510
- }, _callee17, this, [[7, 9]]);
6619
+ }, _callee19, this, [[7, 9]]);
6511
6620
  }));
6512
6621
  function join() {
6513
6622
  return _join.apply(this, arguments);
@@ -6556,28 +6665,36 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6556
6665
  this.llmHealthCheckTimer = undefined;
6557
6666
  }
6558
6667
  }
6559
-
6668
+ }, {
6669
+ key: "updateLLMConnection",
6670
+ value: (
6560
6671
  /**
6561
6672
  * Connects to low latency mercury and reconnects if the address has changed
6562
6673
  * It will also disconnect if called when the meeting has ended
6563
6674
  * @param {String} datachannelUrl
6564
6675
  * @returns {Promise}
6565
6676
  */
6566
- }, {
6567
- key: "updateLLMConnection",
6568
- value: (function () {
6569
- var _updateLLMConnection = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee18() {
6677
+ function () {
6678
+ var _updateLLMConnection = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee20() {
6570
6679
  var _this36 = this;
6571
- var _this$locusInfo6, url, _this$locusInfo6$info, _this$locusInfo6$info2, datachannelUrl, practiceSessionDatachannelUrl, isJoined, dataChannelUrl;
6572
- return _regenerator.default.wrap(function (_context18) {
6573
- while (1) switch (_context18.prev = _context18.next) {
6680
+ var _ref40, _ref40$url, url, _ref40$info, _ref40$info2, _ref40$info2$datachan, datachannelUrl, _ref40$self, _ref40$self2, _ref40$self2$datachan, datachannelToken, isJoined, currentToken, finalToken, dataChannelUrl;
6681
+ return _regenerator.default.wrap(function (_context20) {
6682
+ while (1) switch (_context20.prev = _context20.next) {
6574
6683
  case 0:
6575
6684
  // @ts-ignore - Fix type
6576
- _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, practiceSessionDatachannelUrl = _this$locusInfo6$info2.practiceSessionDatachannelUrl;
6577
- isJoined = this.isJoined(); // webinar panelist should use new data channel in practice session
6578
- dataChannelUrl = this.webinar.isJoinPracticeSessionDataChannel() && practiceSessionDatachannelUrl ? practiceSessionDatachannelUrl : datachannelUrl; // @ts-ignore - Fix type
6685
+ _ref40 = this.locusInfo || {}, _ref40$url = _ref40.url, url = _ref40$url === void 0 ? undefined : _ref40$url, _ref40$info = _ref40.info, _ref40$info2 = _ref40$info === void 0 ? {} : _ref40$info, _ref40$info2$datachan = _ref40$info2.datachannelUrl, datachannelUrl = _ref40$info2$datachan === void 0 ? undefined : _ref40$info2$datachan, _ref40$self = _ref40.self, _ref40$self2 = _ref40$self === void 0 ? {} : _ref40$self, _ref40$self2$datachan = _ref40$self2.datachannelToken, datachannelToken = _ref40$self2$datachan === void 0 ? undefined : _ref40$self2$datachan;
6686
+ isJoined = this.isJoined(); // @ts-ignore
6687
+ currentToken = this.webex.internal.llm.getDatachannelToken(_internalPluginLlm.DataChannelTokenType.Default);
6688
+ finalToken = currentToken !== null && currentToken !== void 0 ? currentToken : datachannelToken;
6689
+ if (!currentToken && datachannelToken) {
6690
+ // @ts-ignore
6691
+ this.webex.internal.llm.setDatachannelToken(datachannelToken, _internalPluginLlm.DataChannelTokenType.Default);
6692
+ }
6693
+
6694
+ // webinar panelist should use new data channel in practice session
6695
+ dataChannelUrl = datachannelUrl; // @ts-ignore - Fix type
6579
6696
  if (!this.webex.internal.llm.isConnected()) {
6580
- _context18.next = 3;
6697
+ _context20.next = 2;
6581
6698
  break;
6582
6699
  }
6583
6700
  if (!(
@@ -6585,30 +6702,23 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6585
6702
  url === this.webex.internal.llm.getLocusUrl() &&
6586
6703
  // @ts-ignore - Fix type
6587
6704
  dataChannelUrl === this.webex.internal.llm.getDatachannelUrl() && isJoined)) {
6588
- _context18.next = 1;
6705
+ _context20.next = 1;
6589
6706
  break;
6590
6707
  }
6591
- return _context18.abrupt("return", undefined);
6708
+ return _context20.abrupt("return", undefined);
6592
6709
  case 1:
6593
- _context18.next = 2;
6594
- return this.webex.internal.llm.disconnectLLM(isJoined ? {
6595
- code: 3050,
6596
- reason: 'done (permanent)'
6597
- } : undefined);
6710
+ _context20.next = 2;
6711
+ return this.cleanupLLMConneciton({
6712
+ removeOnlineListener: false
6713
+ });
6598
6714
  case 2:
6599
- // @ts-ignore - Fix type
6600
- this.webex.internal.llm.off('event:relay.event', this.processRelayEvent);
6601
- // @ts-ignore - Fix type
6602
- this.webex.internal.llm.off(_constants.LOCUS_LLM_EVENT, this.processLocusLLMEvent);
6603
- this.clearLLMHealthCheckTimer();
6604
- case 3:
6605
6715
  if (isJoined) {
6606
- _context18.next = 4;
6716
+ _context20.next = 3;
6607
6717
  break;
6608
6718
  }
6609
- return _context18.abrupt("return", undefined);
6610
- case 4:
6611
- return _context18.abrupt("return", this.webex.internal.llm.registerAndConnect(url, dataChannelUrl).then(function (registerAndConnectResult) {
6719
+ return _context20.abrupt("return", undefined);
6720
+ case 3:
6721
+ return _context20.abrupt("return", this.webex.internal.llm.registerAndConnect(url, dataChannelUrl, finalToken).then(function (registerAndConnectResult) {
6612
6722
  // @ts-ignore - Fix type
6613
6723
  _this36.webex.internal.llm.off('event:relay.event', _this36.processRelayEvent);
6614
6724
  // @ts-ignore - Fix type
@@ -6621,11 +6731,11 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6621
6731
  _this36.startLLMHealthCheckTimer();
6622
6732
  return _promise.default.resolve(registerAndConnectResult);
6623
6733
  }));
6624
- case 5:
6734
+ case 4:
6625
6735
  case "end":
6626
- return _context18.stop();
6736
+ return _context20.stop();
6627
6737
  }
6628
- }, _callee18, this);
6738
+ }, _callee20, this);
6629
6739
  }));
6630
6740
  function updateLLMConnection() {
6631
6741
  return _updateLLMConnection.apply(this, arguments);
@@ -6811,17 +6921,17 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6811
6921
  meetingId: this.id
6812
6922
  }
6813
6923
  });
6814
- this.locusInfo.once(_constants.LOCUSINFO.EVENTS.SELF_OBSERVING, /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee19() {
6815
- var mediaSettings, _t11;
6816
- return _regenerator.default.wrap(function (_context19) {
6817
- while (1) switch (_context19.prev = _context19.next) {
6924
+ this.locusInfo.once(_constants.LOCUSINFO.EVENTS.SELF_OBSERVING, /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee21() {
6925
+ var mediaSettings, _t12;
6926
+ return _regenerator.default.wrap(function (_context21) {
6927
+ while (1) switch (_context21.prev = _context21.next) {
6818
6928
  case 0:
6819
- _context19.prev = 0;
6929
+ _context21.prev = 0;
6820
6930
  if (!(_this40.screenShareFloorState === ScreenShareFloorStatus.GRANTED)) {
6821
- _context19.next = 1;
6931
+ _context21.next = 1;
6822
6932
  break;
6823
6933
  }
6824
- _context19.next = 1;
6934
+ _context21.next = 1;
6825
6935
  return _this40.releaseScreenShareFloor();
6826
6936
  case 1:
6827
6937
  mediaSettings = {
@@ -6840,23 +6950,23 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6840
6950
  // when a move to is intiated by the client , Locus delets the existing media node from the server as soon the device answers the meeting
6841
6951
  // once the device answers we close the old connection and create new media server connection with only share enabled
6842
6952
  if (!_this40.statsAnalyzer) {
6843
- _context19.next = 2;
6953
+ _context21.next = 2;
6844
6954
  break;
6845
6955
  }
6846
- _context19.next = 2;
6956
+ _context21.next = 2;
6847
6957
  return _this40.statsAnalyzer.stopAnalyzer();
6848
6958
  case 2:
6849
- _context19.next = 3;
6959
+ _context21.next = 3;
6850
6960
  return _this40.closeRemoteStreams();
6851
6961
  case 3:
6852
- _context19.next = 4;
6962
+ _context21.next = 4;
6853
6963
  return _this40.closePeerConnections();
6854
6964
  case 4:
6855
6965
  _this40.cleanupLocalStreams();
6856
6966
  _this40.unsetRemoteStreams();
6857
6967
  _this40.unsetPeerConnections();
6858
6968
  _this40.reconnectionManager.cleanUp();
6859
- _context19.next = 5;
6969
+ _context21.next = 5;
6860
6970
  return _this40.addMedia({
6861
6971
  audioEnabled: false,
6862
6972
  videoEnabled: false,
@@ -6865,24 +6975,24 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6865
6975
  case 5:
6866
6976
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_TO_SUCCESS);
6867
6977
  _this40.isMoveToInProgress = false;
6868
- _context19.next = 7;
6978
+ _context21.next = 7;
6869
6979
  break;
6870
6980
  case 6:
6871
- _context19.prev = 6;
6872
- _t11 = _context19["catch"](0);
6873
- _loggerProxy.default.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId', _t11);
6981
+ _context21.prev = 6;
6982
+ _t12 = _context21["catch"](0);
6983
+ _loggerProxy.default.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId', _t12);
6874
6984
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_TO_FAILURE, {
6875
6985
  correlation_id: _this40.correlationId,
6876
6986
  locus_id: _this40.locusUrl.split('/').pop(),
6877
- reason: _t11.message,
6878
- stack: _t11.stack
6987
+ reason: _t12.message,
6988
+ stack: _t12.stack
6879
6989
  });
6880
6990
  _this40.isMoveToInProgress = false;
6881
6991
  case 7:
6882
6992
  case "end":
6883
- return _context19.stop();
6993
+ return _context21.stop();
6884
6994
  }
6885
- }, _callee19, null, [[0, 6]]);
6995
+ }, _callee21, null, [[0, 6]]);
6886
6996
  })));
6887
6997
  _loggerProxy.default.logger.info('Meeting:index#moveTo --> Initated moved to using resourceId', resourceId);
6888
6998
 
@@ -6970,10 +7080,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6970
7080
  }, {
6971
7081
  key: "createMediaConnection",
6972
7082
  value: (function () {
6973
- var _createMediaConnection = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee20(turnServerInfo, bundlePolicy) {
7083
+ var _createMediaConnection = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee22(turnServerInfo, bundlePolicy) {
6974
7084
  var mc, audioEnabled, videoEnabled, shareEnabled;
6975
- return _regenerator.default.wrap(function (_context20) {
6976
- while (1) switch (_context20.prev = _context20.next) {
7085
+ return _regenerator.default.wrap(function (_context22) {
7086
+ while (1) switch (_context22.prev = _context22.next) {
6977
7087
  case 0:
6978
7088
  this.rtcMetrics = this.isMultistream ?
6979
7089
  // @ts-ignore
@@ -7015,40 +7125,40 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7015
7125
 
7016
7126
  // publish the streams
7017
7127
  if (!this.mediaProperties.audioStream) {
7018
- _context20.next = 1;
7128
+ _context22.next = 1;
7019
7129
  break;
7020
7130
  }
7021
7131
  this.setSendNamedMediaGroup(_internalMediaCore.MediaType.AudioMain);
7022
- _context20.next = 1;
7132
+ _context22.next = 1;
7023
7133
  return this.publishStream(_internalMediaCore.MediaType.AudioMain, this.mediaProperties.audioStream);
7024
7134
  case 1:
7025
7135
  if (!this.mediaProperties.videoStream) {
7026
- _context20.next = 2;
7136
+ _context22.next = 2;
7027
7137
  break;
7028
7138
  }
7029
- _context20.next = 2;
7139
+ _context22.next = 2;
7030
7140
  return this.publishStream(_internalMediaCore.MediaType.VideoMain, this.mediaProperties.videoStream);
7031
7141
  case 2:
7032
7142
  if (!this.mediaProperties.shareVideoStream) {
7033
- _context20.next = 3;
7143
+ _context22.next = 3;
7034
7144
  break;
7035
7145
  }
7036
- _context20.next = 3;
7146
+ _context22.next = 3;
7037
7147
  return this.publishStream(_internalMediaCore.MediaType.VideoSlides, this.mediaProperties.shareVideoStream);
7038
7148
  case 3:
7039
7149
  if (!(this.isMultistream && this.mediaProperties.shareAudioStream)) {
7040
- _context20.next = 4;
7150
+ _context22.next = 4;
7041
7151
  break;
7042
7152
  }
7043
- _context20.next = 4;
7153
+ _context22.next = 4;
7044
7154
  return this.publishStream(_internalMediaCore.MediaType.AudioSlides, this.mediaProperties.shareAudioStream);
7045
7155
  case 4:
7046
- return _context20.abrupt("return", mc);
7156
+ return _context22.abrupt("return", mc);
7047
7157
  case 5:
7048
7158
  case "end":
7049
- return _context20.stop();
7159
+ return _context22.stop();
7050
7160
  }
7051
- }, _callee20, this);
7161
+ }, _callee22, this);
7052
7162
  }));
7053
7163
  function createMediaConnection(_x15, _x16) {
7054
7164
  return _createMediaConnection.apply(this, arguments);
@@ -7088,11 +7198,11 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7088
7198
  }, {
7089
7199
  key: "setUpLocalStreamReferences",
7090
7200
  value: (function () {
7091
- var _setUpLocalStreamReferences = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee21(localStreams) {
7201
+ var _setUpLocalStreamReferences = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee23(localStreams) {
7092
7202
  var _localStreams$microph, _localStreams$camera, _localStreams$screenS, _localStreams$screenS2, _localStreams$screenS3, _localStreams$screenS4, _localStreams$screenS5, _localStreams$screenS6;
7093
- var setUpStreamPromises, _t12;
7094
- return _regenerator.default.wrap(function (_context21) {
7095
- while (1) switch (_context21.prev = _context21.next) {
7203
+ var setUpStreamPromises, _t13;
7204
+ return _regenerator.default.wrap(function (_context23) {
7205
+ while (1) switch (_context23.prev = _context23.next) {
7096
7206
  case 0:
7097
7207
  setUpStreamPromises = [];
7098
7208
  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') {
@@ -7107,22 +7217,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7107
7217
  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') {
7108
7218
  setUpStreamPromises.push(this.setLocalShareAudioStream(localStreams.screenShare.audio));
7109
7219
  }
7110
- _context21.prev = 1;
7111
- _context21.next = 2;
7220
+ _context23.prev = 1;
7221
+ _context23.next = 2;
7112
7222
  return _promise.default.all(setUpStreamPromises);
7113
7223
  case 2:
7114
- _context21.next = 4;
7224
+ _context23.next = 4;
7115
7225
  break;
7116
7226
  case 3:
7117
- _context21.prev = 3;
7118
- _t12 = _context21["catch"](1);
7119
- _loggerProxy.default.logger.error("Meeting:index#addMedia():setUpLocalStreamReferences --> Error , ", _t12);
7120
- throw _t12;
7227
+ _context23.prev = 3;
7228
+ _t13 = _context23["catch"](1);
7229
+ _loggerProxy.default.logger.error("Meeting:index#addMedia():setUpLocalStreamReferences --> Error , ", _t13);
7230
+ throw _t13;
7121
7231
  case 4:
7122
7232
  case "end":
7123
- return _context21.stop();
7233
+ return _context23.stop();
7124
7234
  }
7125
- }, _callee21, this, [[1, 3]]);
7235
+ }, _callee23, this, [[1, 3]]);
7126
7236
  }));
7127
7237
  function setUpLocalStreamReferences(_x17) {
7128
7238
  return _setUpLocalStreamReferences.apply(this, arguments);
@@ -7139,72 +7249,72 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7139
7249
  }, {
7140
7250
  key: "waitForMediaConnectionConnected",
7141
7251
  value: (function () {
7142
- var _waitForMediaConnectionConnected = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee22() {
7143
- var iceConnected, _this$mediaProperties8, _this$mediaProperties9, _this$mediaProperties0, _this$mediaProperties1, _this$mediaProperties10, _this$mediaProperties11, _this$mediaProperties12, timedOutError, _t13, _t14, _t15, _t16, _t17, _t18, _t19, _t20, _t21, _t22, _t23, _t24, _t25, _t26, _t27;
7144
- return _regenerator.default.wrap(function (_context22) {
7145
- while (1) switch (_context22.prev = _context22.next) {
7252
+ var _waitForMediaConnectionConnected = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee24() {
7253
+ var iceConnected, _this$mediaProperties9, _this$mediaProperties0, _this$mediaProperties1, _this$mediaProperties10, _this$mediaProperties11, _this$mediaProperties12, _this$mediaProperties13, timedOutError, _t14, _t15, _t16, _t17, _t18, _t19, _t20, _t21, _t22, _t23, _t24, _t25, _t26, _t27, _t28;
7254
+ return _regenerator.default.wrap(function (_context24) {
7255
+ while (1) switch (_context24.prev = _context24.next) {
7146
7256
  case 0:
7147
- _context22.prev = 0;
7148
- _context22.next = 1;
7149
- return this.mediaProperties.waitForMediaConnectionConnected();
7257
+ _context24.prev = 0;
7258
+ _context24.next = 1;
7259
+ return this.mediaProperties.waitForMediaConnectionConnected(this.correlationId);
7150
7260
  case 1:
7151
- _context22.next = 5;
7261
+ _context24.next = 5;
7152
7262
  break;
7153
7263
  case 2:
7154
- _context22.prev = 2;
7155
- _t13 = _context22["catch"](0);
7156
- iceConnected = _t13.iceConnected;
7264
+ _context24.prev = 2;
7265
+ _t14 = _context24["catch"](0);
7266
+ iceConnected = _t14.iceConnected;
7157
7267
  if (this.hasMediaConnectionConnectedAtLeastOnce) {
7158
- _context22.next = 4;
7268
+ _context24.next = 4;
7159
7269
  break;
7160
7270
  }
7161
- _t14 = this.webex.internal.newMetrics;
7162
- _t15 = !this.turnServerUsed;
7163
- _t16 = this.addMediaData.icePhaseCallback();
7164
- _t17 = this.webex.internal.newMetrics.callDiagnosticMetrics;
7165
- _t18 = _internalPluginMetrics.CallDiagnosticUtils;
7166
- _t19 = ((_this$mediaProperties8 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties8 === void 0 ? void 0 : (_this$mediaProperties9 = _this$mediaProperties8.multistreamConnection) === null || _this$mediaProperties9 === void 0 ? void 0 : (_this$mediaProperties0 = _this$mediaProperties9.pc) === null || _this$mediaProperties0 === void 0 ? void 0 : (_this$mediaProperties1 = _this$mediaProperties0.pc) === null || _this$mediaProperties1 === void 0 ? void 0 : _this$mediaProperties1.signalingState) || ((_this$mediaProperties10 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties10 === void 0 ? void 0 : (_this$mediaProperties11 = _this$mediaProperties10.mediaConnection) === null || _this$mediaProperties11 === void 0 ? void 0 : (_this$mediaProperties12 = _this$mediaProperties11.pc) === null || _this$mediaProperties12 === void 0 ? void 0 : _this$mediaProperties12.signalingState) || 'unknown';
7167
- _t20 = iceConnected;
7168
- _t21 = this.turnServerUsed;
7169
- _context22.next = 3;
7271
+ _t15 = this.webex.internal.newMetrics;
7272
+ _t16 = !this.turnServerUsed;
7273
+ _t17 = this.addMediaData.icePhaseCallback();
7274
+ _t18 = this.webex.internal.newMetrics.callDiagnosticMetrics;
7275
+ _t19 = _internalPluginMetrics.CallDiagnosticUtils;
7276
+ _t20 = ((_this$mediaProperties9 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties9 === void 0 ? void 0 : (_this$mediaProperties0 = _this$mediaProperties9.multistreamConnection) === null || _this$mediaProperties0 === void 0 ? void 0 : (_this$mediaProperties1 = _this$mediaProperties0.pc) === null || _this$mediaProperties1 === void 0 ? void 0 : (_this$mediaProperties10 = _this$mediaProperties1.pc) === null || _this$mediaProperties10 === void 0 ? void 0 : _this$mediaProperties10.signalingState) || ((_this$mediaProperties11 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties11 === void 0 ? void 0 : (_this$mediaProperties12 = _this$mediaProperties11.mediaConnection) === null || _this$mediaProperties12 === void 0 ? void 0 : (_this$mediaProperties13 = _this$mediaProperties12.pc) === null || _this$mediaProperties13 === void 0 ? void 0 : _this$mediaProperties13.signalingState) || 'unknown';
7277
+ _t21 = iceConnected;
7278
+ _t22 = this.turnServerUsed;
7279
+ _context24.next = 3;
7170
7280
  return this.webex.meetings.reachability.isWebexMediaBackendUnreachable().catch(function () {
7171
7281
  return false;
7172
7282
  });
7173
7283
  case 3:
7174
- _t22 = _context22.sent;
7175
- _t23 = _t18.generateClientErrorCodeForIceFailure.call(_t18, {
7176
- signalingState: _t19,
7177
- iceConnected: _t20,
7178
- turnServerUsed: _t21,
7179
- unreachable: _t22
7284
+ _t23 = _context24.sent;
7285
+ _t24 = _t19.generateClientErrorCodeForIceFailure.call(_t19, {
7286
+ signalingState: _t20,
7287
+ iceConnected: _t21,
7288
+ turnServerUsed: _t22,
7289
+ unreachable: _t23
7180
7290
  });
7181
- _t24 = _t17.getErrorPayloadForClientErrorCode.call(_t17, {
7182
- clientErrorCode: _t23
7291
+ _t25 = _t18.getErrorPayloadForClientErrorCode.call(_t18, {
7292
+ clientErrorCode: _t24
7183
7293
  });
7184
- _t25 = [_t24];
7185
- _t26 = {
7186
- canProceed: _t15,
7187
- icePhase: _t16,
7188
- errors: _t25
7189
- };
7294
+ _t26 = [_t25];
7190
7295
  _t27 = {
7296
+ canProceed: _t16,
7297
+ icePhase: _t17,
7298
+ errors: _t26
7299
+ };
7300
+ _t28 = {
7191
7301
  meetingId: this.id,
7192
- rawError: _t13
7302
+ rawError: _t14
7193
7303
  };
7194
- _t14.submitClientEvent.call(_t14, {
7304
+ _t15.submitClientEvent.call(_t15, {
7195
7305
  name: 'client.ice.end',
7196
- payload: _t26,
7197
- options: _t27
7306
+ payload: _t27,
7307
+ options: _t28
7198
7308
  });
7199
7309
  case 4:
7200
7310
  timedOutError = new Error("Timed out waiting for media connection to be connected, correlationId=".concat(this.correlationId));
7201
- timedOutError.cause = _t13;
7311
+ timedOutError.cause = _t14;
7202
7312
  throw timedOutError;
7203
7313
  case 5:
7204
7314
  case "end":
7205
- return _context22.stop();
7315
+ return _context24.stop();
7206
7316
  }
7207
- }, _callee22, this, [[0, 2]]);
7317
+ }, _callee24, this, [[0, 2]]);
7208
7318
  }));
7209
7319
  function waitForMediaConnectionConnected() {
7210
7320
  return _waitForMediaConnectionConnected.apply(this, arguments);
@@ -7271,19 +7381,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7271
7381
  }, {
7272
7382
  key: "waitForRemoteSDPAnswer",
7273
7383
  value: (function () {
7274
- var _waitForRemoteSDPAnswer = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee23() {
7384
+ var _waitForRemoteSDPAnswer = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee25() {
7275
7385
  var _this44 = this;
7276
7386
  var LOG_HEADER, deferSDPAnswer;
7277
- return _regenerator.default.wrap(function (_context23) {
7278
- while (1) switch (_context23.prev = _context23.next) {
7387
+ return _regenerator.default.wrap(function (_context25) {
7388
+ while (1) switch (_context25.prev = _context25.next) {
7279
7389
  case 0:
7280
7390
  LOG_HEADER = 'Meeting:index#addMedia():waitForRemoteSDPAnswer -->';
7281
7391
  if (this.deferSDPAnswer) {
7282
- _context23.next = 1;
7392
+ _context25.next = 1;
7283
7393
  break;
7284
7394
  }
7285
7395
  _loggerProxy.default.logger.warn("".concat(LOG_HEADER, " offer not created yet"));
7286
- return _context23.abrupt("return", _promise.default.reject(new Error('waitForRemoteSDPAnswer() called before local sdp offer created')));
7396
+ return _context25.abrupt("return", _promise.default.reject(new Error('waitForRemoteSDPAnswer() called before local sdp offer created')));
7287
7397
  case 1:
7288
7398
  deferSDPAnswer = this.deferSDPAnswer;
7289
7399
  this.sdpResponseTimer = setTimeout(function () {
@@ -7309,12 +7419,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7309
7419
  deferSDPAnswer.reject(error);
7310
7420
  }, _constants.ROAP_OFFER_ANSWER_EXCHANGE_TIMEOUT);
7311
7421
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " waiting for REMOTE SDP ANSWER..."));
7312
- return _context23.abrupt("return", deferSDPAnswer.promise);
7422
+ return _context25.abrupt("return", deferSDPAnswer.promise);
7313
7423
  case 2:
7314
7424
  case "end":
7315
- return _context23.stop();
7425
+ return _context25.stop();
7316
7426
  }
7317
- }, _callee23, this);
7427
+ }, _callee25, this);
7318
7428
  }));
7319
7429
  function waitForRemoteSDPAnswer() {
7320
7430
  return _waitForRemoteSDPAnswer.apply(this, arguments);
@@ -7333,28 +7443,28 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7333
7443
  }, {
7334
7444
  key: "retryEstablishMediaConnectionWithForcedTurnDiscovery",
7335
7445
  value: (function () {
7336
- var _retryEstablishMediaConnectionWithForcedTurnDiscovery = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee24(remoteMediaManagerConfig, bundlePolicy) {
7337
- var LOG_HEADER, _t28;
7338
- return _regenerator.default.wrap(function (_context24) {
7339
- while (1) switch (_context24.prev = _context24.next) {
7446
+ var _retryEstablishMediaConnectionWithForcedTurnDiscovery = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee26(remoteMediaManagerConfig, bundlePolicy) {
7447
+ var LOG_HEADER, _t29;
7448
+ return _regenerator.default.wrap(function (_context26) {
7449
+ while (1) switch (_context26.prev = _context26.next) {
7340
7450
  case 0:
7341
7451
  LOG_HEADER = 'Meeting:index#addMedia():retryEstablishMediaConnectionWithForcedTurnDiscovery -->';
7342
- _context24.prev = 1;
7343
- _context24.next = 2;
7452
+ _context26.prev = 1;
7453
+ _context26.next = 2;
7344
7454
  return this.establishMediaConnection(remoteMediaManagerConfig, bundlePolicy, true);
7345
7455
  case 2:
7346
- _context24.next = 4;
7456
+ _context26.next = 4;
7347
7457
  break;
7348
7458
  case 3:
7349
- _context24.prev = 3;
7350
- _t28 = _context24["catch"](1);
7351
- _loggerProxy.default.logger.error("".concat(LOG_HEADER, " retry with TURN-TLS failed, media connection unable to connect, "), _t28);
7352
- throw _t28;
7459
+ _context26.prev = 3;
7460
+ _t29 = _context26["catch"](1);
7461
+ _loggerProxy.default.logger.error("".concat(LOG_HEADER, " retry with TURN-TLS failed, media connection unable to connect, "), _t29);
7462
+ throw _t29;
7353
7463
  case 4:
7354
7464
  case "end":
7355
- return _context24.stop();
7465
+ return _context26.stop();
7356
7466
  }
7357
- }, _callee24, this, [[1, 3]]);
7467
+ }, _callee26, this, [[1, 3]]);
7358
7468
  }));
7359
7469
  function retryEstablishMediaConnectionWithForcedTurnDiscovery(_x18, _x19) {
7360
7470
  return _retryEstablishMediaConnectionWithForcedTurnDiscovery.apply(this, arguments);
@@ -7374,14 +7484,14 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7374
7484
  }, {
7375
7485
  key: "retryWithForcedTurnDiscovery",
7376
7486
  value: (function () {
7377
- var _retryWithForcedTurnDiscovery = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee25(remoteMediaManagerConfig, bundlePolicy) {
7487
+ var _retryWithForcedTurnDiscovery = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee27(remoteMediaManagerConfig, bundlePolicy) {
7378
7488
  var LOG_HEADER;
7379
- return _regenerator.default.wrap(function (_context25) {
7380
- while (1) switch (_context25.prev = _context25.next) {
7489
+ return _regenerator.default.wrap(function (_context27) {
7490
+ while (1) switch (_context27.prev = _context27.next) {
7381
7491
  case 0:
7382
7492
  this.addMediaData.retriedWithTurnServer = true;
7383
7493
  LOG_HEADER = 'Meeting:index#addMedia():retryWithForcedTurnDiscovery -->';
7384
- _context25.next = 1;
7494
+ _context27.next = 1;
7385
7495
  return this.cleanUpBeforeRetryWithTurnServer();
7386
7496
  case 1:
7387
7497
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_MEDIA_RETRY, {
@@ -7391,22 +7501,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7391
7501
  reason: 'forcingTurnTls'
7392
7502
  });
7393
7503
  if (!(this.state === _constants.MEETING_STATE.STATES.LEFT)) {
7394
- _context25.next = 2;
7504
+ _context27.next = 2;
7395
7505
  break;
7396
7506
  }
7397
7507
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " meeting state was LEFT after first attempt to establish media connection. Attempting to rejoin. "));
7398
- _context25.next = 2;
7508
+ _context27.next = 2;
7399
7509
  return this.join({
7400
7510
  rejoin: true
7401
7511
  });
7402
7512
  case 2:
7403
- _context25.next = 3;
7513
+ _context27.next = 3;
7404
7514
  return this.retryEstablishMediaConnectionWithForcedTurnDiscovery(remoteMediaManagerConfig, bundlePolicy);
7405
7515
  case 3:
7406
7516
  case "end":
7407
- return _context25.stop();
7517
+ return _context27.stop();
7408
7518
  }
7409
- }, _callee25, this);
7519
+ }, _callee27, this);
7410
7520
  }));
7411
7521
  function retryWithForcedTurnDiscovery(_x20, _x21) {
7412
7522
  return _retryWithForcedTurnDiscovery.apply(this, arguments);
@@ -7428,30 +7538,30 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7428
7538
  }, {
7429
7539
  key: "handleWaitForMediaConnectionConnectedError",
7430
7540
  value: (function () {
7431
- var _handleWaitForMediaConnectionConnectedError = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee26(error, remoteMediaManagerConfig, bundlePolicy) {
7541
+ var _handleWaitForMediaConnectionConnectedError = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee28(error, remoteMediaManagerConfig, bundlePolicy) {
7432
7542
  var LOG_HEADER;
7433
- return _regenerator.default.wrap(function (_context26) {
7434
- while (1) switch (_context26.prev = _context26.next) {
7543
+ return _regenerator.default.wrap(function (_context28) {
7544
+ while (1) switch (_context28.prev = _context28.next) {
7435
7545
  case 0:
7436
7546
  LOG_HEADER = 'Meeting:index#addMedia():handleWaitForMediaConnectionConnectedError -->'; // @ts-ignore - config coming from registerPlugin
7437
7547
  if (this.turnServerUsed) {
7438
- _context26.next = 2;
7548
+ _context28.next = 2;
7439
7549
  break;
7440
7550
  }
7441
7551
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " error waiting for media to connect on UDP, TCP, retrying using TURN-TLS, "), error);
7442
- _context26.next = 1;
7552
+ _context28.next = 1;
7443
7553
  return this.retryWithForcedTurnDiscovery(remoteMediaManagerConfig, bundlePolicy);
7444
7554
  case 1:
7445
- _context26.next = 3;
7555
+ _context28.next = 3;
7446
7556
  break;
7447
7557
  case 2:
7448
7558
  _loggerProxy.default.logger.error("".concat(LOG_HEADER, " error waiting for media to connect using UDP, TCP and TURN-TLS"), error);
7449
7559
  throw new _webexErrors.AddMediaFailed(error);
7450
7560
  case 3:
7451
7561
  case "end":
7452
- return _context26.stop();
7562
+ return _context28.stop();
7453
7563
  }
7454
- }, _callee26, this);
7564
+ }, _callee28, this);
7455
7565
  }));
7456
7566
  function handleWaitForMediaConnectionConnectedError(_x22, _x23, _x24) {
7457
7567
  return _handleWaitForMediaConnectionConnectedError.apply(this, arguments);
@@ -7469,20 +7579,20 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7469
7579
  }, {
7470
7580
  key: "doTurnDiscovery",
7471
7581
  value: (function () {
7472
- var _doTurnDiscovery = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee27(isReconnecting, isForced) {
7582
+ var _doTurnDiscovery = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee29(isReconnecting, isForced) {
7473
7583
  var cdl, turnDiscoveryResult;
7474
- return _regenerator.default.wrap(function (_context27) {
7475
- while (1) switch (_context27.prev = _context27.next) {
7584
+ return _regenerator.default.wrap(function (_context29) {
7585
+ while (1) switch (_context29.prev = _context29.next) {
7476
7586
  case 0:
7477
7587
  // @ts-ignore
7478
7588
  cdl = this.webex.internal.newMetrics.callDiagnosticLatencies; // @ts-ignore
7479
7589
  this.webex.internal.newMetrics.submitInternalEvent({
7480
7590
  name: 'internal.client.add-media.turn-discovery.start'
7481
7591
  });
7482
- _context27.next = 1;
7592
+ _context29.next = 1;
7483
7593
  return this.roap.doTurnDiscovery(this, isReconnecting, isForced);
7484
7594
  case 1:
7485
- turnDiscoveryResult = _context27.sent;
7595
+ turnDiscoveryResult = _context29.sent;
7486
7596
  this.turnDiscoverySkippedReason = turnDiscoveryResult === null || turnDiscoveryResult === void 0 ? void 0 : turnDiscoveryResult.turnDiscoverySkippedReason;
7487
7597
  this.turnServerUsed = !this.turnDiscoverySkippedReason;
7488
7598
 
@@ -7498,12 +7608,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7498
7608
  retriedWithTurnServer: this.addMediaData.retriedWithTurnServer
7499
7609
  });
7500
7610
  }
7501
- return _context27.abrupt("return", turnDiscoveryResult);
7611
+ return _context29.abrupt("return", turnDiscoveryResult);
7502
7612
  case 2:
7503
7613
  case "end":
7504
- return _context27.stop();
7614
+ return _context29.stop();
7505
7615
  }
7506
- }, _callee27, this);
7616
+ }, _callee29, this);
7507
7617
  }));
7508
7618
  function doTurnDiscovery(_x25, _x26) {
7509
7619
  return _doTurnDiscovery.apply(this, arguments);
@@ -7524,35 +7634,35 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7524
7634
  }, {
7525
7635
  key: "establishMediaConnection",
7526
7636
  value: (function () {
7527
- var _establishMediaConnection = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee28(remoteMediaManagerConfig, bundlePolicy, isForced, turnServerInfo) {
7637
+ var _establishMediaConnection = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee30(remoteMediaManagerConfig, bundlePolicy, isForced, turnServerInfo) {
7528
7638
  var _this$locusMediaReque;
7529
- var LOG_HEADER, isReconnecting, _yield$this$doTurnDis, mc, _t29, _t30;
7530
- return _regenerator.default.wrap(function (_context28) {
7531
- while (1) switch (_context28.prev = _context28.next) {
7639
+ var LOG_HEADER, isReconnecting, _yield$this$doTurnDis, mc, _t30, _t31;
7640
+ return _regenerator.default.wrap(function (_context30) {
7641
+ while (1) switch (_context30.prev = _context30.next) {
7532
7642
  case 0:
7533
7643
  LOG_HEADER = 'Meeting:index#addMedia():establishMediaConnection -->';
7534
7644
  isReconnecting = this.isMoveToInProgress || !!((_this$locusMediaReque = this.locusMediaRequest) !== null && _this$locusMediaReque !== void 0 && _this$locusMediaReque.isConfluenceCreated()); // We are forcing turn discovery if the case is moveTo and a turn server was used already
7535
7645
  if (this.isMoveToInProgress && this.turnServerUsed) {
7536
7646
  isForced = true;
7537
7647
  }
7538
- _context28.prev = 1;
7648
+ _context30.prev = 1;
7539
7649
  if (turnServerInfo) {
7540
- _context28.next = 3;
7650
+ _context30.next = 3;
7541
7651
  break;
7542
7652
  }
7543
- _context28.next = 2;
7653
+ _context30.next = 2;
7544
7654
  return this.doTurnDiscovery(isReconnecting, isForced);
7545
7655
  case 2:
7546
- _yield$this$doTurnDis = _context28.sent;
7656
+ _yield$this$doTurnDis = _context30.sent;
7547
7657
  turnServerInfo = _yield$this$doTurnDis.turnServerInfo;
7548
7658
  case 3:
7549
- _context28.next = 4;
7659
+ _context30.next = 4;
7550
7660
  return this.createMediaConnection(turnServerInfo, bundlePolicy);
7551
7661
  case 4:
7552
- mc = _context28.sent;
7662
+ mc = _context30.sent;
7553
7663
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " media connection created this.isMultistream=").concat(this.isMultistream));
7554
7664
  if (!this.isMultistream) {
7555
- _context28.next = 5;
7665
+ _context30.next = 5;
7556
7666
  break;
7557
7667
  }
7558
7668
  this.remoteMediaManager = new _remoteMediaManager.RemoteMediaManager(this.receiveSlotManager, this.mediaRequestManagers, remoteMediaManagerConfig);
@@ -7560,40 +7670,40 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7560
7670
  this.forwardEvent(this.remoteMediaManager, _remoteMediaManager.Event.InterpretationAudioCreated, _constants.EVENT_TRIGGERS.REMOTE_MEDIA_INTERPRETATION_AUDIO_CREATED);
7561
7671
  this.forwardEvent(this.remoteMediaManager, _remoteMediaManager.Event.ScreenShareAudioCreated, _constants.EVENT_TRIGGERS.REMOTE_MEDIA_SCREEN_SHARE_AUDIO_CREATED);
7562
7672
  this.forwardEvent(this.remoteMediaManager, _remoteMediaManager.Event.VideoLayoutChanged, _constants.EVENT_TRIGGERS.REMOTE_MEDIA_VIDEO_LAYOUT_CHANGED);
7563
- _context28.next = 5;
7673
+ _context30.next = 5;
7564
7674
  return this.remoteMediaManager.start();
7565
7675
  case 5:
7566
- _context28.next = 6;
7676
+ _context30.next = 6;
7567
7677
  return mc.initiateOffer();
7568
7678
  case 6:
7569
- _context28.next = 7;
7679
+ _context30.next = 7;
7570
7680
  return this.waitForRemoteSDPAnswer();
7571
7681
  case 7:
7572
7682
  this.handleMediaLogging(this.mediaProperties);
7573
- _context28.next = 9;
7683
+ _context30.next = 9;
7574
7684
  break;
7575
7685
  case 8:
7576
- _context28.prev = 8;
7577
- _t29 = _context28["catch"](1);
7578
- _loggerProxy.default.logger.error("".concat(LOG_HEADER, " error establishing media connection, "), _t29);
7579
- throw _t29;
7686
+ _context30.prev = 8;
7687
+ _t30 = _context30["catch"](1);
7688
+ _loggerProxy.default.logger.error("".concat(LOG_HEADER, " error establishing media connection, "), _t30);
7689
+ throw _t30;
7580
7690
  case 9:
7581
- _context28.prev = 9;
7582
- _context28.next = 10;
7691
+ _context30.prev = 9;
7692
+ _context30.next = 10;
7583
7693
  return this.waitForMediaConnectionConnected();
7584
7694
  case 10:
7585
- _context28.next = 12;
7695
+ _context30.next = 12;
7586
7696
  break;
7587
7697
  case 11:
7588
- _context28.prev = 11;
7589
- _t30 = _context28["catch"](9);
7590
- _context28.next = 12;
7591
- return this.handleWaitForMediaConnectionConnectedError(_t30, remoteMediaManagerConfig, bundlePolicy);
7698
+ _context30.prev = 11;
7699
+ _t31 = _context30["catch"](9);
7700
+ _context30.next = 12;
7701
+ return this.handleWaitForMediaConnectionConnectedError(_t31, remoteMediaManagerConfig, bundlePolicy);
7592
7702
  case 12:
7593
7703
  case "end":
7594
- return _context28.stop();
7704
+ return _context30.stop();
7595
7705
  }
7596
- }, _callee28, this, [[1, 8], [9, 11]]);
7706
+ }, _callee30, this, [[1, 8], [9, 11]]);
7597
7707
  }));
7598
7708
  function establishMediaConnection(_x27, _x28, _x29, _x30) {
7599
7709
  return _establishMediaConnection.apply(this, arguments);
@@ -7610,16 +7720,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7610
7720
  }, {
7611
7721
  key: "cleanUpOnAddMediaFailure",
7612
7722
  value: (function () {
7613
- var _cleanUpOnAddMediaFailure = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee29() {
7723
+ var _cleanUpOnAddMediaFailure = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee31() {
7614
7724
  var _this$networkQualityM, _this$statsMonitor;
7615
- return _regenerator.default.wrap(function (_context29) {
7616
- while (1) switch (_context29.prev = _context29.next) {
7725
+ return _regenerator.default.wrap(function (_context31) {
7726
+ while (1) switch (_context31.prev = _context31.next) {
7617
7727
  case 0:
7618
7728
  if (!this.statsAnalyzer) {
7619
- _context29.next = 1;
7729
+ _context31.next = 1;
7620
7730
  break;
7621
7731
  }
7622
- _context29.next = 1;
7732
+ _context31.next = 1;
7623
7733
  return this.statsAnalyzer.stopAnalyzer();
7624
7734
  case 1:
7625
7735
  this.statsAnalyzer = null;
@@ -7630,7 +7740,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7630
7740
 
7631
7741
  // when media fails, we want to upload a webrtc dump to see whats going on
7632
7742
  // this function is async, but returns once the stats have been gathered
7633
- _context29.next = 2;
7743
+ _context31.next = 2;
7634
7744
  return this.forceSendStatsReport({
7635
7745
  callFrom: 'addMedia'
7636
7746
  });
@@ -7641,9 +7751,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7641
7751
  }
7642
7752
  case 3:
7643
7753
  case "end":
7644
- return _context29.stop();
7754
+ return _context31.stop();
7645
7755
  }
7646
- }, _callee29, this);
7756
+ }, _callee31, this);
7647
7757
  }));
7648
7758
  function cleanUpOnAddMediaFailure() {
7649
7759
  return _cleanUpOnAddMediaFailure.apply(this, arguments);
@@ -7661,16 +7771,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7661
7771
  }, {
7662
7772
  key: "downgradeFromMultistreamToTranscoded",
7663
7773
  value: (function () {
7664
- var _downgradeFromMultistreamToTranscoded = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee30() {
7774
+ var _downgradeFromMultistreamToTranscoded = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee32() {
7665
7775
  var _this$networkQualityM2, _this$statsMonitor2, _this$locusMediaReque2;
7666
- return _regenerator.default.wrap(function (_context30) {
7667
- while (1) switch (_context30.prev = _context30.next) {
7776
+ return _regenerator.default.wrap(function (_context32) {
7777
+ while (1) switch (_context32.prev = _context32.next) {
7668
7778
  case 0:
7669
7779
  if (!this.statsAnalyzer) {
7670
- _context30.next = 1;
7780
+ _context32.next = 1;
7671
7781
  break;
7672
7782
  }
7673
- _context30.next = 1;
7783
+ _context32.next = 1;
7674
7784
  return this.statsAnalyzer.stopAnalyzer();
7675
7785
  case 1:
7676
7786
  this.statsAnalyzer = null;
@@ -7688,9 +7798,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7688
7798
  this.createStatsAnalyzer();
7689
7799
  case 2:
7690
7800
  case "end":
7691
- return _context30.stop();
7801
+ return _context32.stop();
7692
7802
  }
7693
- }, _callee30, this);
7803
+ }, _callee32, this);
7694
7804
  }));
7695
7805
  function downgradeFromMultistreamToTranscoded() {
7696
7806
  return _downgradeFromMultistreamToTranscoded.apply(this, arguments);
@@ -7708,11 +7818,11 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7708
7818
  }, {
7709
7819
  key: "cleanUpBeforeRetryWithTurnServer",
7710
7820
  value: (function () {
7711
- var _cleanUpBeforeRetryWithTurnServer = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee31() {
7712
- return _regenerator.default.wrap(function (_context31) {
7713
- while (1) switch (_context31.prev = _context31.next) {
7821
+ var _cleanUpBeforeRetryWithTurnServer = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee33() {
7822
+ return _regenerator.default.wrap(function (_context33) {
7823
+ while (1) switch (_context33.prev = _context33.next) {
7714
7824
  case 0:
7715
- _context31.next = 1;
7825
+ _context33.next = 1;
7716
7826
  return this.forceSendStatsReport({
7717
7827
  callFrom: 'cleanUpBeforeRetryWithTurnServer'
7718
7828
  });
@@ -7732,9 +7842,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7732
7842
  }
7733
7843
  case 2:
7734
7844
  case "end":
7735
- return _context31.stop();
7845
+ return _context33.stop();
7736
7846
  }
7737
- }, _callee31, this);
7847
+ }, _callee33, this);
7738
7848
  }));
7739
7849
  function cleanUpBeforeRetryWithTurnServer() {
7740
7850
  return _cleanUpBeforeRetryWithTurnServer.apply(this, arguments);
@@ -7744,35 +7854,35 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7744
7854
  }, {
7745
7855
  key: "cleanUpBeforeReconnection",
7746
7856
  value: function () {
7747
- var _cleanUpBeforeReconnection = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee32() {
7748
- var _t31;
7749
- return _regenerator.default.wrap(function (_context32) {
7750
- while (1) switch (_context32.prev = _context32.next) {
7857
+ var _cleanUpBeforeReconnection = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee34() {
7858
+ var _t32;
7859
+ return _regenerator.default.wrap(function (_context34) {
7860
+ while (1) switch (_context34.prev = _context34.next) {
7751
7861
  case 0:
7752
- _context32.prev = 0;
7753
- _context32.next = 1;
7862
+ _context34.prev = 0;
7863
+ _context34.next = 1;
7754
7864
  return this.forceSendStatsReport({
7755
7865
  callFrom: 'cleanUpBeforeReconnection'
7756
7866
  });
7757
7867
  case 1:
7758
7868
  if (!this.statsAnalyzer) {
7759
- _context32.next = 2;
7869
+ _context34.next = 2;
7760
7870
  break;
7761
7871
  }
7762
- _context32.next = 2;
7872
+ _context34.next = 2;
7763
7873
  return this.statsAnalyzer.stopAnalyzer();
7764
7874
  case 2:
7765
- _context32.next = 4;
7875
+ _context34.next = 4;
7766
7876
  break;
7767
7877
  case 3:
7768
- _context32.prev = 3;
7769
- _t31 = _context32["catch"](0);
7770
- _loggerProxy.default.logger.error('Meeting:index#cleanUpBeforeReconnection --> Error during cleanup: ', _t31);
7878
+ _context34.prev = 3;
7879
+ _t32 = _context34["catch"](0);
7880
+ _loggerProxy.default.logger.error('Meeting:index#cleanUpBeforeReconnection --> Error during cleanup: ', _t32);
7771
7881
  case 4:
7772
7882
  case "end":
7773
- return _context32.stop();
7883
+ return _context34.stop();
7774
7884
  }
7775
- }, _callee32, this, [[0, 3]]);
7885
+ }, _callee34, this, [[0, 3]]);
7776
7886
  }));
7777
7887
  function cleanUpBeforeReconnection() {
7778
7888
  return _cleanUpBeforeReconnection.apply(this, arguments);
@@ -7840,7 +7950,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7840
7950
  }, {
7841
7951
  key: "addMediaInternal",
7842
7952
  value: (function () {
7843
- var _addMediaInternal = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee33(icePhaseCallback, turnServerInfo, forceTurnDiscovery) {
7953
+ var _addMediaInternal = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee35(icePhaseCallback, turnServerInfo, forceTurnDiscovery) {
7844
7954
  var options,
7845
7955
  LOG_HEADER,
7846
7956
  localStreams,
@@ -7857,6 +7967,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7857
7967
  bundlePolicy,
7858
7968
  _options$additionalMe,
7859
7969
  additionalMediaOptions,
7970
+ _options$allowPublish,
7971
+ allowPublishMediaInLobby,
7860
7972
  rawSendVideo,
7861
7973
  rawReceiveVideo,
7862
7974
  rawSendAudio,
@@ -7874,7 +7986,6 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7874
7986
  numTransports,
7875
7987
  iceCandidateErrors,
7876
7988
  reachabilityMetrics,
7877
- _this$mediaProperties13,
7878
7989
  _this$mediaProperties14,
7879
7990
  _this$mediaProperties15,
7880
7991
  _this$mediaProperties16,
@@ -7895,36 +8006,37 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7895
8006
  _this$mediaProperties31,
7896
8007
  _this$mediaProperties32,
7897
8008
  _this$mediaProperties33,
8009
+ _this$mediaProperties34,
7898
8010
  _reachabilityMetrics,
7899
8011
  _yield$this$mediaProp2,
7900
8012
  _selectedCandidatePairChanges,
7901
8013
  _numTransports,
7902
8014
  _iceCandidateErrors,
7903
- _args33 = arguments,
7904
- _t32,
7905
- _t33;
7906
- return _regenerator.default.wrap(function (_context33) {
7907
- while (1) switch (_context33.prev = _context33.next) {
8015
+ _args35 = arguments,
8016
+ _t33,
8017
+ _t34;
8018
+ return _regenerator.default.wrap(function (_context35) {
8019
+ while (1) switch (_context35.prev = _context35.next) {
7908
8020
  case 0:
7909
- options = _args33.length > 3 && _args33[3] !== undefined ? _args33[3] : {};
8021
+ options = _args35.length > 3 && _args35[3] !== undefined ? _args35[3] : {};
7910
8022
  this.addMediaData.retriedWithTurnServer = false;
7911
8023
  this.addMediaData.icePhaseCallback = icePhaseCallback;
7912
8024
  this.hasMediaConnectionConnectedAtLeastOnce = false;
7913
8025
  LOG_HEADER = 'Meeting:index#addMedia -->';
7914
8026
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " called with: options=").concat((0, _stringify.default)(options), ", turnServerInfo=").concat((0, _stringify.default)(turnServerInfo), ", forceTurnDiscovery=").concat(forceTurnDiscovery));
7915
8027
  if (!(options.allowMediaInLobby !== true && this.meetingState !== _constants.FULL_STATE.ACTIVE)) {
7916
- _context33.next = 1;
8028
+ _context35.next = 1;
7917
8029
  break;
7918
8030
  }
7919
8031
  throw new _webexErrors.MeetingNotActiveError();
7920
8032
  case 1:
7921
8033
  if (!_util2.default.isUserInLeftState(this.locusInfo)) {
7922
- _context33.next = 2;
8034
+ _context35.next = 2;
7923
8035
  break;
7924
8036
  }
7925
8037
  throw new _webexErrors.UserNotJoinedError();
7926
8038
  case 2:
7927
- localStreams = options.localStreams, _options$audioEnabled = options.audioEnabled, audioEnabled = _options$audioEnabled === void 0 ? true : _options$audioEnabled, _options$videoEnabled = options.videoEnabled, videoEnabled = _options$videoEnabled === void 0 ? true : _options$videoEnabled, _options$shareAudioEn = options.shareAudioEnabled, shareAudioEnabled = _options$shareAudioEn === void 0 ? true : _options$shareAudioEn, _options$shareVideoEn = options.shareVideoEnabled, shareVideoEnabled = _options$shareVideoEn === void 0 ? true : _options$shareVideoEn, remoteMediaManagerConfig = options.remoteMediaManagerConfig, _options$bundlePolicy = options.bundlePolicy, bundlePolicy = _options$bundlePolicy === void 0 ? 'max-bundle' : _options$bundlePolicy, _options$additionalMe = options.additionalMediaOptions, additionalMediaOptions = _options$additionalMe === void 0 ? {} : _options$additionalMe;
8039
+ localStreams = options.localStreams, _options$audioEnabled = options.audioEnabled, audioEnabled = _options$audioEnabled === void 0 ? true : _options$audioEnabled, _options$videoEnabled = options.videoEnabled, videoEnabled = _options$videoEnabled === void 0 ? true : _options$videoEnabled, _options$shareAudioEn = options.shareAudioEnabled, shareAudioEnabled = _options$shareAudioEn === void 0 ? true : _options$shareAudioEn, _options$shareVideoEn = options.shareVideoEnabled, shareVideoEnabled = _options$shareVideoEn === void 0 ? true : _options$shareVideoEn, remoteMediaManagerConfig = options.remoteMediaManagerConfig, _options$bundlePolicy = options.bundlePolicy, bundlePolicy = _options$bundlePolicy === void 0 ? 'max-bundle' : _options$bundlePolicy, _options$additionalMe = options.additionalMediaOptions, additionalMediaOptions = _options$additionalMe === void 0 ? {} : _options$additionalMe, _options$allowPublish = options.allowPublishMediaInLobby, allowPublishMediaInLobby = _options$allowPublish === void 0 ? false : _options$allowPublish;
7928
8040
  rawSendVideo = additionalMediaOptions.sendVideo, rawReceiveVideo = additionalMediaOptions.receiveVideo, rawSendAudio = additionalMediaOptions.sendAudio, rawReceiveAudio = additionalMediaOptions.receiveAudio;
7929
8041
  sendVideo = videoEnabled && (rawSendVideo !== null && rawSendVideo !== void 0 ? rawSendVideo : true);
7930
8042
  receiveVideo = videoEnabled && (rawReceiveVideo !== null && rawReceiveVideo !== void 0 ? rawReceiveVideo : true);
@@ -7935,9 +8047,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7935
8047
  // @ts-ignore
7936
8048
  ipver = _util2.default.getIpVersion(this.webex); // used just for metrics
7937
8049
  // If the user is unjoined or guest waiting in lobby dont allow the user to addMedia
7938
- // @ts-ignore - isUserUnadmitted coming from SelfUtil
7939
8050
  if (!(this.isUserUnadmitted && !this.wirelessShare && !this.allowMediaInLobby)) {
7940
- _context33.next = 3;
8051
+ _context35.next = 3;
7941
8052
  break;
7942
8053
  }
7943
8054
  throw new _webexErrors.UserInLobbyError();
@@ -7981,58 +8092,62 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7981
8092
  this.audio = (0, _muteState.createMuteState)(_constants.AUDIO, this, audioEnabled);
7982
8093
  this.video = (0, _muteState.createMuteState)(_constants.VIDEO, this, videoEnabled);
7983
8094
  this.brbState = (0, _brbState.createBrbState)(this, false);
7984
- _context33.prev = 4;
7985
- _context33.next = 5;
8095
+ _context35.prev = 4;
8096
+ if (!(allowPublishMediaInLobby || !this.isUserUnadmitted)) {
8097
+ _context35.next = 5;
8098
+ break;
8099
+ }
8100
+ _context35.next = 5;
7986
8101
  return this.setUpLocalStreamReferences(localStreams);
7987
8102
  case 5:
7988
8103
  this.setMercuryListener();
7989
8104
  this.createStatsAnalyzer();
7990
- _context33.prev = 6;
7991
- _context33.next = 7;
8105
+ _context35.prev = 6;
8106
+ _context35.next = 7;
7992
8107
  return this.establishMediaConnection(remoteMediaManagerConfig, bundlePolicy, forceTurnDiscovery, turnServerInfo);
7993
8108
  case 7:
7994
- _context33.next = 12;
8109
+ _context35.next = 12;
7995
8110
  break;
7996
8111
  case 8:
7997
- _context33.prev = 8;
7998
- _t32 = _context33["catch"](6);
7999
- if (!(_t32 instanceof _multistreamNotSupportedError.default)) {
8000
- _context33.next = 11;
8112
+ _context35.prev = 8;
8113
+ _t33 = _context35["catch"](6);
8114
+ if (!(_t33 instanceof _multistreamNotSupportedError.default)) {
8115
+ _context35.next = 11;
8001
8116
  break;
8002
8117
  }
8003
8118
  _loggerProxy.default.logger.warn("".concat(LOG_HEADER, " we asked for multistream backend (Homer), but got transcoded backend, recreating media connection..."));
8004
- _context33.next = 9;
8119
+ _context35.next = 9;
8005
8120
  return this.downgradeFromMultistreamToTranscoded();
8006
8121
  case 9:
8007
- _context33.next = 10;
8122
+ _context35.next = 10;
8008
8123
  return this.establishMediaConnection(remoteMediaManagerConfig, bundlePolicy, true, undefined);
8009
8124
  case 10:
8010
- _context33.next = 12;
8125
+ _context35.next = 12;
8011
8126
  break;
8012
8127
  case 11:
8013
- throw _t32;
8128
+ throw _t33;
8014
8129
  case 12:
8015
8130
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " media connected, finalizing..."));
8016
8131
  if (!this.mediaProperties.hasLocalShareStream()) {
8017
- _context33.next = 13;
8132
+ _context35.next = 13;
8018
8133
  break;
8019
8134
  }
8020
- _context33.next = 13;
8135
+ _context35.next = 13;
8021
8136
  return this.enqueueScreenShareFloorRequest();
8022
8137
  case 13:
8023
- _context33.next = 14;
8138
+ _context35.next = 14;
8024
8139
  return this.mediaProperties.getCurrentConnectionInfo();
8025
8140
  case 14:
8026
- _yield$this$mediaProp = _context33.sent;
8141
+ _yield$this$mediaProp = _context35.sent;
8027
8142
  connectionType = _yield$this$mediaProp.connectionType;
8028
8143
  ipVersion = _yield$this$mediaProp.ipVersion;
8029
8144
  selectedCandidatePairChanges = _yield$this$mediaProp.selectedCandidatePairChanges;
8030
8145
  numTransports = _yield$this$mediaProp.numTransports;
8031
8146
  iceCandidateErrors = Object.fromEntries(this.iceCandidateErrors);
8032
- _context33.next = 15;
8147
+ _context35.next = 15;
8033
8148
  return this.getMediaReachabilityMetricFields();
8034
8149
  case 15:
8035
- reachabilityMetrics = _context33.sent;
8150
+ reachabilityMetrics = _context35.sent;
8036
8151
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_MEDIA_SUCCESS, _objectSpread(_objectSpread(_objectSpread({
8037
8152
  correlation_id: this.correlationId,
8038
8153
  locus_id: this.locusUrl.split('/').pop(),
@@ -8062,31 +8177,31 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8062
8177
  // We can log ReceiveSlot SSRCs only after the SDP exchange, so doing it here:
8063
8178
  (_this$remoteMediaMana = this.remoteMediaManager) === null || _this$remoteMediaMana === void 0 ? void 0 : _this$remoteMediaMana.logAllReceiveSlots();
8064
8179
  this.startPeriodicLogUpload();
8065
- _context33.next = 20;
8180
+ _context35.next = 20;
8066
8181
  break;
8067
8182
  case 16:
8068
- _context33.prev = 16;
8069
- _t33 = _context33["catch"](4);
8070
- _loggerProxy.default.logger.error("".concat(LOG_HEADER, " failed to establish media connection: "), _t33);
8183
+ _context35.prev = 16;
8184
+ _t34 = _context35["catch"](4);
8185
+ _loggerProxy.default.logger.error("".concat(LOG_HEADER, " failed to establish media connection: "), _t34);
8071
8186
 
8072
8187
  // @ts-ignore
8073
- _context33.next = 17;
8188
+ _context35.next = 17;
8074
8189
  return this.getMediaReachabilityMetricFields();
8075
8190
  case 17:
8076
- _reachabilityMetrics = _context33.sent;
8077
- _context33.next = 18;
8191
+ _reachabilityMetrics = _context35.sent;
8192
+ _context35.next = 18;
8078
8193
  return this.mediaProperties.getCurrentConnectionInfo();
8079
8194
  case 18:
8080
- _yield$this$mediaProp2 = _context33.sent;
8195
+ _yield$this$mediaProp2 = _context35.sent;
8081
8196
  _selectedCandidatePairChanges = _yield$this$mediaProp2.selectedCandidatePairChanges;
8082
8197
  _numTransports = _yield$this$mediaProp2.numTransports;
8083
8198
  _iceCandidateErrors = Object.fromEntries(this.iceCandidateErrors);
8084
8199
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_MEDIA_FAILURE, _objectSpread(_objectSpread(_objectSpread({
8085
8200
  correlation_id: this.correlationId,
8086
8201
  locus_id: this.locusUrl.split('/').pop(),
8087
- reason: _t33.message,
8088
- stack: _t33.stack,
8089
- code: _t33.code,
8202
+ reason: _t34.message,
8203
+ stack: _t34.stack,
8204
+ code: _t34.code,
8090
8205
  selectedCandidatePairChanges: _selectedCandidatePairChanges,
8091
8206
  numTransports: _numTransports,
8092
8207
  turnDiscoverySkippedReason: this.turnDiscoverySkippedReason,
@@ -8094,14 +8209,14 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8094
8209
  retriedWithTurnServer: this.addMediaData.retriedWithTurnServer,
8095
8210
  isMultistream: this.isMultistream,
8096
8211
  isJoinWithMediaRetry: this.joinWithMediaRetryInfo.isRetry,
8097
- signalingState: ((_this$mediaProperties13 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties13 === void 0 ? void 0 : (_this$mediaProperties14 = _this$mediaProperties13.multistreamConnection) === null || _this$mediaProperties14 === void 0 ? void 0 : (_this$mediaProperties15 = _this$mediaProperties14.pc) === null || _this$mediaProperties15 === void 0 ? void 0 : (_this$mediaProperties16 = _this$mediaProperties15.pc) === null || _this$mediaProperties16 === void 0 ? void 0 : _this$mediaProperties16.signalingState) || ((_this$mediaProperties17 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties17 === void 0 ? void 0 : (_this$mediaProperties18 = _this$mediaProperties17.mediaConnection) === null || _this$mediaProperties18 === void 0 ? void 0 : (_this$mediaProperties19 = _this$mediaProperties18.pc) === null || _this$mediaProperties19 === void 0 ? void 0 : _this$mediaProperties19.signalingState) || 'unknown',
8098
- connectionState: ((_this$mediaProperties20 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties20 === void 0 ? void 0 : (_this$mediaProperties21 = _this$mediaProperties20.multistreamConnection) === null || _this$mediaProperties21 === void 0 ? void 0 : (_this$mediaProperties22 = _this$mediaProperties21.pc) === null || _this$mediaProperties22 === void 0 ? void 0 : (_this$mediaProperties23 = _this$mediaProperties22.pc) === null || _this$mediaProperties23 === void 0 ? void 0 : _this$mediaProperties23.connectionState) || ((_this$mediaProperties24 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties24 === void 0 ? void 0 : (_this$mediaProperties25 = _this$mediaProperties24.mediaConnection) === null || _this$mediaProperties25 === void 0 ? void 0 : (_this$mediaProperties26 = _this$mediaProperties25.pc) === null || _this$mediaProperties26 === void 0 ? void 0 : _this$mediaProperties26.connectionState) || 'unknown',
8099
- iceConnectionState: ((_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.iceConnectionState) || ((_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.iceConnectionState) || 'unknown'
8212
+ signalingState: ((_this$mediaProperties14 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties14 === void 0 ? void 0 : (_this$mediaProperties15 = _this$mediaProperties14.multistreamConnection) === null || _this$mediaProperties15 === void 0 ? void 0 : (_this$mediaProperties16 = _this$mediaProperties15.pc) === null || _this$mediaProperties16 === void 0 ? void 0 : (_this$mediaProperties17 = _this$mediaProperties16.pc) === null || _this$mediaProperties17 === void 0 ? void 0 : _this$mediaProperties17.signalingState) || ((_this$mediaProperties18 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties18 === void 0 ? void 0 : (_this$mediaProperties19 = _this$mediaProperties18.mediaConnection) === null || _this$mediaProperties19 === void 0 ? void 0 : (_this$mediaProperties20 = _this$mediaProperties19.pc) === null || _this$mediaProperties20 === void 0 ? void 0 : _this$mediaProperties20.signalingState) || 'unknown',
8213
+ connectionState: ((_this$mediaProperties21 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties21 === void 0 ? void 0 : (_this$mediaProperties22 = _this$mediaProperties21.multistreamConnection) === null || _this$mediaProperties22 === void 0 ? void 0 : (_this$mediaProperties23 = _this$mediaProperties22.pc) === null || _this$mediaProperties23 === void 0 ? void 0 : (_this$mediaProperties24 = _this$mediaProperties23.pc) === null || _this$mediaProperties24 === void 0 ? void 0 : _this$mediaProperties24.connectionState) || ((_this$mediaProperties25 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties25 === void 0 ? void 0 : (_this$mediaProperties26 = _this$mediaProperties25.mediaConnection) === null || _this$mediaProperties26 === void 0 ? void 0 : (_this$mediaProperties27 = _this$mediaProperties26.pc) === null || _this$mediaProperties27 === void 0 ? void 0 : _this$mediaProperties27.connectionState) || 'unknown',
8214
+ iceConnectionState: ((_this$mediaProperties28 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties28 === void 0 ? void 0 : (_this$mediaProperties29 = _this$mediaProperties28.multistreamConnection) === null || _this$mediaProperties29 === void 0 ? void 0 : (_this$mediaProperties30 = _this$mediaProperties29.pc) === null || _this$mediaProperties30 === void 0 ? void 0 : (_this$mediaProperties31 = _this$mediaProperties30.pc) === null || _this$mediaProperties31 === void 0 ? void 0 : _this$mediaProperties31.iceConnectionState) || ((_this$mediaProperties32 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties32 === void 0 ? void 0 : (_this$mediaProperties33 = _this$mediaProperties32.mediaConnection) === null || _this$mediaProperties33 === void 0 ? void 0 : (_this$mediaProperties34 = _this$mediaProperties33.pc) === null || _this$mediaProperties34 === void 0 ? void 0 : _this$mediaProperties34.iceConnectionState) || 'unknown'
8100
8215
  }, _reachabilityMetrics), _iceCandidateErrors), {}, {
8101
8216
  iceCandidatesCount: this.iceCandidatesCount,
8102
8217
  ipver: ipver
8103
8218
  }));
8104
- _context33.next = 19;
8219
+ _context35.next = 19;
8105
8220
  return this.cleanUpOnAddMediaFailure();
8106
8221
  case 19:
8107
8222
  // Upload logs on error while adding media
@@ -8109,21 +8224,21 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8109
8224
  file: 'meeting/index',
8110
8225
  function: 'addMedia'
8111
8226
  }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, this);
8112
- if (_t33 instanceof _internalMediaCore.Errors.SdpError) {
8227
+ if (_t34 instanceof _internalMediaCore.Errors.SdpError) {
8113
8228
  this.leave({
8114
8229
  reason: _constants.MEETING_REMOVED_REASON.MEETING_CONNECTION_FAILED
8115
8230
  });
8116
8231
  }
8117
- throw _t33;
8232
+ throw _t34;
8118
8233
  case 20:
8119
- _context33.prev = 20;
8234
+ _context35.prev = 20;
8120
8235
  this.addMediaData.icePhaseCallback = DEFAULT_ICE_PHASE_CALLBACK;
8121
- return _context33.finish(20);
8236
+ return _context35.finish(20);
8122
8237
  case 21:
8123
8238
  case "end":
8124
- return _context33.stop();
8239
+ return _context35.stop();
8125
8240
  }
8126
- }, _callee33, this, [[4, 16, 20, 21], [6, 8]]);
8241
+ }, _callee35, this, [[4, 16, 20, 21], [6, 8]]);
8127
8242
  }));
8128
8243
  function addMediaInternal(_x31, _x32, _x33) {
8129
8244
  return _addMediaInternal.apply(this, arguments);
@@ -8191,35 +8306,35 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8191
8306
  * @memberof Meeting
8192
8307
  */
8193
8308
  function () {
8194
- var _updateMedia = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee34(options) {
8309
+ var _updateMedia = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee36(options) {
8195
8310
  var audioEnabled, videoEnabled, shareAudioEnabled, shareVideoEnabled, _this$audio3, _this$video3;
8196
- return _regenerator.default.wrap(function (_context34) {
8197
- while (1) switch (_context34.prev = _context34.next) {
8311
+ return _regenerator.default.wrap(function (_context36) {
8312
+ while (1) switch (_context36.prev = _context36.next) {
8198
8313
  case 0:
8199
8314
  this.checkMediaConnection();
8200
8315
  audioEnabled = options.audioEnabled, videoEnabled = options.videoEnabled, shareAudioEnabled = options.shareAudioEnabled, shareVideoEnabled = options.shareVideoEnabled;
8201
8316
  _loggerProxy.default.logger.log("Meeting:index#updateMedia --> called with options=".concat((0, _stringify.default)(options)));
8202
8317
  if (this.canUpdateMedia()) {
8203
- _context34.next = 1;
8318
+ _context36.next = 1;
8204
8319
  break;
8205
8320
  }
8206
- return _context34.abrupt("return", this.enqueueMediaUpdate(MEDIA_UPDATE_TYPE.UPDATE_MEDIA, options));
8321
+ return _context36.abrupt("return", this.enqueueMediaUpdate(MEDIA_UPDATE_TYPE.UPDATE_MEDIA, options));
8207
8322
  case 1:
8208
8323
  if (!this.isMultistream) {
8209
- _context34.next = 3;
8324
+ _context36.next = 3;
8210
8325
  break;
8211
8326
  }
8212
8327
  if (!(shareAudioEnabled !== undefined || shareVideoEnabled !== undefined)) {
8213
- _context34.next = 2;
8328
+ _context36.next = 2;
8214
8329
  break;
8215
8330
  }
8216
8331
  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');
8217
8332
  case 2:
8218
- _context34.next = 4;
8333
+ _context36.next = 4;
8219
8334
  break;
8220
8335
  case 3:
8221
8336
  if (!(shareAudioEnabled !== undefined)) {
8222
- _context34.next = 4;
8337
+ _context36.next = 4;
8223
8338
  break;
8224
8339
  }
8225
8340
  throw new Error('toggling shareAudioEnabled in a transcoded meeting is not supported as of now');
@@ -8244,18 +8359,18 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8244
8359
  this.mediaProperties.mediaDirection.receiveShare = !!(shareAudioEnabled || shareVideoEnabled);
8245
8360
  }
8246
8361
  if (this.isMultistream) {
8247
- _context34.next = 5;
8362
+ _context36.next = 5;
8248
8363
  break;
8249
8364
  }
8250
- _context34.next = 5;
8365
+ _context36.next = 5;
8251
8366
  return this.updateTranscodedMediaConnection();
8252
8367
  case 5:
8253
- return _context34.abrupt("return", undefined);
8368
+ return _context36.abrupt("return", undefined);
8254
8369
  case 6:
8255
8370
  case "end":
8256
- return _context34.stop();
8371
+ return _context36.stop();
8257
8372
  }
8258
- }, _callee34, this);
8373
+ }, _callee36, this);
8259
8374
  }));
8260
8375
  function updateMedia(_x34) {
8261
8376
  return _updateMedia.apply(this, arguments);
@@ -8397,32 +8512,46 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8397
8512
  );
8398
8513
  };
8399
8514
  _loggerProxy.default.logger.log('Meeting:index#leave --> Leaving a meeting');
8400
- return _util2.default.leaveMeeting(this, options).then(function (leave) {
8401
- // CA team recommends submitting this *after* locus /leave
8402
- submitLeaveMetric();
8403
- _this49.meetingFiniteStateMachine.leave();
8404
- _this49.clearMeetingData();
8405
-
8406
- // upload logs on leave irrespective of meeting delete
8407
- _triggerProxy.default.trigger(_this49, {
8408
- file: 'meeting/index',
8409
- function: 'leave'
8410
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this49);
8515
+ return _util2.default.leaveMeeting(this, options).then(/*#__PURE__*/function () {
8516
+ var _ref42 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee37(leave) {
8517
+ return _regenerator.default.wrap(function (_context37) {
8518
+ while (1) switch (_context37.prev = _context37.next) {
8519
+ case 0:
8520
+ // CA team recommends submitting this *after* locus /leave
8521
+ submitLeaveMetric();
8522
+ _this49.meetingFiniteStateMachine.leave();
8523
+ _context37.next = 1;
8524
+ return _this49.clearMeetingData();
8525
+ case 1:
8526
+ // upload logs on leave irrespective of meeting delete
8527
+ _triggerProxy.default.trigger(_this49, {
8528
+ file: 'meeting/index',
8529
+ function: 'leave'
8530
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this49);
8411
8531
 
8412
- // TODO: more testing before we remove this code, we are not sure the scenarios for destroy here
8413
- if (_this49.wirelessShare || _this49.guest) {
8414
- // If screen sharing clean the meeting object
8415
- _triggerProxy.default.trigger(_this49, {
8416
- file: 'meeting/index',
8417
- function: 'leave'
8418
- }, _constants.EVENTS.DESTROY_MEETING, {
8419
- reason: options.reason,
8420
- meetingId: _this49.id
8421
- });
8422
- }
8423
- _loggerProxy.default.logger.log('Meeting:index#leave --> LEAVE REASON ', leaveReason);
8424
- return leave;
8425
- }).catch(function (error) {
8532
+ // TODO: more testing before we remove this code, we are not sure the scenarios for destroy here
8533
+ if (_this49.wirelessShare || _this49.guest) {
8534
+ // If screen sharing clean the meeting object
8535
+ _triggerProxy.default.trigger(_this49, {
8536
+ file: 'meeting/index',
8537
+ function: 'leave'
8538
+ }, _constants.EVENTS.DESTROY_MEETING, {
8539
+ reason: options.reason,
8540
+ meetingId: _this49.id
8541
+ });
8542
+ }
8543
+ _loggerProxy.default.logger.log('Meeting:index#leave --> LEAVE REASON ', leaveReason);
8544
+ return _context37.abrupt("return", leave);
8545
+ case 2:
8546
+ case "end":
8547
+ return _context37.stop();
8548
+ }
8549
+ }, _callee37);
8550
+ }));
8551
+ return function (_x35) {
8552
+ return _ref42.apply(this, arguments);
8553
+ };
8554
+ }()).catch(function (error) {
8426
8555
  // CA team recommends submitting this *after* locus /leave
8427
8556
  submitLeaveMetric({
8428
8557
  errors: [{
@@ -8901,10 +9030,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8901
9030
  var renderInfo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
8902
9031
  var main = renderInfo.main,
8903
9032
  content = renderInfo.content;
8904
- var _this$mediaProperties34 = this.mediaProperties,
8905
- mediaDirection = _this$mediaProperties34.mediaDirection,
8906
- remoteShareStream = _this$mediaProperties34.remoteShareStream,
8907
- remoteVideoStream = _this$mediaProperties34.remoteVideoStream;
9033
+ var _this$mediaProperties35 = this.mediaProperties,
9034
+ mediaDirection = _this$mediaProperties35.mediaDirection,
9035
+ remoteShareStream = _this$mediaProperties35.remoteShareStream,
9036
+ remoteVideoStream = _this$mediaProperties35.remoteVideoStream;
8908
9037
  var layoutInfo = (0, _lodash.cloneDeep)(this.lastVideoLayoutInfo);
8909
9038
 
8910
9039
  // TODO: We need a real time value for Audio, Video and Share send indicator
@@ -9084,16 +9213,31 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9084
9213
  correlation_id: this.correlationId,
9085
9214
  locus_id: this.locusId
9086
9215
  });
9087
- return _util2.default.endMeetingForAll(this).then(function (end) {
9088
- _this56.meetingFiniteStateMachine.end();
9089
- _this56.clearMeetingData();
9090
- // upload logs on leave irrespective of meeting delete
9091
- _triggerProxy.default.trigger(_this56, {
9092
- file: 'meeting/index',
9093
- function: 'endMeetingForAll'
9094
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this56);
9095
- return end;
9096
- }).catch(function (error) {
9216
+ return _util2.default.endMeetingForAll(this).then(/*#__PURE__*/function () {
9217
+ var _ref43 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee38(end) {
9218
+ return _regenerator.default.wrap(function (_context38) {
9219
+ while (1) switch (_context38.prev = _context38.next) {
9220
+ case 0:
9221
+ _this56.meetingFiniteStateMachine.end();
9222
+ _context38.next = 1;
9223
+ return _this56.clearMeetingData();
9224
+ case 1:
9225
+ // upload logs on leave irrespective of meeting delete
9226
+ _triggerProxy.default.trigger(_this56, {
9227
+ file: 'meeting/index',
9228
+ function: 'endMeetingForAll'
9229
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this56);
9230
+ return _context38.abrupt("return", end);
9231
+ case 2:
9232
+ case "end":
9233
+ return _context38.stop();
9234
+ }
9235
+ }, _callee38);
9236
+ }));
9237
+ return function (_x36) {
9238
+ return _ref43.apply(this, arguments);
9239
+ };
9240
+ }()).catch(function (error) {
9097
9241
  _this56.meetingFiniteStateMachine.fail(error);
9098
9242
  _loggerProxy.default.logger.error('Meeting:index#endMeetingForAll --> Failed to end meeting ', error);
9099
9243
  // upload logs on leave irrespective of meeting delete
@@ -9155,12 +9299,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9155
9299
  */
9156
9300
  }, {
9157
9301
  key: "extendMeeting",
9158
- value: function extendMeeting(_ref37) {
9159
- var meetingPolicyUrl = _ref37.meetingPolicyUrl,
9160
- meetingInstanceId = _ref37.meetingInstanceId,
9161
- participantId = _ref37.participantId,
9162
- _ref37$extensionMinut = _ref37.extensionMinutes,
9163
- extensionMinutes = _ref37$extensionMinut === void 0 ? 30 : _ref37$extensionMinut;
9302
+ value: function extendMeeting(_ref44) {
9303
+ var meetingPolicyUrl = _ref44.meetingPolicyUrl,
9304
+ meetingInstanceId = _ref44.meetingInstanceId,
9305
+ participantId = _ref44.participantId,
9306
+ _ref44$extensionMinut = _ref44.extensionMinutes,
9307
+ extensionMinutes = _ref44$extensionMinut === void 0 ? 30 : _ref44$extensionMinut;
9164
9308
  if (!meetingInstanceId || !participantId) {
9165
9309
  return _promise.default.reject(new Error('Missing meetingInstanceId or participantId'));
9166
9310
  }
@@ -9225,8 +9369,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9225
9369
  }, {
9226
9370
  key: "checkMediaConnection",
9227
9371
  value: function checkMediaConnection() {
9228
- var _this$mediaProperties35;
9229
- if ((_this$mediaProperties35 = this.mediaProperties) !== null && _this$mediaProperties35 !== void 0 && _this$mediaProperties35.webrtcMediaConnection) {
9372
+ var _this$mediaProperties36;
9373
+ if ((_this$mediaProperties36 = this.mediaProperties) !== null && _this$mediaProperties36 !== void 0 && _this$mediaProperties36.webrtcMediaConnection) {
9230
9374
  return;
9231
9375
  }
9232
9376
  throw new _webexErrors.NoMediaEstablishedYetError();
@@ -9241,39 +9385,39 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9241
9385
  }, {
9242
9386
  key: "enableMusicMode",
9243
9387
  value: (function () {
9244
- var _enableMusicMode = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee35(shouldEnableMusicMode) {
9245
- return _regenerator.default.wrap(function (_context35) {
9246
- while (1) switch (_context35.prev = _context35.next) {
9388
+ var _enableMusicMode = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee39(shouldEnableMusicMode) {
9389
+ return _regenerator.default.wrap(function (_context39) {
9390
+ while (1) switch (_context39.prev = _context39.next) {
9247
9391
  case 0:
9248
9392
  this.checkMediaConnection();
9249
9393
  if (this.isMultistream) {
9250
- _context35.next = 1;
9394
+ _context39.next = 1;
9251
9395
  break;
9252
9396
  }
9253
9397
  throw new Error('enableMusicMode() only supported with multistream');
9254
9398
  case 1:
9255
9399
  if (!shouldEnableMusicMode) {
9256
- _context35.next = 3;
9400
+ _context39.next = 3;
9257
9401
  break;
9258
9402
  }
9259
- _context35.next = 2;
9403
+ _context39.next = 2;
9260
9404
  return this.sendSlotManager.setCodecParameters(_internalMediaCore.MediaType.AudioMain, {
9261
9405
  maxaveragebitrate: '64000',
9262
9406
  maxplaybackrate: '48000'
9263
9407
  });
9264
9408
  case 2:
9265
- _context35.next = 4;
9409
+ _context39.next = 4;
9266
9410
  break;
9267
9411
  case 3:
9268
- _context35.next = 4;
9412
+ _context39.next = 4;
9269
9413
  return this.sendSlotManager.deleteCodecParameters(_internalMediaCore.MediaType.AudioMain, ['maxaveragebitrate', 'maxplaybackrate']);
9270
9414
  case 4:
9271
9415
  case "end":
9272
- return _context35.stop();
9416
+ return _context39.stop();
9273
9417
  }
9274
- }, _callee35, this);
9418
+ }, _callee39, this);
9275
9419
  }));
9276
- function enableMusicMode(_x35) {
9420
+ function enableMusicMode(_x37) {
9277
9421
  return _enableMusicMode.apply(this, arguments);
9278
9422
  }
9279
9423
  return enableMusicMode;
@@ -9286,14 +9430,14 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9286
9430
  }, {
9287
9431
  key: "updateTranscodedMediaConnection",
9288
9432
  value: function updateTranscodedMediaConnection() {
9289
- var _this$mediaProperties36,
9290
- _this$mediaProperties37,
9433
+ var _this$mediaProperties37,
9291
9434
  _this$mediaProperties38,
9292
9435
  _this$mediaProperties39,
9293
9436
  _this$mediaProperties40,
9294
9437
  _this$mediaProperties41,
9295
9438
  _this$mediaProperties42,
9296
9439
  _this$mediaProperties43,
9440
+ _this$mediaProperties44,
9297
9441
  _this57 = this;
9298
9442
  var LOG_HEADER = 'Meeting:index#updateTranscodedMediaConnection -->';
9299
9443
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " starting"));
@@ -9303,10 +9447,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9303
9447
  return this.mediaProperties.webrtcMediaConnection.update({
9304
9448
  // TODO: RoapMediaConnection is not ready to use stream classes yet, so we pass the raw MediaStreamTrack for now
9305
9449
  localTracks: {
9306
- audio: ((_this$mediaProperties36 = this.mediaProperties.audioStream) === null || _this$mediaProperties36 === void 0 ? void 0 : (_this$mediaProperties37 = _this$mediaProperties36.outputStream) === null || _this$mediaProperties37 === void 0 ? void 0 : _this$mediaProperties37.getTracks()[0]) || null,
9307
- video: ((_this$mediaProperties38 = this.mediaProperties.videoStream) === null || _this$mediaProperties38 === void 0 ? void 0 : (_this$mediaProperties39 = _this$mediaProperties38.outputStream) === null || _this$mediaProperties39 === void 0 ? void 0 : _this$mediaProperties39.getTracks()[0]) || null,
9308
- screenShareVideo: ((_this$mediaProperties40 = this.mediaProperties.shareVideoStream) === null || _this$mediaProperties40 === void 0 ? void 0 : (_this$mediaProperties41 = _this$mediaProperties40.outputStream) === null || _this$mediaProperties41 === void 0 ? void 0 : _this$mediaProperties41.getTracks()[0]) || null,
9309
- screenShareAudio: ((_this$mediaProperties42 = this.mediaProperties.shareAudioStream) === null || _this$mediaProperties42 === void 0 ? void 0 : (_this$mediaProperties43 = _this$mediaProperties42.outputStream) === null || _this$mediaProperties43 === void 0 ? void 0 : _this$mediaProperties43.getTracks()[0]) || null
9450
+ audio: ((_this$mediaProperties37 = this.mediaProperties.audioStream) === null || _this$mediaProperties37 === void 0 ? void 0 : (_this$mediaProperties38 = _this$mediaProperties37.outputStream) === null || _this$mediaProperties38 === void 0 ? void 0 : _this$mediaProperties38.getTracks()[0]) || null,
9451
+ video: ((_this$mediaProperties39 = this.mediaProperties.videoStream) === null || _this$mediaProperties39 === void 0 ? void 0 : (_this$mediaProperties40 = _this$mediaProperties39.outputStream) === null || _this$mediaProperties40 === void 0 ? void 0 : _this$mediaProperties40.getTracks()[0]) || null,
9452
+ screenShareVideo: ((_this$mediaProperties41 = this.mediaProperties.shareVideoStream) === null || _this$mediaProperties41 === void 0 ? void 0 : (_this$mediaProperties42 = _this$mediaProperties41.outputStream) === null || _this$mediaProperties42 === void 0 ? void 0 : _this$mediaProperties42.getTracks()[0]) || null,
9453
+ screenShareAudio: ((_this$mediaProperties43 = this.mediaProperties.shareAudioStream) === null || _this$mediaProperties43 === void 0 ? void 0 : (_this$mediaProperties44 = _this$mediaProperties43.outputStream) === null || _this$mediaProperties44 === void 0 ? void 0 : _this$mediaProperties44.getTracks()[0]) || null
9310
9454
  },
9311
9455
  direction: {
9312
9456
  audio: _media.default.getDirection(true, this.mediaProperties.mediaDirection.receiveAudio, this.mediaProperties.mediaDirection.sendAudio),
@@ -9364,25 +9508,25 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9364
9508
  }, {
9365
9509
  key: "publishStream",
9366
9510
  value: (function () {
9367
- var _publishStream = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee36(mediaType, stream) {
9368
- return _regenerator.default.wrap(function (_context36) {
9369
- while (1) switch (_context36.prev = _context36.next) {
9511
+ var _publishStream = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee40(mediaType, stream) {
9512
+ return _regenerator.default.wrap(function (_context40) {
9513
+ while (1) switch (_context40.prev = _context40.next) {
9370
9514
  case 0:
9371
9515
  if (stream) {
9372
- _context36.next = 1;
9516
+ _context40.next = 1;
9373
9517
  break;
9374
9518
  }
9375
- return _context36.abrupt("return");
9519
+ return _context40.abrupt("return");
9376
9520
  case 1:
9377
9521
  if (!this.mediaProperties.webrtcMediaConnection) {
9378
- _context36.next = 3;
9522
+ _context40.next = 3;
9379
9523
  break;
9380
9524
  }
9381
9525
  if (!(this.isMultistream && this.mediaProperties.webrtcMediaConnection)) {
9382
- _context36.next = 2;
9526
+ _context40.next = 2;
9383
9527
  break;
9384
9528
  }
9385
- _context36.next = 2;
9529
+ _context40.next = 2;
9386
9530
  return this.sendSlotManager.publishStream(mediaType, stream);
9387
9531
  case 2:
9388
9532
  this.emitPublishStateChangeEvent({
@@ -9393,11 +9537,11 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9393
9537
  });
9394
9538
  case 3:
9395
9539
  case "end":
9396
- return _context36.stop();
9540
+ return _context40.stop();
9397
9541
  }
9398
- }, _callee36, this);
9542
+ }, _callee40, this);
9399
9543
  }));
9400
- function publishStream(_x36, _x37) {
9544
+ function publishStream(_x38, _x39) {
9401
9545
  return _publishStream.apply(this, arguments);
9402
9546
  }
9403
9547
  return publishStream;
@@ -9413,21 +9557,21 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9413
9557
  }, {
9414
9558
  key: "unpublishStream",
9415
9559
  value: (function () {
9416
- var _unpublishStream = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee37(mediaType, stream) {
9417
- return _regenerator.default.wrap(function (_context37) {
9418
- while (1) switch (_context37.prev = _context37.next) {
9560
+ var _unpublishStream = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee41(mediaType, stream) {
9561
+ return _regenerator.default.wrap(function (_context41) {
9562
+ while (1) switch (_context41.prev = _context41.next) {
9419
9563
  case 0:
9420
9564
  if (stream) {
9421
- _context37.next = 1;
9565
+ _context41.next = 1;
9422
9566
  break;
9423
9567
  }
9424
- return _context37.abrupt("return");
9568
+ return _context41.abrupt("return");
9425
9569
  case 1:
9426
9570
  if (!(this.isMultistream && this.mediaProperties.webrtcMediaConnection)) {
9427
- _context37.next = 2;
9571
+ _context41.next = 2;
9428
9572
  break;
9429
9573
  }
9430
- _context37.next = 2;
9574
+ _context41.next = 2;
9431
9575
  return this.sendSlotManager.unpublishStream(mediaType);
9432
9576
  case 2:
9433
9577
  this.emitPublishStateChangeEvent({
@@ -9438,11 +9582,11 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9438
9582
  });
9439
9583
  case 3:
9440
9584
  case "end":
9441
- return _context37.stop();
9585
+ return _context41.stop();
9442
9586
  }
9443
- }, _callee37, this);
9587
+ }, _callee41, this);
9444
9588
  }));
9445
- function unpublishStream(_x38, _x39) {
9589
+ function unpublishStream(_x40, _x41) {
9446
9590
  return _unpublishStream.apply(this, arguments);
9447
9591
  }
9448
9592
  return unpublishStream;
@@ -9457,19 +9601,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9457
9601
  }, {
9458
9602
  key: "publishStreams",
9459
9603
  value: (function () {
9460
- var _publishStreams = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee38(streams) {
9604
+ var _publishStreams = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee42(streams) {
9461
9605
  var _streams$screenShare, _streams$screenShare2, _streams$screenShare3, _streams$screenShare4, _streams$screenShare5, _streams$screenShare6;
9462
9606
  var streamChecks, _i, _streamChecks, _streamChecks$_i, stream, name, floorRequestNeeded, _streams$screenShare7;
9463
- return _regenerator.default.wrap(function (_context38) {
9464
- while (1) switch (_context38.prev = _context38.next) {
9607
+ return _regenerator.default.wrap(function (_context42) {
9608
+ while (1) switch (_context42.prev = _context42.next) {
9465
9609
  case 0:
9466
9610
  _loggerProxy.default.logger.info("Meeting:index#publishStreams --> called with: ".concat((0, _stringify.default)(streams)));
9467
9611
  this.checkMediaConnection();
9468
9612
  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))) {
9469
- _context38.next = 1;
9613
+ _context42.next = 1;
9470
9614
  break;
9471
9615
  }
9472
- return _context38.abrupt("return");
9616
+ return _context42.abrupt("return");
9473
9617
  case 1:
9474
9618
  streamChecks = [{
9475
9619
  stream: streams === null || streams === void 0 ? void 0 : streams.microphone,
@@ -9487,62 +9631,62 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9487
9631
  _i = 0, _streamChecks = streamChecks;
9488
9632
  case 2:
9489
9633
  if (!(_i < _streamChecks.length)) {
9490
- _context38.next = 4;
9634
+ _context42.next = 4;
9491
9635
  break;
9492
9636
  }
9493
9637
  _streamChecks$_i = _streamChecks[_i], stream = _streamChecks$_i.stream, name = _streamChecks$_i.name;
9494
9638
  if (!((stream === null || stream === void 0 ? void 0 : stream.readyState) === 'ended')) {
9495
- _context38.next = 3;
9639
+ _context42.next = 3;
9496
9640
  break;
9497
9641
  }
9498
9642
  throw new Error("Attempted to publish ".concat(name, " stream with ended readyState, correlationId=").concat(this.correlationId));
9499
9643
  case 3:
9500
9644
  _i++;
9501
- _context38.next = 2;
9645
+ _context42.next = 2;
9502
9646
  break;
9503
9647
  case 4:
9504
9648
  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
9505
9649
  if (!(this.isMultistream && (_streams$screenShare5 = streams.screenShare) !== null && _streams$screenShare5 !== void 0 && _streams$screenShare5.audio)) {
9506
- _context38.next = 6;
9650
+ _context42.next = 6;
9507
9651
  break;
9508
9652
  }
9509
- _context38.next = 5;
9653
+ _context42.next = 5;
9510
9654
  return this.setLocalShareAudioStream(streams.screenShare.audio);
9511
9655
  case 5:
9512
9656
  floorRequestNeeded = this.screenShareFloorState === ScreenShareFloorStatus.RELEASED;
9513
9657
  case 6:
9514
9658
  if (!((_streams$screenShare6 = streams.screenShare) !== null && _streams$screenShare6 !== void 0 && _streams$screenShare6.video)) {
9515
- _context38.next = 8;
9659
+ _context42.next = 8;
9516
9660
  break;
9517
9661
  }
9518
- _context38.next = 7;
9662
+ _context42.next = 7;
9519
9663
  return this.setLocalShareVideoStream((_streams$screenShare7 = streams.screenShare) === null || _streams$screenShare7 === void 0 ? void 0 : _streams$screenShare7.video);
9520
9664
  case 7:
9521
9665
  floorRequestNeeded = this.screenShareFloorState === ScreenShareFloorStatus.RELEASED;
9522
9666
  case 8:
9523
9667
  if (!streams.microphone) {
9524
- _context38.next = 9;
9668
+ _context42.next = 9;
9525
9669
  break;
9526
9670
  }
9527
- _context38.next = 9;
9671
+ _context42.next = 9;
9528
9672
  return this.setLocalAudioStream(streams.microphone);
9529
9673
  case 9:
9530
9674
  if (!streams.camera) {
9531
- _context38.next = 10;
9675
+ _context42.next = 10;
9532
9676
  break;
9533
9677
  }
9534
- _context38.next = 10;
9678
+ _context42.next = 10;
9535
9679
  return this.setLocalVideoStream(streams.camera);
9536
9680
  case 10:
9537
9681
  if (this.isMultistream) {
9538
- _context38.next = 11;
9682
+ _context42.next = 11;
9539
9683
  break;
9540
9684
  }
9541
- _context38.next = 11;
9685
+ _context42.next = 11;
9542
9686
  return this.updateTranscodedMediaConnection();
9543
9687
  case 11:
9544
9688
  if (!floorRequestNeeded) {
9545
- _context38.next = 12;
9689
+ _context42.next = 12;
9546
9690
  break;
9547
9691
  }
9548
9692
  this.localShareInstanceId = _uuid.default.v4();
@@ -9573,15 +9717,15 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9573
9717
  // we're sending the http request to Locus to request the screen share floor
9574
9718
  // only after the SDP update, because that's how it's always been done for transcoded meetings
9575
9719
  // and also if sharing from the start, we need confluence to have been created
9576
- _context38.next = 12;
9720
+ _context42.next = 12;
9577
9721
  return this.enqueueScreenShareFloorRequest();
9578
9722
  case 12:
9579
9723
  case "end":
9580
- return _context38.stop();
9724
+ return _context42.stop();
9581
9725
  }
9582
- }, _callee38, this);
9726
+ }, _callee42, this);
9583
9727
  }));
9584
- function publishStreams(_x40) {
9728
+ function publishStreams(_x42) {
9585
9729
  return _publishStreams.apply(this, arguments);
9586
9730
  }
9587
9731
  return publishStreams;
@@ -9596,10 +9740,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9596
9740
  }, {
9597
9741
  key: "unpublishStreams",
9598
9742
  value: (function () {
9599
- var _unpublishStreams = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee39(streams) {
9743
+ var _unpublishStreams = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee43(streams) {
9600
9744
  var promises, _iterator, _step, stream;
9601
- return _regenerator.default.wrap(function (_context39) {
9602
- while (1) switch (_context39.prev = _context39.next) {
9745
+ return _regenerator.default.wrap(function (_context43) {
9746
+ while (1) switch (_context43.prev = _context43.next) {
9603
9747
  case 0:
9604
9748
  _loggerProxy.default.logger.info("Meeting:index#unpublishStreams --> called with: ".concat((0, _stringify.default)(streams)));
9605
9749
  this.checkMediaConnection();
@@ -9631,7 +9775,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9631
9775
  if (!this.isMultistream) {
9632
9776
  promises.push(this.updateTranscodedMediaConnection());
9633
9777
  }
9634
- _context39.next = 1;
9778
+ _context43.next = 1;
9635
9779
  return _promise.default.all(promises);
9636
9780
  case 1:
9637
9781
  // we're allowing for the SDK to support just audio share as well
@@ -9652,11 +9796,11 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9652
9796
  }
9653
9797
  case 2:
9654
9798
  case "end":
9655
- return _context39.stop();
9799
+ return _context43.stop();
9656
9800
  }
9657
- }, _callee39, this);
9801
+ }, _callee43, this);
9658
9802
  }));
9659
- function unpublishStreams(_x41) {
9803
+ function unpublishStreams(_x43) {
9660
9804
  return _unpublishStreams.apply(this, arguments);
9661
9805
  }
9662
9806
  return unpublishStreams;
@@ -9722,16 +9866,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9722
9866
  }, {
9723
9867
  key: "getMediaReachabilityMetricFields",
9724
9868
  value: (function () {
9725
- var _getMediaReachabilityMetricFields = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee40() {
9869
+ var _getMediaReachabilityMetricFields = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee44() {
9726
9870
  var _this$mediaServerIp, _this$mediaConnection, _this$mediaConnection2, _this$mediaConnection3;
9727
9871
  var reachabilityMetrics, successKeys, totalSuccessCases, selectedSubnetFirstOctet, isSubnetReachable, selectedCluster;
9728
- return _regenerator.default.wrap(function (_context40) {
9729
- while (1) switch (_context40.prev = _context40.next) {
9872
+ return _regenerator.default.wrap(function (_context44) {
9873
+ while (1) switch (_context44.prev = _context44.next) {
9730
9874
  case 0:
9731
- _context40.next = 1;
9875
+ _context44.next = 1;
9732
9876
  return this.webex.meetings.reachability.getReachabilityMetrics();
9733
9877
  case 1:
9734
- reachabilityMetrics = _context40.sent;
9878
+ reachabilityMetrics = _context44.sent;
9735
9879
  successKeys = ['reachability_public_udp_success', 'reachability_public_tcp_success', 'reachability_public_xtls_success', 'reachability_vmn_udp_success', 'reachability_vmn_tcp_success', 'reachability_vmn_xtls_success'];
9736
9880
  totalSuccessCases = successKeys.reduce(function (total, key) {
9737
9881
  var value = reachabilityMetrics[key];
@@ -9748,16 +9892,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9748
9892
  this.webex.meetings.reachability.isSubnetReachable(selectedSubnetFirstOctet);
9749
9893
  }
9750
9894
  selectedCluster = (_this$mediaConnection = (_this$mediaConnection2 = this.mediaConnections) === null || _this$mediaConnection2 === void 0 ? void 0 : (_this$mediaConnection3 = _this$mediaConnection2[0]) === null || _this$mediaConnection3 === void 0 ? void 0 : _this$mediaConnection3.mediaAgentCluster) !== null && _this$mediaConnection !== void 0 ? _this$mediaConnection : null;
9751
- return _context40.abrupt("return", _objectSpread(_objectSpread({}, reachabilityMetrics), {}, {
9895
+ return _context44.abrupt("return", _objectSpread(_objectSpread({}, reachabilityMetrics), {}, {
9752
9896
  subnet_reachable: isSubnetReachable,
9753
9897
  selected_cluster: selectedCluster,
9754
9898
  selected_subnet: selectedSubnetFirstOctet ? "".concat(selectedSubnetFirstOctet, ".X.X.X") : null
9755
9899
  }));
9756
9900
  case 2:
9757
9901
  case "end":
9758
- return _context40.stop();
9902
+ return _context44.stop();
9759
9903
  }
9760
- }, _callee40, this);
9904
+ }, _callee44, this);
9761
9905
  }));
9762
9906
  function getMediaReachabilityMetricFields() {
9763
9907
  return _getMediaReachabilityMetricFields.apply(this, arguments);
@@ -9774,17 +9918,17 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9774
9918
  }, {
9775
9919
  key: "setStage",
9776
9920
  value: function setStage() {
9777
- var _ref38 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
9778
- _ref38$activeSpeakerP = _ref38.activeSpeakerProportion,
9779
- activeSpeakerProportion = _ref38$activeSpeakerP === void 0 ? 0.5 : _ref38$activeSpeakerP,
9780
- customBackground = _ref38.customBackground,
9781
- customLogo = _ref38.customLogo,
9782
- customNameLabel = _ref38.customNameLabel,
9783
- importantParticipants = _ref38.importantParticipants,
9784
- _ref38$lockAttendeeVi = _ref38.lockAttendeeViewOnStage,
9785
- lockAttendeeViewOnStage = _ref38$lockAttendeeVi === void 0 ? false : _ref38$lockAttendeeVi,
9786
- _ref38$showActiveSpea = _ref38.showActiveSpeaker,
9787
- showActiveSpeaker = _ref38$showActiveSpea === void 0 ? false : _ref38$showActiveSpea;
9921
+ var _ref45 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
9922
+ _ref45$activeSpeakerP = _ref45.activeSpeakerProportion,
9923
+ activeSpeakerProportion = _ref45$activeSpeakerP === void 0 ? 0.5 : _ref45$activeSpeakerP,
9924
+ customBackground = _ref45.customBackground,
9925
+ customLogo = _ref45.customLogo,
9926
+ customNameLabel = _ref45.customNameLabel,
9927
+ importantParticipants = _ref45.importantParticipants,
9928
+ _ref45$lockAttendeeVi = _ref45.lockAttendeeViewOnStage,
9929
+ lockAttendeeViewOnStage = _ref45$lockAttendeeVi === void 0 ? false : _ref45$lockAttendeeVi,
9930
+ _ref45$showActiveSpea = _ref45.showActiveSpeaker,
9931
+ showActiveSpeaker = _ref45$showActiveSpea === void 0 ? false : _ref45$showActiveSpea;
9788
9932
  var videoLayout = {
9789
9933
  overrideDefault: true,
9790
9934
  lockAttendeeViewOnStageOnly: lockAttendeeViewOnStage,
@@ -9880,6 +10024,71 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9880
10024
  value: function cancelSipCallOut(participantId) {
9881
10025
  return this.meetingRequest.cancelSipCallOut(participantId);
9882
10026
  }
10027
+
10028
+ /**
10029
+ * Method to get new data
10030
+ * @returns {Promise}
10031
+ */
10032
+ }, {
10033
+ key: "refreshDataChannelToken",
10034
+ value: (function () {
10035
+ var _refreshDataChannelToken = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee45() {
10036
+ var isPracticeSession, dataChannelTokenType, res, msg, _t35;
10037
+ return _regenerator.default.wrap(function (_context45) {
10038
+ while (1) switch (_context45.prev = _context45.next) {
10039
+ case 0:
10040
+ isPracticeSession = this.webinar.isJoinPracticeSessionDataChannel();
10041
+ dataChannelTokenType = this.getDataChannelTokenType();
10042
+ _context45.prev = 1;
10043
+ _context45.next = 2;
10044
+ return this.meetingRequest.fetchDatachannelToken({
10045
+ locusUrl: this.locusUrl,
10046
+ requestingParticipantId: this.members.selfId,
10047
+ isPracticeSession: isPracticeSession
10048
+ });
10049
+ case 2:
10050
+ res = _context45.sent;
10051
+ return _context45.abrupt("return", {
10052
+ body: {
10053
+ datachannelToken: res.body.datachannelToken,
10054
+ dataChannelTokenType: dataChannelTokenType
10055
+ }
10056
+ });
10057
+ case 3:
10058
+ _context45.prev = 3;
10059
+ _t35 = _context45["catch"](1);
10060
+ msg = (_t35 === null || _t35 === void 0 ? void 0 : _t35.message) || String(_t35);
10061
+ _loggerProxy.default.logger.warn("Meeting:index#refreshDataChannelToken --> DataChannel token refresh failed (likely locus changed or participant left): ".concat(msg), {
10062
+ statusCode: _t35 === null || _t35 === void 0 ? void 0 : _t35.statusCode
10063
+ });
10064
+ return _context45.abrupt("return", null);
10065
+ case 4:
10066
+ case "end":
10067
+ return _context45.stop();
10068
+ }
10069
+ }, _callee45, this, [[1, 3]]);
10070
+ }));
10071
+ function refreshDataChannelToken() {
10072
+ return _refreshDataChannelToken.apply(this, arguments);
10073
+ }
10074
+ return refreshDataChannelToken;
10075
+ }()
10076
+ /**
10077
+ * Determines the current data channel token type based on the meeting state.
10078
+ *
10079
+ * variant should be used when connecting to the LLM data channel.
10080
+ *
10081
+ * @returns {DataChannelTokenType} The token type representing the current session mode.
10082
+ */
10083
+ )
10084
+ }, {
10085
+ key: "getDataChannelTokenType",
10086
+ value: function getDataChannelTokenType() {
10087
+ if (this.webinar.isJoinPracticeSessionDataChannel()) {
10088
+ return _internalPluginLlm.DataChannelTokenType.PracticeSession;
10089
+ }
10090
+ return _internalPluginLlm.DataChannelTokenType.Default;
10091
+ }
9883
10092
  }]);
9884
10093
  }(_webexCore.StatelessWebexPlugin);
9885
10094
  //# sourceMappingURL=index.js.map