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