@webex/plugin-meetings 3.11.0-webex-services-ready.1 → 3.12.0-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (166) hide show
  1. package/dist/aiEnableRequest/index.js +184 -0
  2. package/dist/aiEnableRequest/index.js.map +1 -0
  3. package/dist/aiEnableRequest/utils.js +36 -0
  4. package/dist/aiEnableRequest/utils.js.map +1 -0
  5. package/dist/annotation/index.js +14 -5
  6. package/dist/annotation/index.js.map +1 -1
  7. package/dist/breakouts/breakout.js +1 -1
  8. package/dist/breakouts/index.js +1 -1
  9. package/dist/config.js +7 -2
  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 +850 -410
  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 +522 -131
  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 +1128 -868
  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 +117 -48
  57. package/dist/meetings/index.js.map +1 -1
  58. package/dist/member/index.js +10 -0
  59. package/dist/member/index.js.map +1 -1
  60. package/dist/member/util.js +10 -0
  61. package/dist/member/util.js.map +1 -1
  62. package/dist/metrics/constants.js +2 -1
  63. package/dist/metrics/constants.js.map +1 -1
  64. package/dist/multistream/mediaRequestManager.js +9 -60
  65. package/dist/multistream/mediaRequestManager.js.map +1 -1
  66. package/dist/multistream/remoteMediaManager.js +11 -0
  67. package/dist/multistream/remoteMediaManager.js.map +1 -1
  68. package/dist/reactions/reactions.type.js.map +1 -1
  69. package/dist/reconnection-manager/index.js +0 -1
  70. package/dist/reconnection-manager/index.js.map +1 -1
  71. package/dist/types/aiEnableRequest/index.d.ts +5 -0
  72. package/dist/types/aiEnableRequest/utils.d.ts +2 -0
  73. package/dist/types/config.d.ts +4 -0
  74. package/dist/types/constants.d.ts +23 -1
  75. package/dist/types/hashTree/constants.d.ts +1 -0
  76. package/dist/types/hashTree/hashTree.d.ts +7 -0
  77. package/dist/types/hashTree/hashTreeParser.d.ts +122 -14
  78. package/dist/types/hashTree/types.d.ts +3 -0
  79. package/dist/types/hashTree/utils.d.ts +6 -0
  80. package/dist/types/index.d.ts +1 -0
  81. package/dist/types/interceptors/constant.d.ts +5 -0
  82. package/dist/types/interceptors/dataChannelAuthToken.d.ts +43 -0
  83. package/dist/types/interceptors/index.d.ts +2 -1
  84. package/dist/types/interceptors/utils.d.ts +1 -0
  85. package/dist/types/locus-info/index.d.ts +60 -8
  86. package/dist/types/locus-info/types.d.ts +7 -0
  87. package/dist/types/media/MediaConnectionAwaiter.d.ts +10 -1
  88. package/dist/types/media/properties.d.ts +2 -1
  89. package/dist/types/meeting/in-meeting-actions.d.ts +6 -0
  90. package/dist/types/meeting/index.d.ts +48 -6
  91. package/dist/types/meeting/request.d.ts +16 -1
  92. package/dist/types/meeting/request.type.d.ts +5 -0
  93. package/dist/types/meeting/util.d.ts +31 -0
  94. package/dist/types/meetings/index.d.ts +4 -2
  95. package/dist/types/member/index.d.ts +1 -0
  96. package/dist/types/member/util.d.ts +5 -0
  97. package/dist/types/metrics/constants.d.ts +1 -0
  98. package/dist/types/multistream/mediaRequestManager.d.ts +0 -23
  99. package/dist/types/reactions/reactions.type.d.ts +1 -0
  100. package/dist/types/webinar/utils.d.ts +6 -0
  101. package/dist/webinar/index.js +260 -90
  102. package/dist/webinar/index.js.map +1 -1
  103. package/dist/webinar/utils.js +25 -0
  104. package/dist/webinar/utils.js.map +1 -0
  105. package/package.json +24 -23
  106. package/src/aiEnableRequest/README.md +84 -0
  107. package/src/aiEnableRequest/index.ts +170 -0
  108. package/src/aiEnableRequest/utils.ts +25 -0
  109. package/src/annotation/index.ts +27 -7
  110. package/src/config.ts +4 -0
  111. package/src/constants.ts +29 -1
  112. package/src/hashTree/constants.ts +1 -0
  113. package/src/hashTree/hashTree.ts +17 -0
  114. package/src/hashTree/hashTreeParser.ts +745 -252
  115. package/src/hashTree/types.ts +4 -0
  116. package/src/hashTree/utils.ts +9 -0
  117. package/src/index.ts +8 -1
  118. package/src/interceptors/constant.ts +6 -0
  119. package/src/interceptors/dataChannelAuthToken.ts +170 -0
  120. package/src/interceptors/index.ts +2 -1
  121. package/src/interceptors/utils.ts +16 -0
  122. package/src/interpretation/index.ts +2 -2
  123. package/src/locus-info/controlsUtils.ts +11 -0
  124. package/src/locus-info/index.ts +579 -113
  125. package/src/locus-info/selfUtils.ts +1 -0
  126. package/src/locus-info/types.ts +8 -0
  127. package/src/media/MediaConnectionAwaiter.ts +41 -1
  128. package/src/media/properties.ts +3 -1
  129. package/src/meeting/in-meeting-actions.ts +12 -0
  130. package/src/meeting/index.ts +221 -43
  131. package/src/meeting/request.ts +42 -0
  132. package/src/meeting/request.type.ts +6 -0
  133. package/src/meeting/util.ts +160 -2
  134. package/src/meetings/index.ts +157 -44
  135. package/src/member/index.ts +10 -0
  136. package/src/member/util.ts +12 -0
  137. package/src/metrics/constants.ts +1 -0
  138. package/src/multistream/mediaRequestManager.ts +4 -54
  139. package/src/multistream/remoteMediaManager.ts +13 -0
  140. package/src/reactions/reactions.type.ts +1 -0
  141. package/src/reconnection-manager/index.ts +0 -1
  142. package/src/webinar/index.ts +162 -5
  143. package/src/webinar/utils.ts +16 -0
  144. package/test/unit/spec/aiEnableRequest/index.ts +981 -0
  145. package/test/unit/spec/aiEnableRequest/utils.ts +130 -0
  146. package/test/unit/spec/annotation/index.ts +69 -7
  147. package/test/unit/spec/hashTree/hashTree.ts +66 -0
  148. package/test/unit/spec/hashTree/hashTreeParser.ts +2225 -189
  149. package/test/unit/spec/interceptors/dataChannelAuthToken.ts +210 -0
  150. package/test/unit/spec/interceptors/utils.ts +75 -0
  151. package/test/unit/spec/locus-info/controlsUtils.js +29 -0
  152. package/test/unit/spec/locus-info/index.js +1134 -55
  153. package/test/unit/spec/media/MediaConnectionAwaiter.ts +41 -1
  154. package/test/unit/spec/media/properties.ts +12 -3
  155. package/test/unit/spec/meeting/in-meeting-actions.ts +8 -2
  156. package/test/unit/spec/meeting/index.js +662 -85
  157. package/test/unit/spec/meeting/request.js +70 -0
  158. package/test/unit/spec/meeting/utils.js +438 -26
  159. package/test/unit/spec/meetings/index.js +653 -32
  160. package/test/unit/spec/member/index.js +28 -4
  161. package/test/unit/spec/member/util.js +65 -27
  162. package/test/unit/spec/multistream/mediaRequestManager.ts +2 -85
  163. package/test/unit/spec/multistream/remoteMediaManager.ts +30 -0
  164. package/test/unit/spec/reconnection-manager/index.js +4 -8
  165. package/test/unit/spec/webinar/index.ts +348 -36
  166. package/test/unit/spec/webinar/utils.ts +39 -0
@@ -1,12 +1,12 @@
1
1
  "use strict";
2
2
 
3
- var _Reflect$construct = require("@babel/runtime-corejs2/core-js/reflect/construct");
4
3
  var _Object$keys2 = require("@babel/runtime-corejs2/core-js/object/keys");
5
4
  var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs2/core-js/object/get-own-property-symbols");
6
5
  var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor");
7
6
  var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptors");
8
7
  var _Object$defineProperties = require("@babel/runtime-corejs2/core-js/object/define-properties");
9
8
  var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
9
+ var _Reflect$construct = require("@babel/runtime-corejs2/core-js/reflect/construct");
10
10
  var _Array$from = require("@babel/runtime-corejs2/core-js/array/from");
11
11
  var _Symbol = require("@babel/runtime-corejs2/core-js/symbol");
12
12
  var _Symbol$iterator = require("@babel/runtime-corejs2/core-js/symbol/iterator");
@@ -16,7 +16,7 @@ _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"));
19
+ exports.storeEventForDebugging = storeEventForDebugging;
20
20
  var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
21
21
  var _values = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/values"));
22
22
  var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
@@ -24,6 +24,7 @@ var _map = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/map"))
24
24
  var _isNan = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/number/is-nan"));
25
25
  var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys"));
26
26
  var _weakMap = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/weak-map"));
27
+ var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
27
28
  var _typeof2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/typeof"));
28
29
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
29
30
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
@@ -40,6 +41,7 @@ var _common = require("@webex/common");
40
41
  var _commonTimers = require("@webex/common-timers");
41
42
  var _internalPluginMetrics = require("@webex/internal-plugin-metrics");
42
43
  var _internalMediaCore = require("@webex/internal-media-core");
44
+ var _internalPluginLlm = require("@webex/internal-plugin-llm");
43
45
  var _mediaHelpers = require("@webex/media-helpers");
44
46
  var _internalPluginVoicea = require("@webex/internal-plugin-voicea");
45
47
  var _webCapabilities = require("@webex/web-capabilities");
@@ -90,18 +92,19 @@ var _joinWebinarError = _interopRequireDefault(require("../common/errors/join-we
90
92
  var _brbState = require("./brbState");
91
93
  var _multistreamNotSupportedError = _interopRequireDefault(require("../common/errors/multistream-not-supported-error"));
92
94
  var _joinForbiddenError = _interopRequireDefault(require("../common/errors/join-forbidden-error"));
95
+ var _aiEnableRequest = _interopRequireDefault(require("../aiEnableRequest"));
93
96
  function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof _Symbol && r[_Symbol$iterator] || r["@@iterator"]; if (!t) { if (_Array$isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
94
97
  function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? _Array$from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
95
98
  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; }
96
- function ownKeys(e, r) { var t = _Object$keys2(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
97
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty3.default)(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
98
99
  function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? _Reflect$construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
99
100
  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
100
101
  function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
101
102
  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
102
103
  function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
103
104
  function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }
104
- function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); } // @ts-ignore - Fix this
105
+ function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
106
+ function ownKeys(e, r) { var t = _Object$keys2(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
107
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty3.default)(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; } // @ts-ignore - Fix this
105
108
  // @ts-ignore - Types not available for @webex/common
106
109
  // default callback so we don't call an undefined function, but in practice it should never be used
107
110
  var DEFAULT_ICE_PHASE_CALLBACK = function DEFAULT_ICE_PHASE_CALLBACK() {
@@ -131,7 +134,6 @@ var ScreenShareFloorStatus = exports.ScreenShareFloorStatus = /*#__PURE__*/funct
131
134
  ScreenShareFloorStatus["RELEASED"] = "floor_released";
132
135
  return ScreenShareFloorStatus;
133
136
  }({});
134
- var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
135
137
  /**
136
138
  * MediaDirection
137
139
  * @typedef {Object} MediaDirection
@@ -143,12 +145,14 @@ var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
143
145
  * @property {boolean} receiveShare
144
146
  * @property {boolean} isSharing
145
147
  */
148
+
146
149
  /**
147
150
  * SharePreferences
148
151
  * @typedef {Object} SharePreferences
149
152
  * @property {Object} [shareConstraints]
150
153
  * @property {Boolean} [highFrameRate]
151
154
  */
155
+
152
156
  /**
153
157
  * JoinOptions
154
158
  * @typedef {Object} JoinOptions
@@ -160,12 +164,14 @@ var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
160
164
  * @property {Boolean} [rejoin]
161
165
  * @property {Boolean} [enableMultistream]
162
166
  */
167
+
163
168
  /**
164
169
  * Recording
165
170
  * @typedef {Object} Recording
166
171
  * @property {Object} state
167
172
  * @property {String} modifiedBy
168
173
  */
174
+
169
175
  /**
170
176
  * Meeting State Change Event
171
177
  * Emitted when ever there is a meeting state change
@@ -176,6 +182,7 @@ var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
176
182
  * @property {String} previousState previous state of the meeting
177
183
  * @memberof Meeting
178
184
  */
185
+
179
186
  /**
180
187
  * Media Ready Event
181
188
  * Emitted when a stream is ready to be rendered
@@ -186,6 +193,7 @@ var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
186
193
  * @property {String} type what type of stream, remote, local
187
194
  * @memberof Meeting
188
195
  */
196
+
189
197
  /**
190
198
  * Media Stopped Event
191
199
  * Emitted when a stream has stopped sending
@@ -195,6 +203,7 @@ var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
195
203
  * @property {String} type what type of stream, remote, local
196
204
  * @memberof Meeting
197
205
  */
206
+
198
207
  /**
199
208
  * Meeting Ringing Event
200
209
  * Emitted when this client should play a ringing sound, because this member is getting an incoming meeting
@@ -206,6 +215,7 @@ var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
206
215
  * @property {String} id
207
216
  * @memberof Meeting
208
217
  */
218
+
209
219
  /**
210
220
  * Meeting Ringing Stop Event
211
221
  * Emitted when this client should stop playing a ringing sound
@@ -218,6 +228,7 @@ var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
218
228
  * @property {String} id
219
229
  * @memberof Meeting
220
230
  */
231
+
221
232
  /**
222
233
  * Meeting Started Sharing Local Event
223
234
  * Emitted when this member starts sharing
@@ -226,6 +237,7 @@ var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
226
237
  * @type {Object}
227
238
  * @memberof Meeting
228
239
  */
240
+
229
241
  /**
230
242
  * Meeting Stopped Sharing Local Event
231
243
  * Emitted when this member stops sharing
@@ -234,6 +246,7 @@ var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
234
246
  * @type {Object}
235
247
  * @memberof Meeting
236
248
  */
249
+
237
250
  /**
238
251
  * Meeting Started Sharing Remote Event
239
252
  * Emitted when remote sharing starts
@@ -247,6 +260,7 @@ var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
247
260
  * @memberof Meeting
248
261
  *
249
262
  */
263
+
250
264
  /**
251
265
  * Meeting Stopped Sharing Remote Event
252
266
  * Emitted when remote screen sharing ends
@@ -255,6 +269,7 @@ var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
255
269
  * @type {Object}
256
270
  * @memberof Meeting
257
271
  */
272
+
258
273
  /**
259
274
  * Meeting Locked Event
260
275
  * Emitted when a meeting is locked
@@ -264,6 +279,7 @@ var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
264
279
  * @property {Object} info
265
280
  * @memberof Meeting
266
281
  */
282
+
267
283
  /**
268
284
  * Meeting Unlocked Event
269
285
  * Emitted when a meeting is unlocked
@@ -273,6 +289,7 @@ var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
273
289
  * @property {Object} info
274
290
  * @memberof Meeting
275
291
  */
292
+
276
293
  /**
277
294
  * Meeting Actions Update Event
278
295
  * Emitted when a user can take actions on a meeting such as lock, unlock, assign host
@@ -284,6 +301,7 @@ var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
284
301
  * @property {Boolean} canAssignHost
285
302
  * @memberof Meeting
286
303
  */
304
+
287
305
  /**
288
306
  * Meeting Unmuted By Others Event
289
307
  * Emitted when a member is unmuted by another member
@@ -293,6 +311,7 @@ var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
293
311
  * @property {Object} payload
294
312
  * @memberof Meeting
295
313
  */
314
+
296
315
  /**
297
316
  * Meeting Muted By Others Event
298
317
  * Emitted when a member is muted by another member
@@ -303,6 +322,7 @@ var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
303
322
  * @property {Boolean} payload.unmuteAllowed - whether the user is allowed to unmute self
304
323
  * @memberof Meeting
305
324
  */
325
+
306
326
  /**
307
327
  * Meeting Muted By Others Event
308
328
  * Emitted when the host(moderator)/co-host requests a user to unmute
@@ -312,6 +332,7 @@ var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
312
332
  * @property {Object} payload
313
333
  * @memberof Meeting
314
334
  */
335
+
315
336
  /**
316
337
  * Meeting Self Guest Admitted Event
317
338
  * Emitted when a joined user get admitted to the meeting by another member or host
@@ -321,6 +342,7 @@ var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
321
342
  * @property {Object} payload
322
343
  * @memberof Meeting
323
344
  */
345
+
324
346
  /**
325
347
  * Meeting Self Lobby Waiting Event
326
348
  * Emitted when joined user enters the lobby and is waiting for the webex meeting to begin
@@ -330,6 +352,7 @@ var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
330
352
  * @property {Object} reason Reason why user left the meeting
331
353
  * @memberof Meeting
332
354
  */
355
+
333
356
  /**
334
357
  * Meeting Self Left State
335
358
  * Emitted when user is inactive for more then 40 seconds, User can rejoin the meeting again
@@ -339,6 +362,7 @@ var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
339
362
  * @property {Object} payload
340
363
  * @memberof Meeting
341
364
  */
365
+
342
366
  /**
343
367
  * Reconnection Starting Event
344
368
  * Emitted when reconnection of media to the active meeting was successful
@@ -346,6 +370,7 @@ var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
346
370
  * @instance
347
371
  * @memberof Meeting
348
372
  */
373
+
349
374
  /**
350
375
  * Reconnection Success Event
351
376
  * Emitted when reconnection of media to the active meeting was successful
@@ -355,6 +380,7 @@ var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
355
380
  * @property {Object} reconnect
356
381
  * @memberof Meeting
357
382
  */
383
+
358
384
  /**
359
385
  * Reconnection Failure Event
360
386
  * Emitted when reconnection of media to the active meeting was successful
@@ -364,6 +390,7 @@ var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
364
390
  * @property {Error} error
365
391
  * @memberof Meeting
366
392
  */
393
+
367
394
  /**
368
395
  * Meeting network quality event
369
396
  * Emitted on each interval of retrieving stats Analyzer data
@@ -373,11 +400,33 @@ var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
373
400
  * @property {number} networkQualityScore - {1|0} 1 indicates acceptable uplink 0 indicates unacceptable uplink based on threshold
374
401
  * @memberof Meeting
375
402
  */
403
+
404
+ /**
405
+ * Stores an event so all events can be later retrieved via a console command for debugging.
406
+ * @param {string} type
407
+ * @param {Object} data
408
+ * @returns {void}
409
+ */
410
+ function storeEventForDebugging(type, data) {
411
+ var _window;
412
+ if ((_window = window) !== null && _window !== void 0 && _window.locusEvents) {
413
+ var _data$stateElementsMe;
414
+ // only store non-heartbeat hash tree messages
415
+ if (data.eventType === _constants.LOCUSEVENT.HASH_TREE_DATA_UPDATED && (_data$stateElementsMe = data.stateElementsMessage) !== null && _data$stateElementsMe !== void 0 && _data$stateElementsMe.locusStateElements) {
416
+ window.locusEvents.push(_objectSpread(_objectSpread({}, data), {}, {
417
+ timestamp: new Date().toLocaleString(),
418
+ type: type
419
+ }));
420
+ }
421
+ }
422
+ }
423
+
376
424
  /**
377
425
  * @description Meeting is the crux of the plugin
378
426
  * @export
379
427
  * @class Meeting
380
428
  */
429
+ var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
381
430
  var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
382
431
  /**
383
432
  * @param {Object} attrs
@@ -387,7 +436,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
387
436
  * @memberof Meeting
388
437
  */
389
438
  function Meeting(attrs, _options, callback) {
390
- var _attrs$callStateForMe, _attrs$callStateForMe2, _this$locusInfo, _this$locusInfo$links, _this$locusInfo$links2, _this$locusInfo$links3, _this$locusInfo2, _this$locusInfo2$full, _this$locusInfo3, _this$locusInfo4;
439
+ var _attrs$callStateForMe, _attrs$callStateForMe2, _this$locusInfo2, _this$locusInfo2$link, _this$locusInfo2$link2, _this$locusInfo2$link3, _this$locusInfo3, _this$locusInfo3$full, _this$locusInfo4, _this$locusInfo5;
391
440
  var _this;
392
441
  (0, _classCallCheck2.default)(this, Meeting);
393
442
  _this = _callSuper(this, Meeting, [{}, _options]);
@@ -403,6 +452,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
403
452
  (0, _defineProperty3.default)(_this, "breakouts", void 0);
404
453
  (0, _defineProperty3.default)(_this, "simultaneousInterpretation", void 0);
405
454
  (0, _defineProperty3.default)(_this, "annotation", void 0);
455
+ (0, _defineProperty3.default)(_this, "aiEnableRequest", void 0);
406
456
  (0, _defineProperty3.default)(_this, "webinar", void 0);
407
457
  (0, _defineProperty3.default)(_this, "conversationUrl", void 0);
408
458
  (0, _defineProperty3.default)(_this, "callStateForMetrics", void 0);
@@ -452,6 +502,13 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
452
502
  (0, _defineProperty3.default)(_this, "keepAliveTimerId", void 0);
453
503
  (0, _defineProperty3.default)(_this, "lastVideoLayoutInfo", void 0);
454
504
  (0, _defineProperty3.default)(_this, "locusInfo", void 0);
505
+ // this group of properties is populated via updateMeetingObject() that's registered as a callback with LocusInfo
506
+ (0, _defineProperty3.default)(_this, "isUserUnadmitted", void 0);
507
+ (0, _defineProperty3.default)(_this, "joinedWith", void 0);
508
+ (0, _defineProperty3.default)(_this, "selfId", void 0);
509
+ (0, _defineProperty3.default)(_this, "roles", void 0);
510
+ // ... there is more ... see SelfUtils.parse()
511
+ // end of the group
455
512
  (0, _defineProperty3.default)(_this, "locusMediaRequest", void 0);
456
513
  (0, _defineProperty3.default)(_this, "mediaProperties", void 0);
457
514
  (0, _defineProperty3.default)(_this, "mediaRequestManagers", void 0);
@@ -480,7 +537,6 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
480
537
  (0, _defineProperty3.default)(_this, "endCallInitJoinReq", void 0);
481
538
  (0, _defineProperty3.default)(_this, "endJoinReqResp", void 0);
482
539
  (0, _defineProperty3.default)(_this, "endLocalSDPGenRemoteSDPRecvDelay", void 0);
483
- (0, _defineProperty3.default)(_this, "joinedWith", void 0);
484
540
  (0, _defineProperty3.default)(_this, "locusId", void 0);
485
541
  (0, _defineProperty3.default)(_this, "startCallInitJoinReq", void 0);
486
542
  (0, _defineProperty3.default)(_this, "startJoinReqResp", void 0);
@@ -495,12 +551,11 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
495
551
  (0, _defineProperty3.default)(_this, "permissionTokenReceivedLocalTime", void 0);
496
552
  (0, _defineProperty3.default)(_this, "resourceId", void 0);
497
553
  (0, _defineProperty3.default)(_this, "resourceUrl", void 0);
498
- (0, _defineProperty3.default)(_this, "selfId", void 0);
499
554
  (0, _defineProperty3.default)(_this, "state", void 0);
500
555
  (0, _defineProperty3.default)(_this, "localAudioStreamMuteStateHandler", void 0);
501
556
  (0, _defineProperty3.default)(_this, "localVideoStreamMuteStateHandler", void 0);
502
557
  (0, _defineProperty3.default)(_this, "localOutputTrackChangeHandler", void 0);
503
- (0, _defineProperty3.default)(_this, "roles", void 0);
558
+ (0, _defineProperty3.default)(_this, "localConstraintsChangeHandler", void 0);
504
559
  (0, _defineProperty3.default)(_this, "environment", void 0);
505
560
  (0, _defineProperty3.default)(_this, "namespace", _constants.MEETINGS);
506
561
  (0, _defineProperty3.default)(_this, "allowMediaInLobby", void 0);
@@ -570,6 +625,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
570
625
  */
571
626
  (0, _defineProperty3.default)(_this, "processLocusLLMEvent", function (event) {
572
627
  if (event.data.eventType === _constants.LOCUSEVENT.HASH_TREE_DATA_UPDATED) {
628
+ // @ts-ignore
629
+ if (_this.config.experimental.storeLocusHashTreeEventsForDebugging) {
630
+ storeEventForDebugging('llm', event.data);
631
+ }
573
632
  _this.locusInfo.parse(_this, event.data);
574
633
  } else {
575
634
  _loggerProxy.default.logger.warn("Meeting:index#processLocusLLMEvent --> Unknown event type: ".concat(event.data.eventType));
@@ -587,13 +646,14 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
587
646
  if (
588
647
  // @ts-ignore - config coming from registerPlugin
589
648
  (_this.config.receiveReactions || options.receiveReactions) && _this.isReactionsSupported()) {
649
+ var _this$locusInfo, _this$locusInfo$info;
590
650
  var member = _this.members.membersCollection.get(e.data.sender.participantId);
591
- if (!member) {
651
+ if (!member && !((_this$locusInfo = _this.locusInfo) !== null && _this$locusInfo !== void 0 && (_this$locusInfo$info = _this$locusInfo.info) !== null && _this$locusInfo$info !== void 0 && _this$locusInfo$info.isWebinar)) {
592
652
  // @ts-ignore -- fix type
593
653
  _loggerProxy.default.logger.warn("Meeting:index#processRelayEvent --> Skipping handling of ".concat(_constants3.REACTION_RELAY_TYPES.REACTION, " for ").concat(_this.id, ". participantId ").concat(e.data.sender.participantId, " does not exist in membersCollection."));
594
654
  break;
595
655
  }
596
- var name = member.name;
656
+ var name = member && member.name || e.data.sender.displayName;
597
657
  var processedReaction = {
598
658
  reaction: e.data.reaction,
599
659
  sender: {
@@ -626,6 +686,61 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
626
686
  function: 'handleLLMOnline'
627
687
  }, _constants.EVENT_TRIGGERS.MEETING_TRANSCRIPTION_CONNECTED, undefined);
628
688
  });
689
+ /**
690
+ * Disconnects and cleans up the default LLM session listeners/timers.
691
+ * @param {Object} options
692
+ * @param {boolean} [options.removeOnlineListener=true] removes the one-time online listener
693
+ * @param {boolean} [options.throwOnError=true] rethrows disconnect errors when true
694
+ * @returns {Promise<void>}
695
+ */
696
+ (0, _defineProperty3.default)(_this, "cleanupLLMConneciton", /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee() {
697
+ var _ref3,
698
+ _ref3$removeOnlineLis,
699
+ removeOnlineListener,
700
+ _ref3$throwOnError,
701
+ throwOnError,
702
+ _args = arguments,
703
+ _t;
704
+ return _regenerator.default.wrap(function (_context) {
705
+ while (1) switch (_context.prev = _context.next) {
706
+ case 0:
707
+ _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;
708
+ _context.prev = 1;
709
+ _context.next = 2;
710
+ return _this.webex.internal.llm.disconnectLLM({
711
+ code: 3050,
712
+ reason: 'done (permanent)'
713
+ });
714
+ case 2:
715
+ _context.next = 4;
716
+ break;
717
+ case 3:
718
+ _context.prev = 3;
719
+ _t = _context["catch"](1);
720
+ _loggerProxy.default.logger.error('Meeting:index#cleanupLLMConneciton --> Failed to disconnect default LLM session', _t);
721
+ if (!throwOnError) {
722
+ _context.next = 4;
723
+ break;
724
+ }
725
+ throw _t;
726
+ case 4:
727
+ _context.prev = 4;
728
+ if (removeOnlineListener) {
729
+ // @ts-ignore - Fix type
730
+ _this.webex.internal.llm.off('online', _this.handleLLMOnline);
731
+ }
732
+ // @ts-ignore - fix types
733
+ _this.webex.internal.llm.off('event:relay.event', _this.processRelayEvent);
734
+ // @ts-ignore - Fix type
735
+ _this.webex.internal.llm.off(_constants.LOCUS_LLM_EVENT, _this.processLocusLLMEvent);
736
+ _this.clearLLMHealthCheckTimer();
737
+ return _context.finish(4);
738
+ case 5:
739
+ case "end":
740
+ return _context.stop();
741
+ }
742
+ }, _callee, null, [[1, 3, 4, 5]]);
743
+ })));
629
744
  /**
630
745
  * Handles ROAP_FAILURE event from the webrtc media connection
631
746
  *
@@ -811,8 +926,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
811
926
  seq: event.roapMessage.seq,
812
927
  tieBreaker: event.roapMessage.tieBreaker,
813
928
  meeting: _this // or can pass meeting ID
814
- }).then(function (_ref2) {
815
- var roapAnswer = _ref2.roapAnswer;
929
+ }).then(function (_ref4) {
930
+ var roapAnswer = _ref4.roapAnswer;
816
931
  if (roapAnswer) {
817
932
  _loggerProxy.default.logger.log("".concat(LOG_HEADER, " received Roap ANSWER in http response"));
818
933
  _this.roapMessageReceived(roapAnswer);
@@ -1215,32 +1330,32 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
1215
1330
  * @returns {Promise<void>}
1216
1331
  */
1217
1332
  (0, _defineProperty3.default)(_this, "forceSendStatsReport", /*#__PURE__*/function () {
1218
- var _ref4 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee(_ref3) {
1219
- var callFrom, LOG_HEADER, _this$mediaProperties, _this$mediaProperties2, _t;
1220
- return _regenerator.default.wrap(function (_context) {
1221
- while (1) switch (_context.prev = _context.next) {
1333
+ var _ref6 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee2(_ref5) {
1334
+ var callFrom, LOG_HEADER, _this$mediaProperties, _this$mediaProperties2, _t2;
1335
+ return _regenerator.default.wrap(function (_context2) {
1336
+ while (1) switch (_context2.prev = _context2.next) {
1222
1337
  case 0:
1223
- callFrom = _ref3.callFrom;
1338
+ callFrom = _ref5.callFrom;
1224
1339
  LOG_HEADER = "Meeting:index#forceSendStatsReport --> called from ".concat(callFrom, " : ");
1225
- _context.prev = 1;
1226
- _context.next = 2;
1340
+ _context2.prev = 1;
1341
+ _context2.next = 2;
1227
1342
  return (_this$mediaProperties = _this.mediaProperties) === null || _this$mediaProperties === void 0 ? void 0 : (_this$mediaProperties2 = _this$mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties2 === void 0 ? void 0 : _this$mediaProperties2.forceRtcMetricsSend();
1228
1343
  case 2:
1229
1344
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " successfully uploaded available webrtc telemetry statistics"));
1230
- _context.next = 4;
1345
+ _context2.next = 4;
1231
1346
  break;
1232
1347
  case 3:
1233
- _context.prev = 3;
1234
- _t = _context["catch"](1);
1235
- _loggerProxy.default.logger.error("".concat(LOG_HEADER, " failed to upload webrtc telemetry statistics: "), _t);
1348
+ _context2.prev = 3;
1349
+ _t2 = _context2["catch"](1);
1350
+ _loggerProxy.default.logger.error("".concat(LOG_HEADER, " failed to upload webrtc telemetry statistics: "), _t2);
1236
1351
  case 4:
1237
1352
  case "end":
1238
- return _context.stop();
1353
+ return _context2.stop();
1239
1354
  }
1240
- }, _callee, null, [[1, 3]]);
1355
+ }, _callee2, null, [[1, 3]]);
1241
1356
  }));
1242
1357
  return function (_x) {
1243
- return _ref4.apply(this, arguments);
1358
+ return _ref6.apply(this, arguments);
1244
1359
  };
1245
1360
  }());
1246
1361
  /**
@@ -1300,40 +1415,40 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
1300
1415
  * @memberof Meeting
1301
1416
  * @returns {undefined}
1302
1417
  */
1303
- (0, _defineProperty3.default)(_this, "handleShareAudioStreamEnded", /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee2() {
1304
- var _t2;
1305
- return _regenerator.default.wrap(function (_context2) {
1306
- while (1) switch (_context2.prev = _context2.next) {
1418
+ (0, _defineProperty3.default)(_this, "handleShareAudioStreamEnded", /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee3() {
1419
+ var _t3;
1420
+ return _regenerator.default.wrap(function (_context3) {
1421
+ while (1) switch (_context3.prev = _context3.next) {
1307
1422
  case 0:
1308
1423
  _loggerProxy.default.logger.info("Meeting:index#handleShareAudioStreamEnded --> audio share stream ended");
1309
1424
  // current share audio stream has ended, but there might be an active
1310
1425
  // share video stream. we only leave from wireless share if share has
1311
1426
  // completely ended, which means no share audio or video streams active
1312
1427
  if (!(_this.wirelessShare && !_this.mediaProperties.shareVideoStream)) {
1313
- _context2.next = 1;
1428
+ _context3.next = 1;
1314
1429
  break;
1315
1430
  }
1316
1431
  _this.leave({
1317
1432
  reason: _constants.MEETING_REMOVED_REASON.USER_ENDED_SHARE_STREAMS
1318
1433
  });
1319
- _context2.next = 4;
1434
+ _context3.next = 4;
1320
1435
  break;
1321
1436
  case 1:
1322
- _context2.prev = 1;
1323
- _context2.next = 2;
1437
+ _context3.prev = 1;
1438
+ _context3.next = 2;
1324
1439
  return _this.unpublishStreams([_this.mediaProperties.shareAudioStream]);
1325
1440
  case 2:
1326
- _context2.next = 4;
1441
+ _context3.next = 4;
1327
1442
  break;
1328
1443
  case 3:
1329
- _context2.prev = 3;
1330
- _t2 = _context2["catch"](1);
1331
- _loggerProxy.default.logger.log('Meeting:index#handleShareAudioStreamEnded --> Error stopping share: ', _t2);
1444
+ _context3.prev = 3;
1445
+ _t3 = _context3["catch"](1);
1446
+ _loggerProxy.default.logger.log('Meeting:index#handleShareAudioStreamEnded --> Error stopping share: ', _t3);
1332
1447
  case 4:
1333
1448
  case "end":
1334
- return _context2.stop();
1449
+ return _context3.stop();
1335
1450
  }
1336
- }, _callee2, null, [[1, 3]]);
1451
+ }, _callee3, null, [[1, 3]]);
1337
1452
  })));
1338
1453
  /**
1339
1454
  * Functionality for when a share video is muted or unmuted.
@@ -1365,42 +1480,42 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
1365
1480
  * @memberof Meeting
1366
1481
  * @returns {undefined}
1367
1482
  */
1368
- (0, _defineProperty3.default)(_this, "handleShareVideoStreamEnded", /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee3() {
1369
- var _t3;
1370
- return _regenerator.default.wrap(function (_context3) {
1371
- while (1) switch (_context3.prev = _context3.next) {
1483
+ (0, _defineProperty3.default)(_this, "handleShareVideoStreamEnded", /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee4() {
1484
+ var _t4;
1485
+ return _regenerator.default.wrap(function (_context4) {
1486
+ while (1) switch (_context4.prev = _context4.next) {
1372
1487
  case 0:
1373
1488
  _loggerProxy.default.logger.info("Meeting:index#handleShareVideoStreamEnded --> video share stream ended");
1374
1489
  // current share video stream has ended, but there might be an active
1375
1490
  // share audio stream. we only leave from wireless share if share has
1376
1491
  // completely ended, which means no share audio or video streams active
1377
1492
  if (!(_this.wirelessShare && !_this.mediaProperties.shareAudioStream)) {
1378
- _context3.next = 1;
1493
+ _context4.next = 1;
1379
1494
  break;
1380
1495
  }
1381
1496
  _this.leave({
1382
1497
  reason: _constants.MEETING_REMOVED_REASON.USER_ENDED_SHARE_STREAMS
1383
1498
  });
1384
- _context3.next = 4;
1499
+ _context4.next = 4;
1385
1500
  break;
1386
1501
  case 1:
1387
- _context3.prev = 1;
1388
- _context3.next = 2;
1502
+ _context4.prev = 1;
1503
+ _context4.next = 2;
1389
1504
  return _this.unpublishStreams([_this.mediaProperties.shareVideoStream]);
1390
1505
  case 2:
1391
- _context3.next = 4;
1506
+ _context4.next = 4;
1392
1507
  break;
1393
1508
  case 3:
1394
- _context3.prev = 3;
1395
- _t3 = _context3["catch"](1);
1396
- _loggerProxy.default.logger.log('Meeting:index#handleShareVideoStreamEnded --> Error stopping share: ', _t3);
1509
+ _context4.prev = 3;
1510
+ _t4 = _context4["catch"](1);
1511
+ _loggerProxy.default.logger.log('Meeting:index#handleShareVideoStreamEnded --> Error stopping share: ', _t4);
1397
1512
  case 4:
1398
1513
  _this.triggerStoppedSharing();
1399
1514
  case 5:
1400
1515
  case "end":
1401
- return _context3.stop();
1516
+ return _context4.stop();
1402
1517
  }
1403
- }, _callee3, null, [[1, 3]]);
1518
+ }, _callee4, null, [[1, 3]]);
1404
1519
  })));
1405
1520
  /**
1406
1521
  * Emits meeting:stoppedSharingLocal
@@ -1424,26 +1539,32 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
1424
1539
  * @public
1425
1540
  * @memberof Meeting
1426
1541
  */
1427
- (0, _defineProperty3.default)(_this, "clearMeetingData", function () {
1428
- _this.audio = null;
1429
- _this.video = null;
1430
- _this.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
1431
- if (_this.shareStatus === _constants.SHARE_STATUS.LOCAL_SHARE_ACTIVE) {
1432
- _this.shareStatus = _constants.SHARE_STATUS.NO_SHARE;
1433
- }
1434
- _this.queuedMediaUpdates = [];
1435
- if (_this.transcription) {
1436
- _this.stopTranscription();
1437
- _this.transcription = undefined;
1438
- }
1439
- _this.annotation.deregisterEvents();
1440
-
1441
- // @ts-ignore - fix types
1442
- _this.webex.internal.llm.off('event:relay.event', _this.processRelayEvent);
1443
- // @ts-ignore - Fix type
1444
- _this.webex.internal.llm.off(_constants.LOCUS_LLM_EVENT, _this.processLocusLLMEvent);
1445
- _this.clearLLMHealthCheckTimer();
1446
- });
1542
+ (0, _defineProperty3.default)(_this, "clearMeetingData", /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee5() {
1543
+ return _regenerator.default.wrap(function (_context5) {
1544
+ while (1) switch (_context5.prev = _context5.next) {
1545
+ case 0:
1546
+ _this.audio = null;
1547
+ _this.video = null;
1548
+ _this.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
1549
+ if (_this.shareStatus === _constants.SHARE_STATUS.LOCAL_SHARE_ACTIVE) {
1550
+ _this.shareStatus = _constants.SHARE_STATUS.NO_SHARE;
1551
+ }
1552
+ _this.queuedMediaUpdates = [];
1553
+ if (_this.transcription) {
1554
+ _this.stopTranscription();
1555
+ _this.transcription = undefined;
1556
+ }
1557
+ _this.annotation.deregisterEvents();
1558
+ _context5.next = 1;
1559
+ return _this.cleanupLLMConneciton({
1560
+ throwOnError: false
1561
+ });
1562
+ case 1:
1563
+ case "end":
1564
+ return _context5.stop();
1565
+ }
1566
+ }, _callee5);
1567
+ })));
1447
1568
  /**
1448
1569
  * starts keepAlives being sent
1449
1570
  * @returns {void}
@@ -1606,6 +1727,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
1606
1727
  _this.simultaneousInterpretation = new _interpretation.default({}, {
1607
1728
  parent: _this.webex
1608
1729
  });
1730
+
1731
+ // @ts-ignore
1732
+ _this.aiEnableRequest = new _aiEnableRequest.default({}, {
1733
+ parent: _this.webex
1734
+ });
1735
+
1609
1736
  /**
1610
1737
  * @instance
1611
1738
  * @type {Annotation}
@@ -2185,9 +2312,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2185
2312
  * @memberof Meeting
2186
2313
  */
2187
2314
  _this.recordingController = new _recordingController.default(_this.meetingRequest, {
2188
- serviceUrl: (_this$locusInfo = _this.locusInfo) === null || _this$locusInfo === void 0 ? void 0 : (_this$locusInfo$links = _this$locusInfo.links) === null || _this$locusInfo$links === void 0 ? void 0 : (_this$locusInfo$links2 = _this$locusInfo$links.services) === null || _this$locusInfo$links2 === void 0 ? void 0 : (_this$locusInfo$links3 = _this$locusInfo$links2.record) === null || _this$locusInfo$links3 === void 0 ? void 0 : _this$locusInfo$links3.url,
2189
- sessionId: (_this$locusInfo2 = _this.locusInfo) === null || _this$locusInfo2 === void 0 ? void 0 : (_this$locusInfo2$full = _this$locusInfo2.fullState) === null || _this$locusInfo2$full === void 0 ? void 0 : _this$locusInfo2$full.sessionId,
2190
- locusUrl: (_this$locusInfo3 = _this.locusInfo) === null || _this$locusInfo3 === void 0 ? void 0 : _this$locusInfo3.url,
2315
+ 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,
2316
+ 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,
2317
+ locusUrl: (_this$locusInfo4 = _this.locusInfo) === null || _this$locusInfo4 === void 0 ? void 0 : _this$locusInfo4.url,
2191
2318
  displayHints: []
2192
2319
  });
2193
2320
 
@@ -2199,7 +2326,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2199
2326
  * @memberof Meeting
2200
2327
  */
2201
2328
  _this.controlsOptionsManager = new _controlsOptionsManager.default(_this.meetingRequest, {
2202
- locusUrl: (_this$locusInfo4 = _this.locusInfo) === null || _this$locusInfo4 === void 0 ? void 0 : _this$locusInfo4.url,
2329
+ locusUrl: (_this$locusInfo5 = _this.locusInfo) === null || _this$locusInfo5 === void 0 ? void 0 : _this$locusInfo5.url,
2203
2330
  displayHints: []
2204
2331
  });
2205
2332
  _this.setUpLocusInfoListeners();
@@ -2228,6 +2355,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2228
2355
  _this.updateTranscodedMediaConnection();
2229
2356
  }
2230
2357
  };
2358
+ _this.localConstraintsChangeHandler = function () {
2359
+ if (!_this.isMultistream) {
2360
+ var _this$mediaProperties6;
2361
+ (_this$mediaProperties6 = _this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties6 === void 0 ? void 0 : _this$mediaProperties6.updatePreferredBitrateKbps();
2362
+ }
2363
+ };
2231
2364
 
2232
2365
  /**
2233
2366
  * Promise that exists if SDP offer has been generated, and resolves once sdp answer is received.
@@ -2564,20 +2697,20 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2564
2697
  }, {
2565
2698
  key: "injectMeetingInfo",
2566
2699
  value: (function () {
2567
- var _injectMeetingInfo = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee4(meetingInfo, fetchParams, meetingLookupUrl) {
2568
- return _regenerator.default.wrap(function (_context4) {
2569
- while (1) switch (_context4.prev = _context4.next) {
2700
+ var _injectMeetingInfo = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee6(meetingInfo, fetchParams, meetingLookupUrl) {
2701
+ return _regenerator.default.wrap(function (_context6) {
2702
+ while (1) switch (_context6.prev = _context6.next) {
2570
2703
  case 0:
2571
- _context4.next = 1;
2704
+ _context6.next = 1;
2572
2705
  return this.prepForFetchMeetingInfo(fetchParams, 'injectMeetingInfo');
2573
2706
  case 1:
2574
2707
  this.parseMeetingInfo(meetingInfo, this.destination);
2575
2708
  this.setMeetingInfo(meetingInfo, meetingLookupUrl);
2576
2709
  case 2:
2577
2710
  case "end":
2578
- return _context4.stop();
2711
+ return _context6.stop();
2579
2712
  }
2580
- }, _callee4, this);
2713
+ }, _callee6, this);
2581
2714
  }));
2582
2715
  function injectMeetingInfo(_x2, _x3, _x4) {
2583
2716
  return _injectMeetingInfo.apply(this, arguments);
@@ -2596,15 +2729,15 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2596
2729
  )
2597
2730
  }, {
2598
2731
  key: "prepForFetchMeetingInfo",
2599
- value: function prepForFetchMeetingInfo(_ref7, caller) {
2600
- var _ref7$password = _ref7.password,
2601
- password = _ref7$password === void 0 ? null : _ref7$password,
2602
- _ref7$registrationId = _ref7.registrationId,
2603
- registrationId = _ref7$registrationId === void 0 ? null : _ref7$registrationId,
2604
- _ref7$captchaCode = _ref7.captchaCode,
2605
- captchaCode = _ref7$captchaCode === void 0 ? null : _ref7$captchaCode,
2606
- _ref7$extraParams = _ref7.extraParams,
2607
- extraParams = _ref7$extraParams === void 0 ? {} : _ref7$extraParams;
2732
+ value: function prepForFetchMeetingInfo(_ref0, caller) {
2733
+ var _ref0$password = _ref0.password,
2734
+ password = _ref0$password === void 0 ? null : _ref0$password,
2735
+ _ref0$registrationId = _ref0.registrationId,
2736
+ registrationId = _ref0$registrationId === void 0 ? null : _ref0$registrationId,
2737
+ _ref0$captchaCode = _ref0.captchaCode,
2738
+ captchaCode = _ref0$captchaCode === void 0 ? null : _ref0$captchaCode,
2739
+ _ref0$extraParams = _ref0.extraParams,
2740
+ extraParams = _ref0$extraParams === void 0 ? {} : _ref0$extraParams;
2608
2741
  // when fetch meeting info is called directly by the client, we want to clear out the random timer for sdk to do it
2609
2742
  if (this.fetchMeetingInfoTimeoutId) {
2610
2743
  clearTimeout(this.fetchMeetingInfoTimeoutId);
@@ -2628,18 +2761,18 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2628
2761
  }, {
2629
2762
  key: "fetchMeetingInfoInternal",
2630
2763
  value: (function () {
2631
- var _fetchMeetingInfoInternal = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee5(_ref8) {
2632
- var destination, destinationType, _ref8$password, password, _ref8$captchaCode, captchaCode, _ref8$extraParams, extraParams, _ref8$sendCAevents, sendCAevents, _ref8$registrationId, registrationId, _ref8$classificationI, classificationId, captchaInfo, info, _err$body, _err$body2, _t4;
2633
- return _regenerator.default.wrap(function (_context5) {
2634
- while (1) switch (_context5.prev = _context5.next) {
2764
+ var _fetchMeetingInfoInternal = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee7(_ref1) {
2765
+ 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;
2766
+ return _regenerator.default.wrap(function (_context7) {
2767
+ while (1) switch (_context7.prev = _context7.next) {
2635
2768
  case 0:
2636
- destination = _ref8.destination, destinationType = _ref8.destinationType, _ref8$password = _ref8.password, password = _ref8$password === void 0 ? null : _ref8$password, _ref8$captchaCode = _ref8.captchaCode, captchaCode = _ref8$captchaCode === void 0 ? null : _ref8$captchaCode, _ref8$extraParams = _ref8.extraParams, extraParams = _ref8$extraParams === void 0 ? {} : _ref8$extraParams, _ref8$sendCAevents = _ref8.sendCAevents, sendCAevents = _ref8$sendCAevents === void 0 ? false : _ref8$sendCAevents, _ref8$registrationId = _ref8.registrationId, registrationId = _ref8$registrationId === void 0 ? null : _ref8$registrationId, _ref8$classificationI = _ref8.classificationId, classificationId = _ref8$classificationI === void 0 ? null : _ref8$classificationI;
2637
- _context5.prev = 1;
2769
+ 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;
2770
+ _context7.prev = 1;
2638
2771
  captchaInfo = captchaCode ? {
2639
2772
  code: captchaCode,
2640
2773
  id: this.requiredCaptcha.captchaId
2641
2774
  } : null;
2642
- _context5.next = 2;
2775
+ _context7.next = 2;
2643
2776
  return this.attrs.meetingInfoProvider.fetchMeetingInfo(destination, destinationType, password, captchaInfo,
2644
2777
  // @ts-ignore - config coming from registerPlugin
2645
2778
  this.config.installedOrgID, this.locusId, extraParams, {
@@ -2647,112 +2780,112 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2647
2780
  sendCAevents: sendCAevents
2648
2781
  }, registrationId, null, classificationId);
2649
2782
  case 2:
2650
- info = _context5.sent;
2783
+ info = _context7.sent;
2651
2784
  this.parseMeetingInfo(info === null || info === void 0 ? void 0 : info.body, this.destination, info === null || info === void 0 ? void 0 : info.errors);
2652
2785
  this.setMeetingInfo(info === null || info === void 0 ? void 0 : info.body, info === null || info === void 0 ? void 0 : info.url);
2653
- return _context5.abrupt("return", _promise.default.resolve());
2786
+ return _context7.abrupt("return", _promise.default.resolve());
2654
2787
  case 3:
2655
- _context5.prev = 3;
2656
- _t4 = _context5["catch"](1);
2788
+ _context7.prev = 3;
2789
+ _t5 = _context7["catch"](1);
2657
2790
  this.updateMeetingActions();
2658
- if (!(_t4 instanceof _meetingInfoV.MeetingInfoV2PolicyError)) {
2659
- _context5.next = 4;
2791
+ if (!(_t5 instanceof _meetingInfoV.MeetingInfoV2PolicyError)) {
2792
+ _context7.next = 4;
2660
2793
  break;
2661
2794
  }
2662
2795
  this.meetingInfoFailureReason = _constants.MEETING_INFO_FAILURE_REASON.POLICY;
2663
- this.meetingInfoFailureCode = _t4.wbxAppApiCode;
2664
- if (_t4.meetingInfo) {
2665
- this.meetingInfo = _t4.meetingInfo;
2796
+ this.meetingInfoFailureCode = _t5.wbxAppApiCode;
2797
+ if (_t5.meetingInfo) {
2798
+ this.meetingInfo = _t5.meetingInfo;
2666
2799
  }
2667
2800
  throw new _permission.default();
2668
2801
  case 4:
2669
- if (!(_t4 instanceof _meetingInfoV.MeetingInfoV2JoinWebinarError)) {
2670
- _context5.next = 5;
2802
+ if (!(_t5 instanceof _meetingInfoV.MeetingInfoV2JoinWebinarError)) {
2803
+ _context7.next = 5;
2671
2804
  break;
2672
2805
  }
2673
2806
  this.meetingInfoFailureReason = _constants.MEETING_INFO_FAILURE_REASON.WEBINAR_REGISTRATION;
2674
- if (_constants.WEBINAR_ERROR_WEBCAST.includes(_t4.wbxAppApiCode)) {
2807
+ if (_constants.WEBINAR_ERROR_WEBCAST.includes(_t5.wbxAppApiCode)) {
2675
2808
  this.meetingInfoFailureReason = _constants.MEETING_INFO_FAILURE_REASON.NEED_JOIN_WITH_WEBCAST;
2676
- } else if (_constants.WEBINAR_ERROR_REGISTRATION_ID.includes(_t4.wbxAppApiCode)) {
2809
+ } else if (_constants.WEBINAR_ERROR_REGISTRATION_ID.includes(_t5.wbxAppApiCode)) {
2677
2810
  this.meetingInfoFailureReason = _constants.MEETING_INFO_FAILURE_REASON.WEBINAR_NEED_REGISTRATION_ID;
2678
2811
  }
2679
- this.meetingInfoFailureCode = _t4.wbxAppApiCode;
2680
- if (_t4.meetingInfo) {
2681
- this.meetingInfo = _t4.meetingInfo;
2812
+ this.meetingInfoFailureCode = _t5.wbxAppApiCode;
2813
+ if (_t5.meetingInfo) {
2814
+ this.meetingInfo = _t5.meetingInfo;
2682
2815
  }
2683
2816
  this.requiredCaptcha = null;
2684
2817
  throw new _joinWebinarError.default();
2685
2818
  case 5:
2686
- if (!(_t4 instanceof _meetingInfoV.MeetingInfoV2JoinForbiddenError)) {
2687
- _context5.next = 6;
2819
+ if (!(_t5 instanceof _meetingInfoV.MeetingInfoV2JoinForbiddenError)) {
2820
+ _context7.next = 6;
2688
2821
  break;
2689
2822
  }
2690
2823
  this.meetingInfoFailureReason = _constants.MEETING_INFO_FAILURE_REASON.JOIN_FORBIDDEN;
2691
- this.meetingInfoFailureCode = _t4.wbxAppApiCode;
2692
- if (_t4.meetingInfo) {
2693
- this.meetingInfo = _t4.meetingInfo;
2824
+ this.meetingInfoFailureCode = _t5.wbxAppApiCode;
2825
+ if (_t5.meetingInfo) {
2826
+ this.meetingInfo = _t5.meetingInfo;
2694
2827
  }
2695
2828
 
2696
2829
  // Handle the case where user hasn't reached Join Before Host (JBH) time (error code 403003)
2697
- if (_constants.JOIN_BEFORE_HOST === _t4.wbxAppApiCode) {
2830
+ if (_constants.JOIN_BEFORE_HOST === _t5.wbxAppApiCode) {
2698
2831
  this.meetingInfoFailureReason = _constants.MEETING_INFO_FAILURE_REASON.NOT_REACH_JBH;
2699
2832
  }
2700
- throw new _joinForbiddenError.default(this.meetingInfoFailureReason, _t4);
2833
+ throw new _joinForbiddenError.default(this.meetingInfoFailureReason, _t5);
2701
2834
  case 6:
2702
- if (!(_t4 instanceof _meetingInfoV.MeetingInfoV2PasswordError)) {
2703
- _context5.next = 8;
2835
+ if (!(_t5 instanceof _meetingInfoV.MeetingInfoV2PasswordError)) {
2836
+ _context7.next = 8;
2704
2837
  break;
2705
2838
  }
2706
2839
  _loggerProxy.default.logger.info(// @ts-ignore
2707
- "Meeting:index#fetchMeetingInfo --> Info Unable to fetch meeting info for ".concat(this.destination, " - password required (code=").concat(_t4 === null || _t4 === void 0 ? void 0 : (_err$body = _t4.body) === null || _err$body === void 0 ? void 0 : _err$body.code, ")."));
2840
+ "Meeting:index#fetchMeetingInfo --> Info Unable to fetch meeting info for ".concat(this.destination, " - password required (code=").concat(_t5 === null || _t5 === void 0 ? void 0 : (_err$body = _t5.body) === null || _err$body === void 0 ? void 0 : _err$body.code, ")."));
2708
2841
 
2709
2842
  // when wbxappapi requires password it still populates partial meeting info in the response
2710
- if (_t4.meetingInfo) {
2711
- this.meetingInfo = _t4.meetingInfo;
2712
- this.meetingNumber = _t4.meetingInfo.meetingNumber;
2843
+ if (_t5.meetingInfo) {
2844
+ this.meetingInfo = _t5.meetingInfo;
2845
+ this.meetingNumber = _t5.meetingInfo.meetingNumber;
2713
2846
  }
2714
- this.meetingInfoFailureCode = _t4.wbxAppApiCode;
2847
+ this.meetingInfoFailureCode = _t5.wbxAppApiCode;
2715
2848
  this.passwordStatus = _constants.PASSWORD_STATUS.REQUIRED;
2716
2849
  this.meetingInfoFailureReason = _constants.MEETING_INFO_FAILURE_REASON.WRONG_PASSWORD;
2717
2850
  if (!this.requiredCaptcha) {
2718
- _context5.next = 7;
2851
+ _context7.next = 7;
2719
2852
  break;
2720
2853
  }
2721
- _context5.next = 7;
2854
+ _context7.next = 7;
2722
2855
  return this.refreshCaptcha();
2723
2856
  case 7:
2724
2857
  throw new _passwordError.default();
2725
2858
  case 8:
2726
- if (!(_t4 instanceof _meetingInfoV.MeetingInfoV2CaptchaError)) {
2727
- _context5.next = 9;
2859
+ if (!(_t5 instanceof _meetingInfoV.MeetingInfoV2CaptchaError)) {
2860
+ _context7.next = 9;
2728
2861
  break;
2729
2862
  }
2730
2863
  _loggerProxy.default.logger.info(// @ts-ignore
2731
- "Meeting:index#fetchMeetingInfo --> Info Unable to fetch meeting info for ".concat(this.destination, " - captcha required (code=").concat(_t4 === null || _t4 === void 0 ? void 0 : (_err$body2 = _t4.body) === null || _err$body2 === void 0 ? void 0 : _err$body2.code, ")."));
2864
+ "Meeting:index#fetchMeetingInfo --> Info Unable to fetch meeting info for ".concat(this.destination, " - captcha required (code=").concat(_t5 === null || _t5 === void 0 ? void 0 : (_err$body2 = _t5.body) === null || _err$body2 === void 0 ? void 0 : _err$body2.code, ")."));
2732
2865
  if (this.requiredCaptcha) {
2733
2866
  this.meetingInfoFailureReason = _constants.MEETING_INFO_FAILURE_REASON.WRONG_CAPTCHA;
2734
- } else if (_t4.isRegistrationIdRequired) {
2867
+ } else if (_t5.isRegistrationIdRequired) {
2735
2868
  this.meetingInfoFailureReason = _constants.MEETING_INFO_FAILURE_REASON.WRONG_REGISTRATION_ID;
2736
2869
  } else {
2737
2870
  this.meetingInfoFailureReason = _constants.MEETING_INFO_FAILURE_REASON.WRONG_PASSWORD;
2738
2871
  }
2739
- this.meetingInfoFailureCode = _t4.wbxAppApiCode;
2740
- if (_t4.isPasswordRequired) {
2872
+ this.meetingInfoFailureCode = _t5.wbxAppApiCode;
2873
+ if (_t5.isPasswordRequired) {
2741
2874
  this.passwordStatus = _constants.PASSWORD_STATUS.REQUIRED;
2742
2875
  }
2743
- if (_t4.isRegistrationIdRequired) {
2876
+ if (_t5.isRegistrationIdRequired) {
2744
2877
  this.registrationIdStatus = _constants.REGISTRATION_ID_STATUS.REQUIRED;
2745
2878
  }
2746
- this.requiredCaptcha = _t4.captchaInfo;
2879
+ this.requiredCaptcha = _t5.captchaInfo;
2747
2880
  throw new _captchaError.default();
2748
2881
  case 9:
2749
2882
  this.meetingInfoFailureReason = _constants.MEETING_INFO_FAILURE_REASON.OTHER;
2750
- throw _t4;
2883
+ throw _t5;
2751
2884
  case 10:
2752
2885
  case "end":
2753
- return _context5.stop();
2886
+ return _context7.stop();
2754
2887
  }
2755
- }, _callee5, this, [[1, 3]]);
2888
+ }, _callee7, this, [[1, 3]]);
2756
2889
  }));
2757
2890
  function fetchMeetingInfoInternal(_x5) {
2758
2891
  return _fetchMeetingInfoInternal.apply(this, arguments);
@@ -2769,18 +2902,18 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2769
2902
  }, {
2770
2903
  key: "refreshPermissionToken",
2771
2904
  value: (function () {
2772
- var _refreshPermissionToken = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee6(reason) {
2905
+ var _refreshPermissionToken = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee8(reason) {
2773
2906
  var _this$meetingInfo;
2774
- var isStartingSpaceInstantV2Meeting, destination, destinationType, permissionTokenExpiryInfo, timeLeft, expiryTime, currentTime, _t5;
2775
- return _regenerator.default.wrap(function (_context6) {
2776
- while (1) switch (_context6.prev = _context6.next) {
2907
+ var isStartingSpaceInstantV2Meeting, destination, destinationType, permissionTokenExpiryInfo, timeLeft, expiryTime, currentTime, _t6;
2908
+ return _regenerator.default.wrap(function (_context8) {
2909
+ while (1) switch (_context8.prev = _context8.next) {
2777
2910
  case 0:
2778
2911
  if ((_this$meetingInfo = this.meetingInfo) !== null && _this$meetingInfo !== void 0 && _this$meetingInfo.permissionToken) {
2779
- _context6.next = 1;
2912
+ _context8.next = 1;
2780
2913
  break;
2781
2914
  }
2782
2915
  _loggerProxy.default.logger.info("Meeting:index#refreshPermissionToken --> cannot refresh the permission token, because we don't have it (reason=".concat(reason, ")"));
2783
- return _context6.abrupt("return");
2916
+ return _context8.abrupt("return");
2784
2917
  case 1:
2785
2918
  isStartingSpaceInstantV2Meeting = this.destinationType === _constants.DESTINATION_TYPE.CONVERSATION_URL &&
2786
2919
  // @ts-ignore - config coming from registerPlugin
@@ -2802,8 +2935,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2802
2935
  reason: reason,
2803
2936
  destinationType: destinationType
2804
2937
  });
2805
- _context6.prev = 2;
2806
- _context6.next = 3;
2938
+ _context8.prev = 2;
2939
+ _context8.next = 3;
2807
2940
  return this.fetchMeetingInfoInternal({
2808
2941
  destination: destination,
2809
2942
  destinationType: destinationType,
@@ -2813,23 +2946,23 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2813
2946
  sendCAevents: true // because if we're refreshing the permissionToken, it means that user is intending to join that meeting, so we want CA events
2814
2947
  });
2815
2948
  case 3:
2816
- _context6.next = 5;
2949
+ _context8.next = 5;
2817
2950
  break;
2818
2951
  case 4:
2819
- _context6.prev = 4;
2820
- _t5 = _context6["catch"](2);
2821
- _loggerProxy.default.logger.info('Meeting:index#refreshPermissionToken --> failed to refresh the permission token:', _t5);
2952
+ _context8.prev = 4;
2953
+ _t6 = _context8["catch"](2);
2954
+ _loggerProxy.default.logger.info('Meeting:index#refreshPermissionToken --> failed to refresh the permission token:', _t6);
2822
2955
  _metrics.default.sendBehavioralMetric(_constants2.default.PERMISSION_TOKEN_REFRESH_ERROR, {
2823
2956
  correlationId: this.correlationId,
2824
- reason: _t5.message,
2825
- stack: _t5.stack
2957
+ reason: _t6.message,
2958
+ stack: _t6.stack
2826
2959
  });
2827
- throw _t5;
2960
+ throw _t6;
2828
2961
  case 5:
2829
2962
  case "end":
2830
- return _context6.stop();
2963
+ return _context8.stop();
2831
2964
  }
2832
- }, _callee6, this, [[2, 4]]);
2965
+ }, _callee8, this, [[2, 4]]);
2833
2966
  }));
2834
2967
  function refreshPermissionToken(_x6) {
2835
2968
  return _refreshPermissionToken.apply(this, arguments);
@@ -2850,22 +2983,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2850
2983
  }, {
2851
2984
  key: "fetchMeetingInfo",
2852
2985
  value: (function () {
2853
- var _fetchMeetingInfo = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee7(options) {
2854
- return _regenerator.default.wrap(function (_context7) {
2855
- while (1) switch (_context7.prev = _context7.next) {
2986
+ var _fetchMeetingInfo = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee9(options) {
2987
+ return _regenerator.default.wrap(function (_context9) {
2988
+ while (1) switch (_context9.prev = _context9.next) {
2856
2989
  case 0:
2857
- _context7.next = 1;
2990
+ _context9.next = 1;
2858
2991
  return this.prepForFetchMeetingInfo(options, 'fetchMeetingInfo');
2859
2992
  case 1:
2860
- return _context7.abrupt("return", this.fetchMeetingInfoInternal(_objectSpread({
2993
+ return _context9.abrupt("return", this.fetchMeetingInfoInternal(_objectSpread({
2861
2994
  destination: this.destination,
2862
2995
  destinationType: this.destinationType
2863
2996
  }, options)));
2864
2997
  case 2:
2865
2998
  case "end":
2866
- return _context7.stop();
2999
+ return _context9.stop();
2867
3000
  }
2868
- }, _callee7, this);
3001
+ }, _callee9, this);
2869
3002
  }));
2870
3003
  function fetchMeetingInfo(_x7) {
2871
3004
  return _fetchMeetingInfo.apply(this, arguments);
@@ -3391,10 +3524,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3391
3524
  key: "setupLocusControlsListener",
3392
3525
  value: function setupLocusControlsListener() {
3393
3526
  var _this12 = this;
3394
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_RECORDING_UPDATED, function (_ref9) {
3395
- var state = _ref9.state,
3396
- modifiedBy = _ref9.modifiedBy,
3397
- lastModified = _ref9.lastModified;
3527
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_RECORDING_UPDATED, function (_ref10) {
3528
+ var state = _ref10.state,
3529
+ modifiedBy = _ref10.modifiedBy,
3530
+ lastModified = _ref10.lastModified;
3398
3531
  var event;
3399
3532
  switch (state) {
3400
3533
  case _constants.RECORDING_STATE.RECORDING:
@@ -3425,8 +3558,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3425
3558
  function: 'setupLocusControlsListener'
3426
3559
  }, event, _this12.recording);
3427
3560
  });
3428
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_CONTAINER_UPDATED, function (_ref0) {
3429
- var meetingContainerUrl = _ref0.meetingContainerUrl;
3561
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_CONTAINER_UPDATED, function (_ref11) {
3562
+ var meetingContainerUrl = _ref11.meetingContainerUrl;
3430
3563
  _triggerProxy.default.trigger(_this12, {
3431
3564
  file: 'meeting/index',
3432
3565
  function: 'setupLocusControlsListener'
@@ -3434,9 +3567,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3434
3567
  meetingContainerUrl: meetingContainerUrl
3435
3568
  });
3436
3569
  });
3437
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_TRANSCRIBE_UPDATED, function (_ref1) {
3438
- var caption = _ref1.caption,
3439
- transcribing = _ref1.transcribing;
3570
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_TRANSCRIBE_UPDATED, function (_ref12) {
3571
+ var caption = _ref12.caption,
3572
+ transcribing = _ref12.transcribing;
3440
3573
  // user need to be joined to start the llm and receive transcription
3441
3574
  if (_this12.isJoined()) {
3442
3575
  // @ts-ignore - config coming from registerPlugin
@@ -3453,8 +3586,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3453
3586
  }
3454
3587
  }
3455
3588
  });
3456
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_TRANSCRIPTION_SPOKEN_LANGUAGE_UPDATED, function (_ref10) {
3457
- var spokenLanguage = _ref10.spokenLanguage;
3589
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_TRANSCRIPTION_SPOKEN_LANGUAGE_UPDATED, function (_ref13) {
3590
+ var spokenLanguage = _ref13.spokenLanguage;
3458
3591
  if (spokenLanguage) {
3459
3592
  var _this12$transcription;
3460
3593
  if ((_this12$transcription = _this12.transcription) !== null && _this12$transcription !== void 0 && _this12$transcription.languageOptions) {
@@ -3471,8 +3604,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3471
3604
  });
3472
3605
  }
3473
3606
  });
3474
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_MANUAL_CAPTION_UPDATED, function (_ref11) {
3475
- var enable = _ref11.enable;
3607
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_MANUAL_CAPTION_UPDATED, function (_ref14) {
3608
+ var enable = _ref14.enable;
3476
3609
  _triggerProxy.default.trigger(_this12, {
3477
3610
  file: 'meeting/index',
3478
3611
  function: 'setupLocusControlsListener'
@@ -3480,31 +3613,31 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3480
3613
  enable: enable
3481
3614
  });
3482
3615
  });
3483
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_HESIOD_LLM_ID_UPDATED, function (_ref12) {
3484
- var hesiodLlmId = _ref12.hesiodLlmId;
3616
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_HESIOD_LLM_ID_UPDATED, function (_ref15) {
3617
+ var hesiodLlmId = _ref15.hesiodLlmId;
3485
3618
  if (hesiodLlmId) {
3486
3619
  // @ts-ignore
3487
3620
  _this12.webex.internal.voicea.onCaptionServiceIdUpdate(hesiodLlmId);
3488
3621
  }
3489
3622
  });
3490
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_BREAKOUT_UPDATED, function (_ref13) {
3491
- var breakout = _ref13.breakout;
3623
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_BREAKOUT_UPDATED, function (_ref16) {
3624
+ var breakout = _ref16.breakout;
3492
3625
  _this12.breakouts.updateBreakout(breakout);
3493
3626
  _triggerProxy.default.trigger(_this12, {
3494
3627
  file: 'meeting/index',
3495
3628
  function: 'setupLocusControlsListener'
3496
3629
  }, _constants.EVENT_TRIGGERS.MEETING_BREAKOUTS_UPDATE);
3497
3630
  });
3498
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_INTERPRETATION_UPDATED, function (_ref14) {
3499
- var interpretation = _ref14.interpretation;
3631
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_INTERPRETATION_UPDATED, function (_ref17) {
3632
+ var interpretation = _ref17.interpretation;
3500
3633
  _this12.simultaneousInterpretation.updateInterpretation(interpretation);
3501
3634
  _triggerProxy.default.trigger(_this12, {
3502
3635
  file: 'meeting/index',
3503
3636
  function: 'setupLocusControlsListener'
3504
3637
  }, _constants.EVENT_TRIGGERS.MEETING_INTERPRETATION_UPDATE);
3505
3638
  });
3506
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_ENTRY_EXIT_TONE_UPDATED, function (_ref15) {
3507
- var entryExitTone = _ref15.entryExitTone;
3639
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_ENTRY_EXIT_TONE_UPDATED, function (_ref18) {
3640
+ var entryExitTone = _ref18.entryExitTone;
3508
3641
  _triggerProxy.default.trigger(_this12, {
3509
3642
  file: 'meeting/index',
3510
3643
  function: 'setupLocusControlsListener'
@@ -3512,8 +3645,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3512
3645
  entryExitTone: entryExitTone
3513
3646
  });
3514
3647
  });
3515
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MUTE_ON_ENTRY_CHANGED, function (_ref16) {
3516
- var state = _ref16.state;
3648
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MUTE_ON_ENTRY_CHANGED, function (_ref19) {
3649
+ var state = _ref19.state;
3517
3650
  _triggerProxy.default.trigger(_this12, {
3518
3651
  file: 'meeting/index',
3519
3652
  function: 'setupLocusControlsListener'
@@ -3521,8 +3654,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3521
3654
  state: state
3522
3655
  });
3523
3656
  });
3524
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_SHARE_CONTROL_CHANGED, function (_ref17) {
3525
- var state = _ref17.state;
3657
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_SHARE_CONTROL_CHANGED, function (_ref20) {
3658
+ var state = _ref20.state;
3526
3659
  _triggerProxy.default.trigger(_this12, {
3527
3660
  file: 'meeting/index',
3528
3661
  function: 'setupLocusControlsListener'
@@ -3530,8 +3663,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3530
3663
  state: state
3531
3664
  });
3532
3665
  });
3533
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_DISALLOW_UNMUTE_CHANGED, function (_ref18) {
3534
- var state = _ref18.state;
3666
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_DISALLOW_UNMUTE_CHANGED, function (_ref21) {
3667
+ var state = _ref21.state;
3535
3668
  _triggerProxy.default.trigger(_this12, {
3536
3669
  file: 'meeting/index',
3537
3670
  function: 'setupLocusControlsListener'
@@ -3539,8 +3672,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3539
3672
  state: state
3540
3673
  });
3541
3674
  });
3542
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_REACTIONS_CHANGED, function (_ref19) {
3543
- var state = _ref19.state;
3675
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_REACTIONS_CHANGED, function (_ref22) {
3676
+ var state = _ref22.state;
3544
3677
  _triggerProxy.default.trigger(_this12, {
3545
3678
  file: 'meeting/index',
3546
3679
  function: 'setupLocusControlsListener'
@@ -3548,8 +3681,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3548
3681
  state: state
3549
3682
  });
3550
3683
  });
3551
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED, function (_ref20) {
3552
- var state = _ref20.state;
3684
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED, function (_ref23) {
3685
+ var state = _ref23.state;
3553
3686
  _triggerProxy.default.trigger(_this12, {
3554
3687
  file: 'meeting/index',
3555
3688
  function: 'setupLocusControlsListener'
@@ -3557,8 +3690,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3557
3690
  state: state
3558
3691
  });
3559
3692
  });
3560
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_RAISE_HAND_CHANGED, function (_ref21) {
3561
- var state = _ref21.state;
3693
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_RAISE_HAND_CHANGED, function (_ref24) {
3694
+ var state = _ref24.state;
3562
3695
  _triggerProxy.default.trigger(_this12, {
3563
3696
  file: 'meeting/index',
3564
3697
  function: 'setupLocusControlsListener'
@@ -3566,8 +3699,17 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3566
3699
  state: state
3567
3700
  });
3568
3701
  });
3569
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_WEBCAST_CHANGED, function (_ref22) {
3570
- var state = _ref22.state;
3702
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_AI_SUMMARY_NOTIFICATION_UPDATED, function (_ref25) {
3703
+ var aiSummaryNotification = _ref25.aiSummaryNotification;
3704
+ _triggerProxy.default.trigger(_this12, {
3705
+ file: 'meeting/index',
3706
+ function: 'setupLocusControlsListener'
3707
+ }, _constants.EVENT_TRIGGERS.MEETING_CONTROLS_AI_SUMMARY_NOTIFICATION_UPDATED, {
3708
+ aiSummaryNotification: aiSummaryNotification
3709
+ });
3710
+ });
3711
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_WEBCAST_CHANGED, function (_ref26) {
3712
+ var state = _ref26.state;
3571
3713
  _triggerProxy.default.trigger(_this12, {
3572
3714
  file: 'meeting/index',
3573
3715
  function: 'setupLocusControlsListener'
@@ -3575,8 +3717,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3575
3717
  state: state
3576
3718
  });
3577
3719
  });
3578
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_FULL_CHANGED, function (_ref23) {
3579
- var state = _ref23.state;
3720
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_FULL_CHANGED, function (_ref27) {
3721
+ var state = _ref27.state;
3580
3722
  _triggerProxy.default.trigger(_this12, {
3581
3723
  file: 'meeting/index',
3582
3724
  function: 'setupLocusControlsListener'
@@ -3584,8 +3726,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3584
3726
  state: state
3585
3727
  });
3586
3728
  });
3587
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_PRACTICE_SESSION_STATUS_UPDATED, function (_ref24) {
3588
- var state = _ref24.state;
3729
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_PRACTICE_SESSION_STATUS_UPDATED, function (_ref28) {
3730
+ var state = _ref28.state;
3589
3731
  _this12.webinar.updatePracticeSessionStatus(state);
3590
3732
  _triggerProxy.default.trigger(_this12, {
3591
3733
  file: 'meeting/index',
@@ -3594,8 +3736,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3594
3736
  state: state
3595
3737
  });
3596
3738
  });
3597
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_STAGE_VIEW_UPDATED, function (_ref25) {
3598
- var state = _ref25.state;
3739
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_STAGE_VIEW_UPDATED, function (_ref29) {
3740
+ var state = _ref29.state;
3599
3741
  _triggerProxy.default.trigger(_this12, {
3600
3742
  file: 'meeting/index',
3601
3743
  function: 'setupLocusControlsListener'
@@ -3603,8 +3745,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3603
3745
  state: state
3604
3746
  });
3605
3747
  });
3606
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_VIDEO_CHANGED, function (_ref26) {
3607
- var state = _ref26.state;
3748
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_VIDEO_CHANGED, function (_ref30) {
3749
+ var state = _ref30.state;
3608
3750
  _triggerProxy.default.trigger(_this12, {
3609
3751
  file: 'meeting/index',
3610
3752
  function: 'setupLocusControlsListener'
@@ -3612,8 +3754,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3612
3754
  state: state
3613
3755
  });
3614
3756
  });
3615
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_AUTO_END_MEETING_WARNING_CHANGED, function (_ref27) {
3616
- var state = _ref27.state;
3757
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_AUTO_END_MEETING_WARNING_CHANGED, function (_ref31) {
3758
+ var state = _ref31.state;
3617
3759
  _triggerProxy.default.trigger(_this12, {
3618
3760
  file: 'meeting/index',
3619
3761
  function: 'setupLocusControlsListener'
@@ -3621,8 +3763,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3621
3763
  state: state
3622
3764
  });
3623
3765
  });
3624
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_ANNOTATION_CHANGED, function (_ref28) {
3625
- var state = _ref28.state;
3766
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_ANNOTATION_CHANGED, function (_ref32) {
3767
+ var state = _ref32.state;
3626
3768
  _triggerProxy.default.trigger(_this12, {
3627
3769
  file: 'meeting/index',
3628
3770
  function: 'setupLocusControlsListener'
@@ -3630,8 +3772,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3630
3772
  state: state
3631
3773
  });
3632
3774
  });
3633
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_REMOTE_DESKTOP_CONTROL_CHANGED, function (_ref29) {
3634
- var state = _ref29.state;
3775
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_REMOTE_DESKTOP_CONTROL_CHANGED, function (_ref33) {
3776
+ var state = _ref33.state;
3635
3777
  _triggerProxy.default.trigger(_this12, {
3636
3778
  file: 'meeting/index',
3637
3779
  function: 'setupLocusControlsListener'
@@ -3639,8 +3781,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3639
3781
  state: state
3640
3782
  });
3641
3783
  });
3642
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_POLLING_QA_CHANGED, function (_ref30) {
3643
- var state = _ref30.state;
3784
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_POLLING_QA_CHANGED, function (_ref34) {
3785
+ var state = _ref34.state;
3644
3786
  _triggerProxy.default.trigger(_this12, {
3645
3787
  file: 'meeting/index',
3646
3788
  function: 'setupLocusControlsListener'
@@ -3687,21 +3829,21 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3687
3829
  var _this13 = this;
3688
3830
  // Will get triggered on local and remote share
3689
3831
  this.locusInfo.on(_constants.EVENTS.LOCUS_INFO_UPDATE_MEDIA_SHARES, /*#__PURE__*/function () {
3690
- var _ref31 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee8(payload) {
3832
+ var _ref35 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee0(payload) {
3691
3833
  var _payload$previous, _payload$previous2;
3692
- var _payload$current, contentShare, whiteboardShare, previousContentShare, previousWhiteboardShare, newShareStatus, _this13$locusInfo, _this13$locusInfo$inf, _this13$webinar, oldShareStatus, sendStartedSharingRemote, _this13$mediaProperti, _t6, _t7;
3693
- return _regenerator.default.wrap(function (_context8) {
3694
- while (1) switch (_context8.prev = _context8.next) {
3834
+ var _payload$current, contentShare, whiteboardShare, previousContentShare, previousWhiteboardShare, newShareStatus, _this13$locusInfo, _this13$locusInfo$inf, _this13$webinar, oldShareStatus, sendStartedSharingRemote, _this13$mediaProperti, _t7, _t8;
3835
+ return _regenerator.default.wrap(function (_context0) {
3836
+ while (1) switch (_context0.prev = _context0.next) {
3695
3837
  case 0:
3696
3838
  _payload$current = payload.current, contentShare = _payload$current.content, whiteboardShare = _payload$current.whiteboard;
3697
3839
  previousContentShare = (_payload$previous = payload.previous) === null || _payload$previous === void 0 ? void 0 : _payload$previous.content;
3698
3840
  previousWhiteboardShare = (_payload$previous2 = payload.previous) === null || _payload$previous2 === void 0 ? void 0 : _payload$previous2.whiteboard;
3699
3841
  _this13.triggerAnnotationInfoEvent(contentShare, previousContentShare);
3700
3842
  if (!(!payload.forceUpdate && contentShare.beneficiaryId === (previousContentShare === null || previousContentShare === void 0 ? void 0 : previousContentShare.beneficiaryId) && contentShare.disposition === (previousContentShare === null || previousContentShare === void 0 ? void 0 : previousContentShare.disposition) && contentShare.deviceUrlSharing === previousContentShare.deviceUrlSharing && whiteboardShare.beneficiaryId === (previousWhiteboardShare === null || previousWhiteboardShare === void 0 ? void 0 : previousWhiteboardShare.beneficiaryId) && whiteboardShare.disposition === (previousWhiteboardShare === null || previousWhiteboardShare === void 0 ? void 0 : previousWhiteboardShare.disposition) && whiteboardShare.resourceUrl === (previousWhiteboardShare === null || previousWhiteboardShare === void 0 ? void 0 : previousWhiteboardShare.resourceUrl) && contentShare.resourceType === (previousContentShare === null || previousContentShare === void 0 ? void 0 : previousContentShare.resourceType))) {
3701
- _context8.next = 1;
3843
+ _context0.next = 1;
3702
3844
  break;
3703
3845
  }
3704
- return _context8.abrupt("return");
3846
+ return _context0.abrupt("return");
3705
3847
  case 1:
3706
3848
  newShareStatus = _this13.shareStatus; // REMOTE - check if remote started sharing
3707
3849
  if (_this13.selfId !== contentShare.beneficiaryId && contentShare.disposition === _constants.FLOOR_ACTION.GRANTED) {
@@ -3739,22 +3881,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3739
3881
  }
3740
3882
  _loggerProxy.default.logger.info("Meeting:index#setUpLocusInfoMediaInactiveListener --> this.shareStatus=".concat(_this13.shareStatus, " newShareStatus=").concat(newShareStatus));
3741
3883
  if (!(newShareStatus !== _this13.shareStatus)) {
3742
- _context8.next = 17;
3884
+ _context0.next = 17;
3743
3885
  break;
3744
3886
  }
3745
3887
  oldShareStatus = _this13.shareStatus; // update our state before we send out any notifications
3746
3888
  _this13.shareStatus = newShareStatus;
3747
3889
 
3748
3890
  // send out "stop" notifications for the old state
3749
- _t6 = oldShareStatus;
3750
- _context8.next = _t6 === _constants.SHARE_STATUS.REMOTE_SHARE_ACTIVE ? 2 : _t6 === _constants.SHARE_STATUS.LOCAL_SHARE_ACTIVE ? 3 : _t6 === _constants.SHARE_STATUS.WHITEBOARD_SHARE_ACTIVE ? 4 : _t6 === _constants.SHARE_STATUS.NO_SHARE ? 5 : 6;
3891
+ _t7 = oldShareStatus;
3892
+ _context0.next = _t7 === _constants.SHARE_STATUS.REMOTE_SHARE_ACTIVE ? 2 : _t7 === _constants.SHARE_STATUS.LOCAL_SHARE_ACTIVE ? 3 : _t7 === _constants.SHARE_STATUS.WHITEBOARD_SHARE_ACTIVE ? 4 : _t7 === _constants.SHARE_STATUS.NO_SHARE ? 5 : 6;
3751
3893
  break;
3752
3894
  case 2:
3753
3895
  _triggerProxy.default.trigger(_this13, {
3754
3896
  file: 'meetings/index',
3755
3897
  function: 'remoteShare'
3756
3898
  }, _constants.EVENT_TRIGGERS.MEETING_STOPPED_SHARING_REMOTE);
3757
- return _context8.abrupt("continue", 7);
3899
+ return _context0.abrupt("continue", 7);
3758
3900
  case 3:
3759
3901
  _triggerProxy.default.trigger(_this13, {
3760
3902
  file: 'meeting/index',
@@ -3762,7 +3904,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3762
3904
  }, _constants.EVENT_TRIGGERS.MEETING_STOPPED_SHARING_LOCAL, {
3763
3905
  reason: _constants.SHARE_STOPPED_REASON.SELF_STOPPED
3764
3906
  });
3765
- return _context8.abrupt("continue", 7);
3907
+ return _context0.abrupt("continue", 7);
3766
3908
  case 4:
3767
3909
  _triggerProxy.default.trigger(_this13, {
3768
3910
  file: 'meeting/index',
@@ -3785,14 +3927,14 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3785
3927
  meetingId: _this13.id
3786
3928
  }
3787
3929
  });
3788
- return _context8.abrupt("continue", 7);
3930
+ return _context0.abrupt("continue", 7);
3789
3931
  case 5:
3790
- return _context8.abrupt("continue", 7);
3932
+ return _context0.abrupt("continue", 7);
3791
3933
  case 6:
3792
- return _context8.abrupt("continue", 7);
3934
+ return _context0.abrupt("continue", 7);
3793
3935
  case 7:
3794
- _t7 = newShareStatus;
3795
- _context8.next = _t7 === _constants.SHARE_STATUS.REMOTE_SHARE_ACTIVE ? 8 : _t7 === _constants.SHARE_STATUS.LOCAL_SHARE_ACTIVE ? 12 : _t7 === _constants.SHARE_STATUS.WHITEBOARD_SHARE_ACTIVE ? 13 : _t7 === _constants.SHARE_STATUS.NO_SHARE ? 14 : 15;
3936
+ _t8 = newShareStatus;
3937
+ _context0.next = _t8 === _constants.SHARE_STATUS.REMOTE_SHARE_ACTIVE ? 8 : _t8 === _constants.SHARE_STATUS.LOCAL_SHARE_ACTIVE ? 12 : _t8 === _constants.SHARE_STATUS.WHITEBOARD_SHARE_ACTIVE ? 13 : _t8 === _constants.SHARE_STATUS.NO_SHARE ? 14 : 15;
3796
3938
  break;
3797
3939
  case 8:
3798
3940
  sendStartedSharingRemote = function sendStartedSharingRemote() {
@@ -3818,19 +3960,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3818
3960
  resourceType: contentShare.resourceType
3819
3961
  });
3820
3962
  };
3821
- _context8.prev = 9;
3963
+ _context0.prev = 9;
3822
3964
  if (!((_this13$mediaProperti = _this13.mediaProperties.mediaDirection) !== null && _this13$mediaProperti !== void 0 && _this13$mediaProperti.sendShare && oldShareStatus === _constants.SHARE_STATUS.LOCAL_SHARE_ACTIVE)) {
3823
- _context8.next = 10;
3965
+ _context0.next = 10;
3824
3966
  break;
3825
3967
  }
3826
- _context8.next = 10;
3968
+ _context0.next = 10;
3827
3969
  return _this13.unpublishStreams([_this13.mediaProperties.shareVideoStream, _this13.mediaProperties.shareAudioStream]);
3828
3970
  case 10:
3829
- _context8.prev = 10;
3971
+ _context0.prev = 10;
3830
3972
  sendStartedSharingRemote();
3831
- return _context8.finish(10);
3973
+ return _context0.finish(10);
3832
3974
  case 11:
3833
- return _context8.abrupt("continue", 16);
3975
+ return _context0.abrupt("continue", 16);
3834
3976
  case 12:
3835
3977
  _triggerProxy.default.trigger(_this13, {
3836
3978
  file: 'meeting/index',
@@ -3847,7 +3989,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3847
3989
  meetingId: _this13.id
3848
3990
  }
3849
3991
  });
3850
- return _context8.abrupt("continue", 16);
3992
+ return _context0.abrupt("continue", 16);
3851
3993
  case 13:
3852
3994
  _triggerProxy.default.trigger(_this13, {
3853
3995
  file: 'meeting/index',
@@ -3866,14 +4008,14 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3866
4008
  meetingId: _this13.id
3867
4009
  }
3868
4010
  });
3869
- return _context8.abrupt("continue", 16);
4011
+ return _context0.abrupt("continue", 16);
3870
4012
  case 14:
3871
- return _context8.abrupt("continue", 16);
4013
+ return _context0.abrupt("continue", 16);
3872
4014
  case 15:
3873
- return _context8.abrupt("continue", 16);
4015
+ return _context0.abrupt("continue", 16);
3874
4016
  case 16:
3875
4017
  _this13.members.locusMediaSharesUpdate(payload);
3876
- _context8.next = 18;
4018
+ _context0.next = 18;
3877
4019
  break;
3878
4020
  case 17:
3879
4021
  if (newShareStatus === _constants.SHARE_STATUS.REMOTE_SHARE_ACTIVE) {
@@ -3917,12 +4059,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3917
4059
  }
3918
4060
  case 18:
3919
4061
  case "end":
3920
- return _context8.stop();
4062
+ return _context0.stop();
3921
4063
  }
3922
- }, _callee8, null, [[9,, 10, 11]]);
4064
+ }, _callee0, null, [[9,, 10, 11]]);
3923
4065
  }));
3924
4066
  return function (_x8) {
3925
- return _ref31.apply(this, arguments);
4067
+ return _ref35.apply(this, arguments);
3926
4068
  };
3927
4069
  }());
3928
4070
  }
@@ -3951,6 +4093,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3951
4093
  _this14.recordingController.setLocusUrl(_this14.locusUrl);
3952
4094
  _this14.controlsOptionsManager.setLocusUrl(_this14.locusUrl, !!isMainLocus);
3953
4095
  _this14.webinar.locusUrlUpdate(url);
4096
+ // @ts-ignore
4097
+ _this14.webex.internal.llm.setRefreshHandler(function () {
4098
+ return _this14.refreshDataChannelToken();
4099
+ });
3954
4100
  _triggerProxy.default.trigger(_this14, {
3955
4101
  file: 'meeting/index',
3956
4102
  function: 'setUpLocusSelfListener'
@@ -3974,12 +4120,13 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3974
4120
  value: function setUpLocusServicesListener() {
3975
4121
  var _this15 = this;
3976
4122
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.LINKS_SERVICES, function (payload) {
3977
- var _payload$services, _payload$services$rec, _this15$locusInfo, _this15$locusInfo$ful, _payload$services2, _payload$services2$br, _payload$services3, _payload$services3$ap, _payload$services4, _payload$services4$ap;
4123
+ var _payload$services, _payload$services$rec, _this15$locusInfo, _this15$locusInfo$ful, _payload$services2, _payload$services2$br, _payload$services3, _payload$services3$ap, _payload$services4, _payload$services4$ap, _payload$services5, _payload$services5$ap;
3978
4124
  _this15.recordingController.setServiceUrl(payload === null || payload === void 0 ? void 0 : (_payload$services = payload.services) === null || _payload$services === void 0 ? void 0 : (_payload$services$rec = _payload$services.record) === null || _payload$services$rec === void 0 ? void 0 : _payload$services$rec.url);
3979
4125
  _this15.recordingController.setSessionId((_this15$locusInfo = _this15.locusInfo) === null || _this15$locusInfo === void 0 ? void 0 : (_this15$locusInfo$ful = _this15$locusInfo.fullState) === null || _this15$locusInfo$ful === void 0 ? void 0 : _this15$locusInfo$ful.sessionId);
3980
4126
  _this15.breakouts.breakoutServiceUrlUpdate(payload === null || payload === void 0 ? void 0 : (_payload$services2 = payload.services) === null || _payload$services2 === void 0 ? void 0 : (_payload$services2$br = _payload$services2.breakout) === null || _payload$services2$br === void 0 ? void 0 : _payload$services2$br.url);
3981
4127
  _this15.annotation.approvalUrlUpdate(payload === null || payload === void 0 ? void 0 : (_payload$services3 = payload.services) === null || _payload$services3 === void 0 ? void 0 : (_payload$services3$ap = _payload$services3.approval) === null || _payload$services3$ap === void 0 ? void 0 : _payload$services3$ap.url);
3982
4128
  _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);
4129
+ _this15.aiEnableRequest.approvalUrlUpdate(payload === null || payload === void 0 ? void 0 : (_payload$services5 = payload.services) === null || _payload$services5 === void 0 ? void 0 : (_payload$services5$ap = _payload$services5.approval) === null || _payload$services5$ap === void 0 ? void 0 : _payload$services5$ap.url);
3983
4130
  });
3984
4131
  }
3985
4132
 
@@ -4038,8 +4185,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4038
4185
  });
4039
4186
  }
4040
4187
  });
4041
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.MEETING_INFO_UPDATED, function (_ref32) {
4042
- var isInitializing = _ref32.isInitializing;
4188
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.MEETING_INFO_UPDATED, function (_ref36) {
4189
+ var isInitializing = _ref36.isInitializing;
4043
4190
  _this17.updateMeetingActions();
4044
4191
  _this17.recordingController.setDisplayHints(_this17.userDisplayHints);
4045
4192
  _this17.recordingController.setUserPolicy(_this17.selfUserPolicies);
@@ -4066,6 +4213,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4066
4213
  // @ts-ignore - config coming from registerPlugin
4067
4214
  if (datachannelUrl && this.config.enableAutomaticLLM) {
4068
4215
  this.updateLLMConnection();
4216
+ if (this.webinar.isJoinPracticeSessionDataChannel()) {
4217
+ this.webinar.updatePSDataChannel();
4218
+ }
4069
4219
  }
4070
4220
  }
4071
4221
 
@@ -4177,10 +4327,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4177
4327
  _this19.updateLLMConnection();
4178
4328
  });
4179
4329
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_ADMITTED_GUEST, /*#__PURE__*/function () {
4180
- var _ref33 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee9(payload) {
4330
+ var _ref37 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee1(payload) {
4181
4331
  var _this19$rtcMetrics;
4182
- return _regenerator.default.wrap(function (_context9) {
4183
- while (1) switch (_context9.prev = _context9.next) {
4332
+ return _regenerator.default.wrap(function (_context1) {
4333
+ while (1) switch (_context1.prev = _context1.next) {
4184
4334
  case 0:
4185
4335
  _this19.stopKeepAlive();
4186
4336
  if (payload) {
@@ -4206,12 +4356,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4206
4356
  _this19.updateLLMConnection();
4207
4357
  case 1:
4208
4358
  case "end":
4209
- return _context9.stop();
4359
+ return _context1.stop();
4210
4360
  }
4211
- }, _callee9);
4361
+ }, _callee1);
4212
4362
  }));
4213
4363
  return function (_x9) {
4214
- return _ref33.apply(this, arguments);
4364
+ return _ref37.apply(this, arguments);
4215
4365
  };
4216
4366
  }());
4217
4367
 
@@ -4263,6 +4413,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4263
4413
  function: 'setUpLocusInfoSelfListener'
4264
4414
  }, _constants.EVENT_TRIGGERS.MEETING_BREAKOUTS_UPDATE);
4265
4415
  });
4416
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_ID_CHANGED, function (payload) {
4417
+ _this19.aiEnableRequest.selfParticipantIdUpdate(payload.selfId);
4418
+ });
4266
4419
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_MEETING_INTERPRETATION_CHANGED, function (payload) {
4267
4420
  var targetChanged = _this19.simultaneousInterpretation.updateSelfInterpretation(payload);
4268
4421
  _triggerProxy.default.trigger(_this19, {
@@ -4330,49 +4483,49 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4330
4483
  }
4331
4484
  });
4332
4485
  this.locusInfo.on(_constants.EVENTS.DESTROY_MEETING, /*#__PURE__*/function () {
4333
- var _ref34 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee0(payload) {
4334
- var _t8;
4335
- return _regenerator.default.wrap(function (_context0) {
4336
- while (1) switch (_context0.prev = _context0.next) {
4486
+ var _ref38 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee10(payload) {
4487
+ var _t9;
4488
+ return _regenerator.default.wrap(function (_context10) {
4489
+ while (1) switch (_context10.prev = _context10.next) {
4337
4490
  case 0:
4338
4491
  if (!_this20.wirelessShare) {
4339
- _context0.next = 2;
4492
+ _context10.next = 2;
4340
4493
  break;
4341
4494
  }
4342
4495
  if (!_this20.mediaProperties.shareVideoStream) {
4343
- _context0.next = 1;
4496
+ _context10.next = 1;
4344
4497
  break;
4345
4498
  }
4346
- _context0.next = 1;
4499
+ _context10.next = 1;
4347
4500
  return _this20.setLocalShareVideoStream(undefined);
4348
4501
  case 1:
4349
4502
  if (!_this20.mediaProperties.shareAudioStream) {
4350
- _context0.next = 2;
4503
+ _context10.next = 2;
4351
4504
  break;
4352
4505
  }
4353
- _context0.next = 2;
4506
+ _context10.next = 2;
4354
4507
  return _this20.setLocalShareAudioStream(undefined);
4355
4508
  case 2:
4356
4509
  if (!payload.shouldLeave) {
4357
- _context0.next = 7;
4510
+ _context10.next = 7;
4358
4511
  break;
4359
4512
  }
4360
- _context0.prev = 3;
4361
- _context0.next = 4;
4513
+ _context10.prev = 3;
4514
+ _context10.next = 4;
4362
4515
  return _this20.leave({
4363
4516
  reason: payload.reason
4364
4517
  });
4365
4518
  case 4:
4366
4519
  _loggerProxy.default.logger.warn('Meeting:index#setUpLocusInfoMeetingListener --> DESTROY_MEETING. The meeting has been left, but has not been destroyed, you should see a later event for leave.');
4367
- _context0.next = 6;
4520
+ _context10.next = 6;
4368
4521
  break;
4369
4522
  case 5:
4370
- _context0.prev = 5;
4371
- _t8 = _context0["catch"](3);
4523
+ _context10.prev = 5;
4524
+ _t9 = _context10["catch"](3);
4372
4525
  // @ts-ignore
4373
- _loggerProxy.default.logger.error("Meeting:index#setUpLocusInfoMeetingListener --> DESTROY_MEETING. Issue with leave for meeting, meeting still in collection: ".concat(_this20, ", error: ").concat(_t8));
4526
+ _loggerProxy.default.logger.error("Meeting:index#setUpLocusInfoMeetingListener --> DESTROY_MEETING. Issue with leave for meeting, meeting still in collection: ".concat(_this20, ", error: ").concat(_t9));
4374
4527
  case 6:
4375
- _context0.next = 8;
4528
+ _context10.next = 8;
4376
4529
  break;
4377
4530
  case 7:
4378
4531
  _loggerProxy.default.logger.info('Meeting:index#setUpLocusInfoMeetingListener --> MEETING_REMOVED_REASON', payload.reason);
@@ -4386,12 +4539,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4386
4539
  });
4387
4540
  case 8:
4388
4541
  case "end":
4389
- return _context0.stop();
4542
+ return _context10.stop();
4390
4543
  }
4391
- }, _callee0, null, [[3, 5]]);
4544
+ }, _callee10, null, [[3, 5]]);
4392
4545
  }));
4393
4546
  return function (_x0) {
4394
- return _ref34.apply(this, arguments);
4547
+ return _ref38.apply(this, arguments);
4395
4548
  };
4396
4549
  }());
4397
4550
  }
@@ -4509,31 +4662,31 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4509
4662
  }, {
4510
4663
  key: "beRightBack",
4511
4664
  value: (function () {
4512
- var _beRightBack = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee1(enabled) {
4665
+ var _beRightBack = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee11(enabled) {
4513
4666
  var _this22 = this;
4514
4667
  var errorMessage, error, _errorMessage, _error;
4515
- return _regenerator.default.wrap(function (_context1) {
4516
- while (1) switch (_context1.prev = _context1.next) {
4668
+ return _regenerator.default.wrap(function (_context11) {
4669
+ while (1) switch (_context11.prev = _context11.next) {
4517
4670
  case 0:
4518
4671
  if (this.isMultistream) {
4519
- _context1.next = 1;
4672
+ _context11.next = 1;
4520
4673
  break;
4521
4674
  }
4522
4675
  errorMessage = 'Meeting:index#beRightBack --> Not a multistream meeting';
4523
4676
  error = new Error(errorMessage);
4524
4677
  _loggerProxy.default.logger.error(error);
4525
- return _context1.abrupt("return", _promise.default.reject(error));
4678
+ return _context11.abrupt("return", _promise.default.reject(error));
4526
4679
  case 1:
4527
4680
  if (this.mediaProperties.webrtcMediaConnection) {
4528
- _context1.next = 2;
4681
+ _context11.next = 2;
4529
4682
  break;
4530
4683
  }
4531
4684
  _errorMessage = 'Meeting:index#beRightBack --> WebRTC media connection is not defined';
4532
4685
  _error = new Error(_errorMessage);
4533
4686
  _loggerProxy.default.logger.error(_error);
4534
- return _context1.abrupt("return", _promise.default.reject(_error));
4687
+ return _context11.abrupt("return", _promise.default.reject(_error));
4535
4688
  case 2:
4536
- return _context1.abrupt("return", this.brbState.enable(enabled, this.sendSlotManager).then(function () {
4689
+ return _context11.abrupt("return", this.brbState.enable(enabled, this.sendSlotManager).then(function () {
4537
4690
  if (_this22.audio && enabled) {
4538
4691
  // locus mutes the participant with brb enabled request,
4539
4692
  // so we need to explicitly update remote mute for correct logic flow
@@ -4544,9 +4697,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4544
4697
  }));
4545
4698
  case 3:
4546
4699
  case "end":
4547
- return _context1.stop();
4700
+ return _context11.stop();
4548
4701
  }
4549
- }, _callee1, this);
4702
+ }, _callee11, this);
4550
4703
  }));
4551
4704
  function beRightBack(_x1) {
4552
4705
  return _beRightBack.apply(this, arguments);
@@ -4744,6 +4897,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4744
4897
  canLowerAllHands: _util2.default.canUserLowerAllHands(this.userDisplayHints),
4745
4898
  canLowerSomeoneElsesHand: _util2.default.canUserLowerSomeoneElsesHand(this.userDisplayHints),
4746
4899
  bothLeaveAndEndMeetingAvailable: _util2.default.bothLeaveAndEndMeetingAvailable(this.userDisplayHints),
4900
+ requireHostEndMeetingBeforeLeave: _util2.default.requireHostEndMeetingBeforeLeave(this.userDisplayHints),
4747
4901
  canEnableClosedCaption: _util2.default.canEnableClosedCaption(this.userDisplayHints),
4748
4902
  canStartTranscribing: _util2.default.canStartTranscribing(this.userDisplayHints),
4749
4903
  canStopTranscribing: _util2.default.canStopTranscribing(this.userDisplayHints),
@@ -4973,7 +5127,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4973
5127
  canDisablePollingQA: _util5.default.hasHints({
4974
5128
  requiredHints: [_constants.DISPLAY_HINTS.DISABLE_ATTENDEE_START_POLLING_QA],
4975
5129
  displayHints: this.userDisplayHints
4976
- })
5130
+ }),
5131
+ canAttendeeRequestAiAssistantEnabled: _util2.default.canAttendeeRequestAiAssistantEnabled(this.userDisplayHints, this.roles),
5132
+ isAttendeeRequestAiAssistantDeclinedAll: _util2.default.attendeeRequestAiAssistantDeclinedAll(this.userDisplayHints)
4977
5133
  }) || changed;
4978
5134
  }
4979
5135
  if (changed) {
@@ -5055,7 +5211,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5055
5211
  this.locusInfo.initialSetup({
5056
5212
  trigger: 'join-response',
5057
5213
  locus: mtgLocus,
5058
- dataSets: data.dataSets
5214
+ dataSets: data.dataSets,
5215
+ metadata: data.metadata
5059
5216
  });
5060
5217
  }
5061
5218
 
@@ -5170,10 +5327,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5170
5327
  key: "closeRemoteStreams",
5171
5328
  value: function closeRemoteStreams() {
5172
5329
  var _this24 = this;
5173
- var _this$mediaProperties6 = this.mediaProperties,
5174
- remoteAudioStream = _this$mediaProperties6.remoteAudioStream,
5175
- remoteVideoStream = _this$mediaProperties6.remoteVideoStream,
5176
- remoteShareStream = _this$mediaProperties6.remoteShareStream;
5330
+ var _this$mediaProperties7 = this.mediaProperties,
5331
+ remoteAudioStream = _this$mediaProperties7.remoteAudioStream,
5332
+ remoteVideoStream = _this$mediaProperties7.remoteVideoStream,
5333
+ remoteShareStream = _this$mediaProperties7.remoteShareStream;
5177
5334
 
5178
5335
  /**
5179
5336
  * Triggers an event to the developer
@@ -5217,11 +5374,11 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5217
5374
  }, {
5218
5375
  key: "setLocalAudioStream",
5219
5376
  value: (function () {
5220
- var _setLocalAudioStream = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee10(localStream) {
5377
+ var _setLocalAudioStream = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee12(localStream) {
5221
5378
  var _this$audio2;
5222
5379
  var oldStream;
5223
- return _regenerator.default.wrap(function (_context10) {
5224
- while (1) switch (_context10.prev = _context10.next) {
5380
+ return _regenerator.default.wrap(function (_context12) {
5381
+ while (1) switch (_context12.prev = _context12.next) {
5225
5382
  case 0:
5226
5383
  oldStream = this.mediaProperties.audioStream;
5227
5384
  oldStream === null || oldStream === void 0 ? void 0 : oldStream.off(_mediaHelpers.LocalStreamEventNames.UserMuteStateChange, this.localAudioStreamMuteStateHandler);
@@ -5235,19 +5392,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5235
5392
  localStream === null || localStream === void 0 ? void 0 : localStream.on(_mediaHelpers.LocalStreamEventNames.SystemMuteStateChange, this.localAudioStreamMuteStateHandler);
5236
5393
  localStream === null || localStream === void 0 ? void 0 : localStream.on(_mediaHelpers.LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);
5237
5394
  if (!(!this.isMultistream || !localStream)) {
5238
- _context10.next = 1;
5395
+ _context12.next = 1;
5239
5396
  break;
5240
5397
  }
5241
- _context10.next = 1;
5398
+ _context12.next = 1;
5242
5399
  return this.unpublishStream(_internalMediaCore.MediaType.AudioMain, oldStream);
5243
5400
  case 1:
5244
- _context10.next = 2;
5401
+ _context12.next = 2;
5245
5402
  return this.publishStream(_internalMediaCore.MediaType.AudioMain, this.mediaProperties.audioStream);
5246
5403
  case 2:
5247
5404
  case "end":
5248
- return _context10.stop();
5405
+ return _context12.stop();
5249
5406
  }
5250
- }, _callee10, this);
5407
+ }, _callee12, this);
5251
5408
  }));
5252
5409
  function setLocalAudioStream(_x10) {
5253
5410
  return _setLocalAudioStream.apply(this, arguments);
@@ -5265,16 +5422,17 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5265
5422
  }, {
5266
5423
  key: "setLocalVideoStream",
5267
5424
  value: (function () {
5268
- var _setLocalVideoStream = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee11(localStream) {
5425
+ var _setLocalVideoStream = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee13(localStream) {
5269
5426
  var _this$video2;
5270
5427
  var oldStream;
5271
- return _regenerator.default.wrap(function (_context11) {
5272
- while (1) switch (_context11.prev = _context11.next) {
5428
+ return _regenerator.default.wrap(function (_context13) {
5429
+ while (1) switch (_context13.prev = _context13.next) {
5273
5430
  case 0:
5274
5431
  oldStream = this.mediaProperties.videoStream;
5275
5432
  oldStream === null || oldStream === void 0 ? void 0 : oldStream.off(_mediaHelpers.LocalStreamEventNames.UserMuteStateChange, this.localVideoStreamMuteStateHandler);
5276
5433
  oldStream === null || oldStream === void 0 ? void 0 : oldStream.off(_mediaHelpers.LocalStreamEventNames.SystemMuteStateChange, this.localVideoStreamMuteStateHandler);
5277
5434
  oldStream === null || oldStream === void 0 ? void 0 : oldStream.off(_mediaHelpers.LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);
5435
+ oldStream === null || oldStream === void 0 ? void 0 : oldStream.off(_mediaHelpers.LocalStreamEventNames.ConstraintsChange, this.localConstraintsChangeHandler);
5278
5436
 
5279
5437
  // we don't update this.mediaProperties.mediaDirection.sendVideo, because we always keep it as true to avoid extra SDP exchanges
5280
5438
  this.mediaProperties.setLocalVideoStream(localStream);
@@ -5282,20 +5440,21 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5282
5440
  localStream === null || localStream === void 0 ? void 0 : localStream.on(_mediaHelpers.LocalStreamEventNames.UserMuteStateChange, this.localVideoStreamMuteStateHandler);
5283
5441
  localStream === null || localStream === void 0 ? void 0 : localStream.on(_mediaHelpers.LocalStreamEventNames.SystemMuteStateChange, this.localVideoStreamMuteStateHandler);
5284
5442
  localStream === null || localStream === void 0 ? void 0 : localStream.on(_mediaHelpers.LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);
5443
+ localStream === null || localStream === void 0 ? void 0 : localStream.on(_mediaHelpers.LocalStreamEventNames.ConstraintsChange, this.localConstraintsChangeHandler);
5285
5444
  if (!(!this.isMultistream || !localStream)) {
5286
- _context11.next = 1;
5445
+ _context13.next = 1;
5287
5446
  break;
5288
5447
  }
5289
- _context11.next = 1;
5448
+ _context13.next = 1;
5290
5449
  return this.unpublishStream(_internalMediaCore.MediaType.VideoMain, oldStream);
5291
5450
  case 1:
5292
- _context11.next = 2;
5451
+ _context13.next = 2;
5293
5452
  return this.publishStream(_internalMediaCore.MediaType.VideoMain, this.mediaProperties.videoStream);
5294
5453
  case 2:
5295
5454
  case "end":
5296
- return _context11.stop();
5455
+ return _context13.stop();
5297
5456
  }
5298
- }, _callee11, this);
5457
+ }, _callee13, this);
5299
5458
  }));
5300
5459
  function setLocalVideoStream(_x11) {
5301
5460
  return _setLocalVideoStream.apply(this, arguments);
@@ -5314,10 +5473,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5314
5473
  }, {
5315
5474
  key: "setLocalShareVideoStream",
5316
5475
  value: (function () {
5317
- var _setLocalShareVideoStream = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee12(localDisplayStream) {
5476
+ var _setLocalShareVideoStream = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee14(localDisplayStream) {
5318
5477
  var oldStream;
5319
- return _regenerator.default.wrap(function (_context12) {
5320
- while (1) switch (_context12.prev = _context12.next) {
5478
+ return _regenerator.default.wrap(function (_context14) {
5479
+ while (1) switch (_context14.prev = _context14.next) {
5321
5480
  case 0:
5322
5481
  oldStream = this.mediaProperties.shareVideoStream;
5323
5482
  oldStream === null || oldStream === void 0 ? void 0 : oldStream.off(_mediaHelpers.LocalStreamEventNames.SystemMuteStateChange, this.handleShareVideoStreamMuteStateChange);
@@ -5329,19 +5488,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5329
5488
  localDisplayStream === null || localDisplayStream === void 0 ? void 0 : localDisplayStream.on(_mediaHelpers.LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);
5330
5489
  this.mediaProperties.mediaDirection.sendShare = this.mediaProperties.hasLocalShareStream();
5331
5490
  if (!(!this.isMultistream || !localDisplayStream)) {
5332
- _context12.next = 1;
5491
+ _context14.next = 1;
5333
5492
  break;
5334
5493
  }
5335
- _context12.next = 1;
5494
+ _context14.next = 1;
5336
5495
  return this.unpublishStream(_internalMediaCore.MediaType.VideoSlides, oldStream);
5337
5496
  case 1:
5338
- _context12.next = 2;
5497
+ _context14.next = 2;
5339
5498
  return this.publishStream(_internalMediaCore.MediaType.VideoSlides, this.mediaProperties.shareVideoStream);
5340
5499
  case 2:
5341
5500
  case "end":
5342
- return _context12.stop();
5501
+ return _context14.stop();
5343
5502
  }
5344
- }, _callee12, this);
5503
+ }, _callee14, this);
5345
5504
  }));
5346
5505
  function setLocalShareVideoStream(_x12) {
5347
5506
  return _setLocalShareVideoStream.apply(this, arguments);
@@ -5359,10 +5518,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5359
5518
  }, {
5360
5519
  key: "setLocalShareAudioStream",
5361
5520
  value: (function () {
5362
- var _setLocalShareAudioStream = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee13(localSystemAudioStream) {
5521
+ var _setLocalShareAudioStream = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee15(localSystemAudioStream) {
5363
5522
  var oldStream;
5364
- return _regenerator.default.wrap(function (_context13) {
5365
- while (1) switch (_context13.prev = _context13.next) {
5523
+ return _regenerator.default.wrap(function (_context15) {
5524
+ while (1) switch (_context15.prev = _context15.next) {
5366
5525
  case 0:
5367
5526
  oldStream = this.mediaProperties.shareAudioStream;
5368
5527
  oldStream === null || oldStream === void 0 ? void 0 : oldStream.off(_mediaHelpers.StreamEventNames.Ended, this.handleShareAudioStreamEnded);
@@ -5372,19 +5531,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5372
5531
  localSystemAudioStream === null || localSystemAudioStream === void 0 ? void 0 : localSystemAudioStream.on(_mediaHelpers.LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);
5373
5532
  this.mediaProperties.mediaDirection.sendShare = this.mediaProperties.hasLocalShareStream();
5374
5533
  if (!(!this.isMultistream || !localSystemAudioStream)) {
5375
- _context13.next = 1;
5534
+ _context15.next = 1;
5376
5535
  break;
5377
5536
  }
5378
- _context13.next = 1;
5537
+ _context15.next = 1;
5379
5538
  return this.unpublishStream(_internalMediaCore.MediaType.AudioSlides, oldStream);
5380
5539
  case 1:
5381
- _context13.next = 2;
5540
+ _context15.next = 2;
5382
5541
  return this.publishStream(_internalMediaCore.MediaType.AudioSlides, this.mediaProperties.shareAudioStream);
5383
5542
  case 2:
5384
5543
  case "end":
5385
- return _context13.stop();
5544
+ return _context15.stop();
5386
5545
  }
5387
- }, _callee13, this);
5546
+ }, _callee15, this);
5388
5547
  }));
5389
5548
  function setLocalShareAudioStream(_x13) {
5390
5549
  return _setLocalShareAudioStream.apply(this, arguments);
@@ -5425,17 +5584,18 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5425
5584
  }, {
5426
5585
  key: "cleanupLocalStreams",
5427
5586
  value: function cleanupLocalStreams() {
5428
- var _this$mediaProperties7 = this.mediaProperties,
5429
- audioStream = _this$mediaProperties7.audioStream,
5430
- videoStream = _this$mediaProperties7.videoStream,
5431
- shareAudioStream = _this$mediaProperties7.shareAudioStream,
5432
- shareVideoStream = _this$mediaProperties7.shareVideoStream;
5587
+ var _this$mediaProperties8 = this.mediaProperties,
5588
+ audioStream = _this$mediaProperties8.audioStream,
5589
+ videoStream = _this$mediaProperties8.videoStream,
5590
+ shareAudioStream = _this$mediaProperties8.shareAudioStream,
5591
+ shareVideoStream = _this$mediaProperties8.shareVideoStream;
5433
5592
  audioStream === null || audioStream === void 0 ? void 0 : audioStream.off(_mediaHelpers.LocalStreamEventNames.UserMuteStateChange, this.localAudioStreamMuteStateHandler);
5434
5593
  audioStream === null || audioStream === void 0 ? void 0 : audioStream.off(_mediaHelpers.LocalStreamEventNames.SystemMuteStateChange, this.localAudioStreamMuteStateHandler);
5435
5594
  audioStream === null || audioStream === void 0 ? void 0 : audioStream.off(_mediaHelpers.LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);
5436
5595
  videoStream === null || videoStream === void 0 ? void 0 : videoStream.off(_mediaHelpers.LocalStreamEventNames.UserMuteStateChange, this.localVideoStreamMuteStateHandler);
5437
5596
  videoStream === null || videoStream === void 0 ? void 0 : videoStream.off(_mediaHelpers.LocalStreamEventNames.SystemMuteStateChange, this.localVideoStreamMuteStateHandler);
5438
5597
  videoStream === null || videoStream === void 0 ? void 0 : videoStream.off(_mediaHelpers.LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);
5598
+ videoStream === null || videoStream === void 0 ? void 0 : videoStream.off(_mediaHelpers.LocalStreamEventNames.ConstraintsChange, this.localConstraintsChangeHandler);
5439
5599
  shareAudioStream === null || shareAudioStream === void 0 ? void 0 : shareAudioStream.off(_mediaHelpers.StreamEventNames.Ended, this.handleShareAudioStreamEnded);
5440
5600
  shareAudioStream === null || shareAudioStream === void 0 ? void 0 : shareAudioStream.off(_mediaHelpers.LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);
5441
5601
  shareVideoStream === null || shareVideoStream === void 0 ? void 0 : shareVideoStream.off(_mediaHelpers.LocalStreamEventNames.SystemMuteStateChange, this.handleShareVideoStreamMuteStateChange);
@@ -5824,7 +5984,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5824
5984
  }, {
5825
5985
  key: "joinWithMedia",
5826
5986
  value: (function () {
5827
- var _joinWithMedia = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee14() {
5987
+ var _joinWithMedia = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee16() {
5828
5988
  var _this30 = this;
5829
5989
  var options,
5830
5990
  mediaOptions,
@@ -5847,20 +6007,20 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5847
6007
  shouldRetry,
5848
6008
  _error2,
5849
6009
  _error3,
5850
- _args14 = arguments,
5851
- _t9,
5852
- _t0;
5853
- return _regenerator.default.wrap(function (_context14) {
5854
- while (1) switch (_context14.prev = _context14.next) {
6010
+ _args16 = arguments,
6011
+ _t0,
6012
+ _t1;
6013
+ return _regenerator.default.wrap(function (_context16) {
6014
+ while (1) switch (_context16.prev = _context16.next) {
5855
6015
  case 0:
5856
- options = _args14.length > 0 && _args14[0] !== undefined ? _args14[0] : {};
6016
+ options = _args16.length > 0 && _args16[0] !== undefined ? _args16[0] : {};
5857
6017
  mediaOptions = options.mediaOptions, _options$joinOptions = options.joinOptions, joinOptions = _options$joinOptions === void 0 ? {} : _options$joinOptions;
5858
6018
  _this$joinWithMediaRe = this.joinWithMediaRetryInfo, isRetry = _this$joinWithMediaRe.isRetry, prevJoinResponse = _this$joinWithMediaRe.prevJoinResponse;
5859
6019
  if (mediaOptions !== null && mediaOptions !== void 0 && mediaOptions.allowMediaInLobby) {
5860
- _context14.next = 1;
6020
+ _context16.next = 1;
5861
6021
  break;
5862
6022
  }
5863
- return _context14.abrupt("return", _promise.default.reject(new _parameter.default('joinWithMedia() can only be used with allowMediaInLobby set to true')));
6023
+ return _context16.abrupt("return", _promise.default.reject(new _parameter.default('joinWithMedia() can only be used with allowMediaInLobby set to true')));
5864
6024
  case 1:
5865
6025
  this.allowMediaInLobby = true;
5866
6026
  _loggerProxy.default.logger.info('Meeting:index#joinWithMedia called');
@@ -5872,39 +6032,39 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5872
6032
  in case WebRTC is not available at all.
5873
6033
  */
5874
6034
  if (!(_webCapabilities.WebCapabilities.supportsRTCPeerConnection() === _webCapabilities.CapabilityState.NOT_CAPABLE)) {
5875
- _context14.next = 2;
6035
+ _context16.next = 2;
5876
6036
  break;
5877
6037
  }
5878
6038
  throw new _internalMediaCore.Errors.WebrtcApiNotAvailableError('RTCPeerConnection API is not available in this environment');
5879
6039
  case 2:
5880
- _context14.prev = 2;
6040
+ _context16.prev = 2;
5881
6041
  forceTurnDiscovery = false;
5882
6042
  if (joinResponse) {
5883
- _context14.next = 7;
6043
+ _context16.next = 7;
5884
6044
  break;
5885
6045
  }
5886
- _context14.next = 3;
6046
+ _context16.next = 3;
5887
6047
  return this.roap.generateTurnDiscoveryRequestMessage(this, true);
5888
6048
  case 3:
5889
- turnDiscoveryRequest = _context14.sent;
6049
+ turnDiscoveryRequest = _context16.sent;
5890
6050
  turnDiscoverySkippedReason = turnDiscoveryRequest.turnDiscoverySkippedReason;
5891
6051
  joinOptions.roapMessage = turnDiscoveryRequest.roapMessage;
5892
6052
  _loggerProxy.default.logger.info('Meeting:index#joinWithMedia ---> calling join with joinOptions, ', joinOptions);
5893
- _context14.next = 4;
6053
+ _context16.next = 4;
5894
6054
  return this.join(joinOptions);
5895
6055
  case 4:
5896
- joinResponse = _context14.sent;
6056
+ joinResponse = _context16.sent;
5897
6057
  joined = true;
5898
6058
 
5899
6059
  // if we sent out TURN discovery Roap message with join, process the TURN discovery response
5900
6060
  if (!joinOptions.roapMessage) {
5901
- _context14.next = 6;
6061
+ _context16.next = 6;
5902
6062
  break;
5903
6063
  }
5904
- _context14.next = 5;
6064
+ _context16.next = 5;
5905
6065
  return this.roap.handleTurnDiscoveryHttpResponse(this, joinResponse);
5906
6066
  case 5:
5907
- _yield$this$roap$hand = _context14.sent;
6067
+ _yield$this$roap$hand = _context16.sent;
5908
6068
  turnServerInfo = _yield$this$roap$hand.turnServerInfo;
5909
6069
  turnDiscoverySkippedReason = _yield$this$roap$hand.turnDiscoverySkippedReason;
5910
6070
  this.turnDiscoverySkippedReason = turnDiscoverySkippedReason;
@@ -5913,7 +6073,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5913
6073
  this.roap.abortTurnDiscovery();
5914
6074
  }
5915
6075
  case 6:
5916
- _context14.next = 8;
6076
+ _context16.next = 8;
5917
6077
  break;
5918
6078
  case 7:
5919
6079
  // This is a retry, when join succeeded but addMedia failed, so we'll just call addMedia() again,
@@ -5921,43 +6081,43 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5921
6081
  forceTurnDiscovery = true;
5922
6082
  joined = true;
5923
6083
  case 8:
5924
- _context14.next = 9;
6084
+ _context16.next = 9;
5925
6085
  return this.addMediaInternal(function () {
5926
6086
  return _this30.joinWithMediaRetryInfo.isRetry ? 'JOIN_MEETING_FINAL' : 'JOIN_MEETING_RETRY';
5927
6087
  }, turnServerInfo, forceTurnDiscovery, mediaOptions);
5928
6088
  case 9:
5929
- mediaResponse = _context14.sent;
6089
+ mediaResponse = _context16.sent;
5930
6090
  this.joinWithMediaRetryInfo = {
5931
6091
  isRetry: false,
5932
6092
  prevJoinResponse: undefined
5933
6093
  };
5934
- return _context14.abrupt("return", {
6094
+ return _context16.abrupt("return", {
5935
6095
  join: joinResponse,
5936
6096
  media: mediaResponse,
5937
6097
  multistreamEnabled: this.isMultistream
5938
6098
  });
5939
6099
  case 10:
5940
- _context14.prev = 10;
5941
- _t9 = _context14["catch"](2);
5942
- _loggerProxy.default.logger.error('Meeting:index#joinWithMedia --> ', _t9);
6100
+ _context16.prev = 10;
6101
+ _t0 = _context16["catch"](2);
6102
+ _loggerProxy.default.logger.error('Meeting:index#joinWithMedia --> ', _t0);
5943
6103
  this.roap.abortTurnDiscovery();
5944
6104
 
5945
6105
  // if this was the first attempt, let's do a retry
5946
6106
  shouldRetry = !isRetry;
5947
- if (_internalPluginMetrics.CallDiagnosticUtils.isSdpOfferCreationError(_t9) || _internalPluginMetrics.CallDiagnosticUtils.isWebrtcApiNotAvailableError(_t9)) {
6107
+ if (_internalPluginMetrics.CallDiagnosticUtils.isSdpOfferCreationError(_t0) || _internalPluginMetrics.CallDiagnosticUtils.isWebrtcApiNotAvailableError(_t0)) {
5948
6108
  // errors related to offer creation (for example missing H264 codec) will happen again no matter how many times we try,
5949
6109
  // so there is no point doing a retry
5950
6110
  shouldRetry = false;
5951
6111
  }
5952
- if (_internalPluginMetrics.CallDiagnosticUtils.isBrowserMediaError(_t9)) {
6112
+ if (_internalPluginMetrics.CallDiagnosticUtils.isBrowserMediaError(_t0)) {
5953
6113
  shouldRetry = false;
5954
6114
  // eslint-disable-next-line no-ex-assign
5955
- _t9 = (0, _lodash.merge)({
6115
+ _t0 = (0, _lodash.merge)({
5956
6116
  error: {
5957
6117
  body: {
5958
- errorCode: _internalPluginMetrics.CallDiagnosticUtils.getBrowserMediaErrorCode(_t9),
5959
- message: (_error2 = _t9) === null || _error2 === void 0 ? void 0 : _error2.message,
5960
- name: (_error3 = _t9) === null || _error3 === void 0 ? void 0 : _error3.name
6118
+ errorCode: _internalPluginMetrics.CallDiagnosticUtils.getBrowserMediaErrorCode(_t0),
6119
+ message: (_error2 = _t0) === null || _error2 === void 0 ? void 0 : _error2.message,
6120
+ name: (_error3 = _t0) === null || _error3 === void 0 ? void 0 : _error3.name
5961
6121
  }
5962
6122
  }
5963
6123
  });
@@ -5965,54 +6125,54 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5965
6125
 
5966
6126
  // we only want to call leave if join was successful and this was a retry or we won't be doing any more retries
5967
6127
  if (!(joined && (isRetry || !shouldRetry))) {
5968
- _context14.next = 14;
6128
+ _context16.next = 14;
5969
6129
  break;
5970
6130
  }
5971
- _context14.prev = 11;
5972
- _context14.next = 12;
6131
+ _context16.prev = 11;
6132
+ _context16.next = 12;
5973
6133
  return this.leave({
5974
6134
  resourceId: joinOptions === null || joinOptions === void 0 ? void 0 : joinOptions.resourceId,
5975
6135
  reason: 'joinWithMedia failure'
5976
6136
  });
5977
6137
  case 12:
5978
- _context14.next = 14;
6138
+ _context16.next = 14;
5979
6139
  break;
5980
6140
  case 13:
5981
- _context14.prev = 13;
5982
- _t0 = _context14["catch"](11);
5983
- _loggerProxy.default.logger.error('Meeting:index#joinWithMedia --> leave error', _t0);
5984
- leaveError = _t0;
6141
+ _context16.prev = 13;
6142
+ _t1 = _context16["catch"](11);
6143
+ _loggerProxy.default.logger.error('Meeting:index#joinWithMedia --> leave error', _t1);
6144
+ leaveError = _t1;
5985
6145
  case 14:
5986
6146
  _metrics.default.sendBehavioralMetric(_constants2.default.JOIN_WITH_MEDIA_FAILURE, {
5987
6147
  correlation_id: this.correlationId,
5988
6148
  locus_id: (_this$locusUrl = this.locusUrl) === null || _this$locusUrl === void 0 ? void 0 : _this$locusUrl.split('/').pop(),
5989
6149
  // if join fails, we may end up with no locusUrl
5990
- reason: _t9.message,
5991
- stack: _t9.stack,
6150
+ reason: _t0.message,
6151
+ stack: _t0.stack,
5992
6152
  leaveErrorReason: (_leaveError = leaveError) === null || _leaveError === void 0 ? void 0 : _leaveError.message,
5993
6153
  isRetry: isRetry
5994
6154
  }, {
5995
- type: _t9.name
6155
+ type: _t0.name
5996
6156
  });
5997
6157
  if (!shouldRetry) {
5998
- _context14.next = 15;
6158
+ _context16.next = 15;
5999
6159
  break;
6000
6160
  }
6001
6161
  _loggerProxy.default.logger.warn('Meeting:index#joinWithMedia --> retrying call to joinWithMedia');
6002
6162
  this.joinWithMediaRetryInfo.isRetry = true;
6003
6163
  this.joinWithMediaRetryInfo.prevJoinResponse = joinResponse;
6004
- return _context14.abrupt("return", this.joinWithMedia(options));
6164
+ return _context16.abrupt("return", this.joinWithMedia(options));
6005
6165
  case 15:
6006
6166
  this.joinWithMediaRetryInfo = {
6007
6167
  isRetry: false,
6008
6168
  prevJoinResponse: undefined
6009
6169
  };
6010
- throw _t9;
6170
+ throw _t0;
6011
6171
  case 16:
6012
6172
  case "end":
6013
- return _context14.stop();
6173
+ return _context16.stop();
6014
6174
  }
6015
- }, _callee14, this, [[2, 10], [11, 13]]);
6175
+ }, _callee16, this, [[2, 10], [11, 13]]);
6016
6176
  }));
6017
6177
  function joinWithMedia() {
6018
6178
  return _joinWithMedia.apply(this, arguments);
@@ -6042,20 +6202,20 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6042
6202
  return _promise.default.reject(new _parameter.default('Cannot reconnect, Media has not established to reconnect'));
6043
6203
  }
6044
6204
  this.cleanUpBeforeReconnection();
6045
- return this.reconnectionManager.reconnect(options, /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee15() {
6046
- return _regenerator.default.wrap(function (_context15) {
6047
- while (1) switch (_context15.prev = _context15.next) {
6205
+ return this.reconnectionManager.reconnect(options, /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee17() {
6206
+ return _regenerator.default.wrap(function (_context17) {
6207
+ while (1) switch (_context17.prev = _context17.next) {
6048
6208
  case 0:
6049
- _context15.next = 1;
6209
+ _context17.next = 1;
6050
6210
  return _this31.waitForRemoteSDPAnswer();
6051
6211
  case 1:
6052
- _context15.next = 2;
6212
+ _context17.next = 2;
6053
6213
  return _this31.waitForMediaConnectionConnected();
6054
6214
  case 2:
6055
6215
  case "end":
6056
- return _context15.stop();
6216
+ return _context17.stop();
6057
6217
  }
6058
- }, _callee15);
6218
+ }, _callee17);
6059
6219
  }))).then(function () {
6060
6220
  _loggerProxy.default.logger.log('Meeting:index#reconnect --> Meeting reconnect success');
6061
6221
  }).catch(function (error) {
@@ -6095,8 +6255,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6095
6255
  }, {
6096
6256
  key: "isReactionsSupported",
6097
6257
  value: function isReactionsSupported() {
6098
- var _this$locusInfo5, _this$locusInfo5$cont;
6099
- if ((_this$locusInfo5 = this.locusInfo) !== null && _this$locusInfo5 !== void 0 && (_this$locusInfo5$cont = _this$locusInfo5.controls) !== null && _this$locusInfo5$cont !== void 0 && _this$locusInfo5$cont.reactions.enabled) {
6258
+ var _this$locusInfo6, _this$locusInfo6$cont;
6259
+ if ((_this$locusInfo6 = this.locusInfo) !== null && _this$locusInfo6 !== void 0 && (_this$locusInfo6$cont = _this$locusInfo6.controls) !== null && _this$locusInfo6$cont !== void 0 && _this$locusInfo6$cont.reactions.enabled) {
6100
6260
  return true;
6101
6261
  }
6102
6262
  _loggerProxy.default.logger.error('Meeting:index#isReactionsSupported --> Reactions is not supported');
@@ -6196,47 +6356,47 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6196
6356
  }, {
6197
6357
  key: "startTranscription",
6198
6358
  value: (function () {
6199
- var _startTranscription = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee16(options) {
6200
- var _t1;
6201
- return _regenerator.default.wrap(function (_context16) {
6202
- while (1) switch (_context16.prev = _context16.next) {
6359
+ var _startTranscription = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee18(options) {
6360
+ var _t10;
6361
+ return _regenerator.default.wrap(function (_context18) {
6362
+ while (1) switch (_context18.prev = _context18.next) {
6203
6363
  case 0:
6204
6364
  if (!this.isJoined()) {
6205
- _context16.next = 5;
6365
+ _context18.next = 5;
6206
6366
  break;
6207
6367
  }
6208
6368
  _loggerProxy.default.logger.info('Meeting:index#startTranscription --> Attempting to enable transcription!');
6209
- _context16.prev = 1;
6369
+ _context18.prev = 1;
6210
6370
  if (!this.areVoiceaEventsSetup) {
6211
6371
  this.setUpVoiceaListeners();
6212
6372
  }
6213
6373
 
6214
6374
  // @ts-ignore
6215
- _context16.next = 2;
6375
+ _context18.next = 2;
6216
6376
  return this.webex.internal.voicea.turnOnCaptions(options === null || options === void 0 ? void 0 : options.spokenLanguage);
6217
6377
  case 2:
6218
- _context16.next = 4;
6378
+ _context18.next = 4;
6219
6379
  break;
6220
6380
  case 3:
6221
- _context16.prev = 3;
6222
- _t1 = _context16["catch"](1);
6223
- _loggerProxy.default.logger.error("Meeting:index#startTranscription --> ".concat(_t1));
6381
+ _context18.prev = 3;
6382
+ _t10 = _context18["catch"](1);
6383
+ _loggerProxy.default.logger.error("Meeting:index#startTranscription --> ".concat(_t10));
6224
6384
  _metrics.default.sendBehavioralMetric(_constants2.default.RECEIVE_TRANSCRIPTION_FAILURE, {
6225
6385
  correlation_id: this.correlationId,
6226
- reason: _t1.message,
6227
- stack: _t1.stack
6386
+ reason: _t10.message,
6387
+ stack: _t10.stack
6228
6388
  });
6229
6389
  case 4:
6230
- _context16.next = 6;
6390
+ _context18.next = 6;
6231
6391
  break;
6232
6392
  case 5:
6233
6393
  _loggerProxy.default.logger.error("Meeting:index#startTranscription --> meeting joined : ".concat(this.isJoined()));
6234
6394
  throw new Error('Meeting is not joined');
6235
6395
  case 6:
6236
6396
  case "end":
6237
- return _context16.stop();
6397
+ return _context18.stop();
6238
6398
  }
6239
- }, _callee16, this, [[1, 3]]);
6399
+ }, _callee18, this, [[1, 3]]);
6240
6400
  }));
6241
6401
  function startTranscription(_x14) {
6242
6402
  return _startTranscription.apply(this, arguments);
@@ -6302,7 +6462,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6302
6462
  * Scenario D: Joining any other way (sip, pstn, conversationUrl, link just need to specify resourceId)
6303
6463
  */
6304
6464
  function () {
6305
- var _join = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee17() {
6465
+ var _join = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee19() {
6306
6466
  var _this34 = this;
6307
6467
  var options,
6308
6468
  errorMessage,
@@ -6313,26 +6473,26 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6313
6473
  _error4,
6314
6474
  _errorMessage3,
6315
6475
  _error5,
6316
- _args17 = arguments,
6317
- _t10;
6318
- return _regenerator.default.wrap(function (_context17) {
6319
- while (1) switch (_context17.prev = _context17.next) {
6476
+ _args19 = arguments,
6477
+ _t11;
6478
+ return _regenerator.default.wrap(function (_context19) {
6479
+ while (1) switch (_context19.prev = _context19.next) {
6320
6480
  case 0:
6321
- options = _args17.length > 0 && _args17[0] !== undefined ? _args17[0] : {};
6481
+ options = _args19.length > 0 && _args19[0] !== undefined ? _args19[0] : {};
6322
6482
  if (this.webex.meetings.registered) {
6323
- _context17.next = 1;
6483
+ _context19.next = 1;
6324
6484
  break;
6325
6485
  }
6326
6486
  errorMessage = 'Meeting:index#join --> Device not registered';
6327
6487
  error = new Error(errorMessage);
6328
6488
  _loggerProxy.default.logger.error(errorMessage);
6329
- return _context17.abrupt("return", _promise.default.reject(error));
6489
+ return _context19.abrupt("return", _promise.default.reject(error));
6330
6490
  case 1:
6331
6491
  if (!this.deferJoin) {
6332
- _context17.next = 2;
6492
+ _context19.next = 2;
6333
6493
  break;
6334
6494
  }
6335
- return _context17.abrupt("return", this.deferJoin);
6495
+ return _context19.abrupt("return", this.deferJoin);
6336
6496
  case 2:
6337
6497
  // Create a deferred promise for a consistent resolve value from utils.
6338
6498
  // This also prevents redundant API calls.
@@ -6384,15 +6544,15 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6384
6544
  this.wirelessShare = true;
6385
6545
  }
6386
6546
  if (!options.meetingQuality) {
6387
- _context17.next = 6;
6547
+ _context19.next = 6;
6388
6548
  break;
6389
6549
  }
6390
6550
  if (!(typeof options.meetingQuality === 'string')) {
6391
- _context17.next = 4;
6551
+ _context19.next = 4;
6392
6552
  break;
6393
6553
  }
6394
6554
  if (_constants.QUALITY_LEVELS[options.meetingQuality]) {
6395
- _context17.next = 3;
6555
+ _context19.next = 3;
6396
6556
  break;
6397
6557
  }
6398
6558
  _errorMessage2 = "Meeting:index#join --> ".concat(options.meetingQuality, " not defined");
@@ -6400,16 +6560,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6400
6560
  _loggerProxy.default.logger.error(_errorMessage2);
6401
6561
  joinFailed(_error4);
6402
6562
  this.deferJoin = undefined;
6403
- return _context17.abrupt("return", _promise.default.reject(_error4));
6563
+ return _context19.abrupt("return", _promise.default.reject(_error4));
6404
6564
  case 3:
6405
6565
  this.mediaProperties.setRemoteQualityLevel(options.meetingQuality);
6406
6566
  case 4:
6407
6567
  if (!((0, _typeof2.default)(options.meetingQuality) === 'object')) {
6408
- _context17.next = 6;
6568
+ _context19.next = 6;
6409
6569
  break;
6410
6570
  }
6411
6571
  if (_constants.QUALITY_LEVELS[options.meetingQuality.remote]) {
6412
- _context17.next = 5;
6572
+ _context19.next = 5;
6413
6573
  break;
6414
6574
  }
6415
6575
  _errorMessage3 = "Meeting:index#join --> ".concat(options.meetingQuality.remote, " not defined");
@@ -6417,42 +6577,42 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6417
6577
  _error5 = new Error(_errorMessage3);
6418
6578
  joinFailed(_error5);
6419
6579
  this.deferJoin = undefined;
6420
- return _context17.abrupt("return", _promise.default.reject(new Error(_errorMessage3)));
6580
+ return _context19.abrupt("return", _promise.default.reject(new Error(_errorMessage3)));
6421
6581
  case 5:
6422
6582
  if (options.meetingQuality.remote) {
6423
6583
  this.mediaProperties.setRemoteQualityLevel(options.meetingQuality.remote);
6424
6584
  }
6425
6585
  case 6:
6426
6586
  this.isMultistream = !!options.enableMultistream;
6427
- _context17.prev = 7;
6428
- _context17.next = 8;
6587
+ _context19.prev = 7;
6588
+ _context19.next = 8;
6429
6589
  return this.checkAndRefreshPermissionToken(_constants.MEETING_PERMISSION_TOKEN_REFRESH_THRESHOLD_IN_SEC, _constants.MEETING_PERMISSION_TOKEN_REFRESH_REASON);
6430
6590
  case 8:
6431
- _context17.next = 10;
6591
+ _context19.next = 10;
6432
6592
  break;
6433
6593
  case 9:
6434
- _context17.prev = 9;
6435
- _t10 = _context17["catch"](7);
6436
- _loggerProxy.default.logger.error('Meeting:index#join --> Failed to refresh permission token:', _t10);
6437
- if (!(_t10 instanceof _captchaError.default || _t10 instanceof _passwordError.default || _t10 instanceof _permission.default)) {
6438
- _context17.next = 10;
6594
+ _context19.prev = 9;
6595
+ _t11 = _context19["catch"](7);
6596
+ _loggerProxy.default.logger.error('Meeting:index#join --> Failed to refresh permission token:', _t11);
6597
+ if (!(_t11 instanceof _captchaError.default || _t11 instanceof _passwordError.default || _t11 instanceof _permission.default)) {
6598
+ _context19.next = 10;
6439
6599
  break;
6440
6600
  }
6441
- this.meetingFiniteStateMachine.fail(_t10);
6601
+ this.meetingFiniteStateMachine.fail(_t11);
6442
6602
 
6443
6603
  // Upload logs on refreshpermissionToken refresh Failure
6444
6604
  _triggerProxy.default.trigger(this, {
6445
6605
  file: 'meeting/index',
6446
6606
  function: 'join'
6447
6607
  }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, this);
6448
- joinFailed(_t10);
6608
+ joinFailed(_t11);
6449
6609
  this.deferJoin = undefined;
6450
6610
 
6451
6611
  // if refresh permission token requires captcha, password or permission, we are throwing the errors
6452
6612
  // and bubble it up to client
6453
- return _context17.abrupt("return", _promise.default.reject(_t10));
6613
+ return _context19.abrupt("return", _promise.default.reject(_t11));
6454
6614
  case 10:
6455
- return _context17.abrupt("return", _util2.default.joinMeetingOptions(this, options).then(function (join) {
6615
+ return _context19.abrupt("return", _util2.default.joinMeetingOptions(this, options).then(function (join) {
6456
6616
  _this34.meetingFiniteStateMachine.join();
6457
6617
  _this34.setupLocusMediaRequest();
6458
6618
 
@@ -6505,9 +6665,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6505
6665
  }));
6506
6666
  case 11:
6507
6667
  case "end":
6508
- return _context17.stop();
6668
+ return _context19.stop();
6509
6669
  }
6510
- }, _callee17, this, [[7, 9]]);
6670
+ }, _callee19, this, [[7, 9]]);
6511
6671
  }));
6512
6672
  function join() {
6513
6673
  return _join.apply(this, arguments);
@@ -6556,28 +6716,36 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6556
6716
  this.llmHealthCheckTimer = undefined;
6557
6717
  }
6558
6718
  }
6559
-
6560
- /**
6719
+ }, {
6720
+ key: "updateLLMConnection",
6721
+ value: (
6722
+ /**
6561
6723
  * Connects to low latency mercury and reconnects if the address has changed
6562
6724
  * It will also disconnect if called when the meeting has ended
6563
6725
  * @param {String} datachannelUrl
6564
6726
  * @returns {Promise}
6565
6727
  */
6566
- }, {
6567
- key: "updateLLMConnection",
6568
- value: (function () {
6569
- var _updateLLMConnection = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee18() {
6728
+ function () {
6729
+ var _updateLLMConnection = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee20() {
6570
6730
  var _this36 = this;
6571
- var _this$locusInfo6, url, _this$locusInfo6$info, _this$locusInfo6$info2, datachannelUrl, practiceSessionDatachannelUrl, isJoined, dataChannelUrl;
6572
- return _regenerator.default.wrap(function (_context18) {
6573
- while (1) switch (_context18.prev = _context18.next) {
6731
+ 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;
6732
+ return _regenerator.default.wrap(function (_context20) {
6733
+ while (1) switch (_context20.prev = _context20.next) {
6574
6734
  case 0:
6575
6735
  // @ts-ignore - Fix type
6576
- _this$locusInfo6 = this.locusInfo, url = _this$locusInfo6.url, _this$locusInfo6$info = _this$locusInfo6.info, _this$locusInfo6$info2 = _this$locusInfo6$info === void 0 ? {} : _this$locusInfo6$info, datachannelUrl = _this$locusInfo6$info2.datachannelUrl, practiceSessionDatachannelUrl = _this$locusInfo6$info2.practiceSessionDatachannelUrl;
6577
- isJoined = this.isJoined(); // webinar panelist should use new data channel in practice session
6578
- dataChannelUrl = this.webinar.isJoinPracticeSessionDataChannel() && practiceSessionDatachannelUrl ? practiceSessionDatachannelUrl : datachannelUrl; // @ts-ignore - Fix type
6736
+ _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;
6737
+ isJoined = this.isJoined(); // @ts-ignore
6738
+ currentToken = this.webex.internal.llm.getDatachannelToken(_internalPluginLlm.DataChannelTokenType.Default);
6739
+ finalToken = currentToken !== null && currentToken !== void 0 ? currentToken : datachannelToken;
6740
+ if (!currentToken && datachannelToken) {
6741
+ // @ts-ignore
6742
+ this.webex.internal.llm.setDatachannelToken(datachannelToken, _internalPluginLlm.DataChannelTokenType.Default);
6743
+ }
6744
+
6745
+ // webinar panelist should use new data channel in practice session
6746
+ dataChannelUrl = datachannelUrl; // @ts-ignore - Fix type
6579
6747
  if (!this.webex.internal.llm.isConnected()) {
6580
- _context18.next = 3;
6748
+ _context20.next = 2;
6581
6749
  break;
6582
6750
  }
6583
6751
  if (!(
@@ -6585,30 +6753,23 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6585
6753
  url === this.webex.internal.llm.getLocusUrl() &&
6586
6754
  // @ts-ignore - Fix type
6587
6755
  dataChannelUrl === this.webex.internal.llm.getDatachannelUrl() && isJoined)) {
6588
- _context18.next = 1;
6756
+ _context20.next = 1;
6589
6757
  break;
6590
6758
  }
6591
- return _context18.abrupt("return", undefined);
6759
+ return _context20.abrupt("return", undefined);
6592
6760
  case 1:
6593
- _context18.next = 2;
6594
- return this.webex.internal.llm.disconnectLLM(isJoined ? {
6595
- code: 3050,
6596
- reason: 'done (permanent)'
6597
- } : undefined);
6761
+ _context20.next = 2;
6762
+ return this.cleanupLLMConneciton({
6763
+ removeOnlineListener: false
6764
+ });
6598
6765
  case 2:
6599
- // @ts-ignore - Fix type
6600
- this.webex.internal.llm.off('event:relay.event', this.processRelayEvent);
6601
- // @ts-ignore - Fix type
6602
- this.webex.internal.llm.off(_constants.LOCUS_LLM_EVENT, this.processLocusLLMEvent);
6603
- this.clearLLMHealthCheckTimer();
6604
- case 3:
6605
6766
  if (isJoined) {
6606
- _context18.next = 4;
6767
+ _context20.next = 3;
6607
6768
  break;
6608
6769
  }
6609
- return _context18.abrupt("return", undefined);
6610
- case 4:
6611
- return _context18.abrupt("return", this.webex.internal.llm.registerAndConnect(url, dataChannelUrl).then(function (registerAndConnectResult) {
6770
+ return _context20.abrupt("return", undefined);
6771
+ case 3:
6772
+ return _context20.abrupt("return", this.webex.internal.llm.registerAndConnect(url, dataChannelUrl, finalToken).then(function (registerAndConnectResult) {
6612
6773
  // @ts-ignore - Fix type
6613
6774
  _this36.webex.internal.llm.off('event:relay.event', _this36.processRelayEvent);
6614
6775
  // @ts-ignore - Fix type
@@ -6621,11 +6782,11 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6621
6782
  _this36.startLLMHealthCheckTimer();
6622
6783
  return _promise.default.resolve(registerAndConnectResult);
6623
6784
  }));
6624
- case 5:
6785
+ case 4:
6625
6786
  case "end":
6626
- return _context18.stop();
6787
+ return _context20.stop();
6627
6788
  }
6628
- }, _callee18, this);
6789
+ }, _callee20, this);
6629
6790
  }));
6630
6791
  function updateLLMConnection() {
6631
6792
  return _updateLLMConnection.apply(this, arguments);
@@ -6811,17 +6972,17 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6811
6972
  meetingId: this.id
6812
6973
  }
6813
6974
  });
6814
- this.locusInfo.once(_constants.LOCUSINFO.EVENTS.SELF_OBSERVING, /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee19() {
6815
- var mediaSettings, _t11;
6816
- return _regenerator.default.wrap(function (_context19) {
6817
- while (1) switch (_context19.prev = _context19.next) {
6975
+ this.locusInfo.once(_constants.LOCUSINFO.EVENTS.SELF_OBSERVING, /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee21() {
6976
+ var mediaSettings, _t12;
6977
+ return _regenerator.default.wrap(function (_context21) {
6978
+ while (1) switch (_context21.prev = _context21.next) {
6818
6979
  case 0:
6819
- _context19.prev = 0;
6980
+ _context21.prev = 0;
6820
6981
  if (!(_this40.screenShareFloorState === ScreenShareFloorStatus.GRANTED)) {
6821
- _context19.next = 1;
6982
+ _context21.next = 1;
6822
6983
  break;
6823
6984
  }
6824
- _context19.next = 1;
6985
+ _context21.next = 1;
6825
6986
  return _this40.releaseScreenShareFloor();
6826
6987
  case 1:
6827
6988
  mediaSettings = {
@@ -6840,23 +7001,23 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6840
7001
  // when a move to is intiated by the client , Locus delets the existing media node from the server as soon the device answers the meeting
6841
7002
  // once the device answers we close the old connection and create new media server connection with only share enabled
6842
7003
  if (!_this40.statsAnalyzer) {
6843
- _context19.next = 2;
7004
+ _context21.next = 2;
6844
7005
  break;
6845
7006
  }
6846
- _context19.next = 2;
7007
+ _context21.next = 2;
6847
7008
  return _this40.statsAnalyzer.stopAnalyzer();
6848
7009
  case 2:
6849
- _context19.next = 3;
7010
+ _context21.next = 3;
6850
7011
  return _this40.closeRemoteStreams();
6851
7012
  case 3:
6852
- _context19.next = 4;
7013
+ _context21.next = 4;
6853
7014
  return _this40.closePeerConnections();
6854
7015
  case 4:
6855
7016
  _this40.cleanupLocalStreams();
6856
7017
  _this40.unsetRemoteStreams();
6857
7018
  _this40.unsetPeerConnections();
6858
7019
  _this40.reconnectionManager.cleanUp();
6859
- _context19.next = 5;
7020
+ _context21.next = 5;
6860
7021
  return _this40.addMedia({
6861
7022
  audioEnabled: false,
6862
7023
  videoEnabled: false,
@@ -6865,24 +7026,24 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6865
7026
  case 5:
6866
7027
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_TO_SUCCESS);
6867
7028
  _this40.isMoveToInProgress = false;
6868
- _context19.next = 7;
7029
+ _context21.next = 7;
6869
7030
  break;
6870
7031
  case 6:
6871
- _context19.prev = 6;
6872
- _t11 = _context19["catch"](0);
6873
- _loggerProxy.default.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId', _t11);
7032
+ _context21.prev = 6;
7033
+ _t12 = _context21["catch"](0);
7034
+ _loggerProxy.default.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId', _t12);
6874
7035
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_TO_FAILURE, {
6875
7036
  correlation_id: _this40.correlationId,
6876
7037
  locus_id: _this40.locusUrl.split('/').pop(),
6877
- reason: _t11.message,
6878
- stack: _t11.stack
7038
+ reason: _t12.message,
7039
+ stack: _t12.stack
6879
7040
  });
6880
7041
  _this40.isMoveToInProgress = false;
6881
7042
  case 7:
6882
7043
  case "end":
6883
- return _context19.stop();
7044
+ return _context21.stop();
6884
7045
  }
6885
- }, _callee19, null, [[0, 6]]);
7046
+ }, _callee21, null, [[0, 6]]);
6886
7047
  })));
6887
7048
  _loggerProxy.default.logger.info('Meeting:index#moveTo --> Initated moved to using resourceId', resourceId);
6888
7049
 
@@ -6970,10 +7131,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6970
7131
  }, {
6971
7132
  key: "createMediaConnection",
6972
7133
  value: (function () {
6973
- var _createMediaConnection = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee20(turnServerInfo, bundlePolicy) {
7134
+ var _createMediaConnection = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee22(turnServerInfo, bundlePolicy) {
6974
7135
  var mc, audioEnabled, videoEnabled, shareEnabled;
6975
- return _regenerator.default.wrap(function (_context20) {
6976
- while (1) switch (_context20.prev = _context20.next) {
7136
+ return _regenerator.default.wrap(function (_context22) {
7137
+ while (1) switch (_context22.prev = _context22.next) {
6977
7138
  case 0:
6978
7139
  this.rtcMetrics = this.isMultistream ?
6979
7140
  // @ts-ignore
@@ -7015,40 +7176,40 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7015
7176
 
7016
7177
  // publish the streams
7017
7178
  if (!this.mediaProperties.audioStream) {
7018
- _context20.next = 1;
7179
+ _context22.next = 1;
7019
7180
  break;
7020
7181
  }
7021
7182
  this.setSendNamedMediaGroup(_internalMediaCore.MediaType.AudioMain);
7022
- _context20.next = 1;
7183
+ _context22.next = 1;
7023
7184
  return this.publishStream(_internalMediaCore.MediaType.AudioMain, this.mediaProperties.audioStream);
7024
7185
  case 1:
7025
7186
  if (!this.mediaProperties.videoStream) {
7026
- _context20.next = 2;
7187
+ _context22.next = 2;
7027
7188
  break;
7028
7189
  }
7029
- _context20.next = 2;
7190
+ _context22.next = 2;
7030
7191
  return this.publishStream(_internalMediaCore.MediaType.VideoMain, this.mediaProperties.videoStream);
7031
7192
  case 2:
7032
7193
  if (!this.mediaProperties.shareVideoStream) {
7033
- _context20.next = 3;
7194
+ _context22.next = 3;
7034
7195
  break;
7035
7196
  }
7036
- _context20.next = 3;
7197
+ _context22.next = 3;
7037
7198
  return this.publishStream(_internalMediaCore.MediaType.VideoSlides, this.mediaProperties.shareVideoStream);
7038
7199
  case 3:
7039
7200
  if (!(this.isMultistream && this.mediaProperties.shareAudioStream)) {
7040
- _context20.next = 4;
7201
+ _context22.next = 4;
7041
7202
  break;
7042
7203
  }
7043
- _context20.next = 4;
7204
+ _context22.next = 4;
7044
7205
  return this.publishStream(_internalMediaCore.MediaType.AudioSlides, this.mediaProperties.shareAudioStream);
7045
7206
  case 4:
7046
- return _context20.abrupt("return", mc);
7207
+ return _context22.abrupt("return", mc);
7047
7208
  case 5:
7048
7209
  case "end":
7049
- return _context20.stop();
7210
+ return _context22.stop();
7050
7211
  }
7051
- }, _callee20, this);
7212
+ }, _callee22, this);
7052
7213
  }));
7053
7214
  function createMediaConnection(_x15, _x16) {
7054
7215
  return _createMediaConnection.apply(this, arguments);
@@ -7088,11 +7249,11 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7088
7249
  }, {
7089
7250
  key: "setUpLocalStreamReferences",
7090
7251
  value: (function () {
7091
- var _setUpLocalStreamReferences = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee21(localStreams) {
7252
+ var _setUpLocalStreamReferences = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee23(localStreams) {
7092
7253
  var _localStreams$microph, _localStreams$camera, _localStreams$screenS, _localStreams$screenS2, _localStreams$screenS3, _localStreams$screenS4, _localStreams$screenS5, _localStreams$screenS6;
7093
- var setUpStreamPromises, _t12;
7094
- return _regenerator.default.wrap(function (_context21) {
7095
- while (1) switch (_context21.prev = _context21.next) {
7254
+ var setUpStreamPromises, _t13;
7255
+ return _regenerator.default.wrap(function (_context23) {
7256
+ while (1) switch (_context23.prev = _context23.next) {
7096
7257
  case 0:
7097
7258
  setUpStreamPromises = [];
7098
7259
  if (localStreams !== null && localStreams !== void 0 && localStreams.microphone && (localStreams === null || localStreams === void 0 ? void 0 : (_localStreams$microph = localStreams.microphone) === null || _localStreams$microph === void 0 ? void 0 : _localStreams$microph.readyState) !== 'ended') {
@@ -7107,22 +7268,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7107
7268
  if (localStreams !== null && localStreams !== void 0 && (_localStreams$screenS4 = localStreams.screenShare) !== null && _localStreams$screenS4 !== void 0 && _localStreams$screenS4.audio && (localStreams === null || localStreams === void 0 ? void 0 : (_localStreams$screenS5 = localStreams.screenShare) === null || _localStreams$screenS5 === void 0 ? void 0 : (_localStreams$screenS6 = _localStreams$screenS5.audio) === null || _localStreams$screenS6 === void 0 ? void 0 : _localStreams$screenS6.readyState) !== 'ended') {
7108
7269
  setUpStreamPromises.push(this.setLocalShareAudioStream(localStreams.screenShare.audio));
7109
7270
  }
7110
- _context21.prev = 1;
7111
- _context21.next = 2;
7271
+ _context23.prev = 1;
7272
+ _context23.next = 2;
7112
7273
  return _promise.default.all(setUpStreamPromises);
7113
7274
  case 2:
7114
- _context21.next = 4;
7275
+ _context23.next = 4;
7115
7276
  break;
7116
7277
  case 3:
7117
- _context21.prev = 3;
7118
- _t12 = _context21["catch"](1);
7119
- _loggerProxy.default.logger.error("Meeting:index#addMedia():setUpLocalStreamReferences --> Error , ", _t12);
7120
- throw _t12;
7278
+ _context23.prev = 3;
7279
+ _t13 = _context23["catch"](1);
7280
+ _loggerProxy.default.logger.error("Meeting:index#addMedia():setUpLocalStreamReferences --> Error , ", _t13);
7281
+ throw _t13;
7121
7282
  case 4:
7122
7283
  case "end":
7123
- return _context21.stop();
7284
+ return _context23.stop();
7124
7285
  }
7125
- }, _callee21, this, [[1, 3]]);
7286
+ }, _callee23, this, [[1, 3]]);
7126
7287
  }));
7127
7288
  function setUpLocalStreamReferences(_x17) {
7128
7289
  return _setUpLocalStreamReferences.apply(this, arguments);
@@ -7139,72 +7300,72 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7139
7300
  }, {
7140
7301
  key: "waitForMediaConnectionConnected",
7141
7302
  value: (function () {
7142
- var _waitForMediaConnectionConnected = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee22() {
7143
- var iceConnected, _this$mediaProperties8, _this$mediaProperties9, _this$mediaProperties0, _this$mediaProperties1, _this$mediaProperties10, _this$mediaProperties11, _this$mediaProperties12, timedOutError, _t13, _t14, _t15, _t16, _t17, _t18, _t19, _t20, _t21, _t22, _t23, _t24, _t25, _t26, _t27;
7144
- return _regenerator.default.wrap(function (_context22) {
7145
- while (1) switch (_context22.prev = _context22.next) {
7303
+ var _waitForMediaConnectionConnected = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee24() {
7304
+ 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;
7305
+ return _regenerator.default.wrap(function (_context24) {
7306
+ while (1) switch (_context24.prev = _context24.next) {
7146
7307
  case 0:
7147
- _context22.prev = 0;
7148
- _context22.next = 1;
7149
- return this.mediaProperties.waitForMediaConnectionConnected();
7308
+ _context24.prev = 0;
7309
+ _context24.next = 1;
7310
+ return this.mediaProperties.waitForMediaConnectionConnected(this.correlationId);
7150
7311
  case 1:
7151
- _context22.next = 5;
7312
+ _context24.next = 5;
7152
7313
  break;
7153
7314
  case 2:
7154
- _context22.prev = 2;
7155
- _t13 = _context22["catch"](0);
7156
- iceConnected = _t13.iceConnected;
7315
+ _context24.prev = 2;
7316
+ _t14 = _context24["catch"](0);
7317
+ iceConnected = _t14.iceConnected;
7157
7318
  if (this.hasMediaConnectionConnectedAtLeastOnce) {
7158
- _context22.next = 4;
7319
+ _context24.next = 4;
7159
7320
  break;
7160
7321
  }
7161
- _t14 = this.webex.internal.newMetrics;
7162
- _t15 = !this.turnServerUsed;
7163
- _t16 = this.addMediaData.icePhaseCallback();
7164
- _t17 = this.webex.internal.newMetrics.callDiagnosticMetrics;
7165
- _t18 = _internalPluginMetrics.CallDiagnosticUtils;
7166
- _t19 = ((_this$mediaProperties8 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties8 === void 0 ? void 0 : (_this$mediaProperties9 = _this$mediaProperties8.multistreamConnection) === null || _this$mediaProperties9 === void 0 ? void 0 : (_this$mediaProperties0 = _this$mediaProperties9.pc) === null || _this$mediaProperties0 === void 0 ? void 0 : (_this$mediaProperties1 = _this$mediaProperties0.pc) === null || _this$mediaProperties1 === void 0 ? void 0 : _this$mediaProperties1.signalingState) || ((_this$mediaProperties10 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties10 === void 0 ? void 0 : (_this$mediaProperties11 = _this$mediaProperties10.mediaConnection) === null || _this$mediaProperties11 === void 0 ? void 0 : (_this$mediaProperties12 = _this$mediaProperties11.pc) === null || _this$mediaProperties12 === void 0 ? void 0 : _this$mediaProperties12.signalingState) || 'unknown';
7167
- _t20 = iceConnected;
7168
- _t21 = this.turnServerUsed;
7169
- _context22.next = 3;
7322
+ _t15 = this.webex.internal.newMetrics;
7323
+ _t16 = !this.turnServerUsed;
7324
+ _t17 = this.addMediaData.icePhaseCallback();
7325
+ _t18 = this.webex.internal.newMetrics.callDiagnosticMetrics;
7326
+ _t19 = _internalPluginMetrics.CallDiagnosticUtils;
7327
+ _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';
7328
+ _t21 = iceConnected;
7329
+ _t22 = this.turnServerUsed;
7330
+ _context24.next = 3;
7170
7331
  return this.webex.meetings.reachability.isWebexMediaBackendUnreachable().catch(function () {
7171
7332
  return false;
7172
7333
  });
7173
7334
  case 3:
7174
- _t22 = _context22.sent;
7175
- _t23 = _t18.generateClientErrorCodeForIceFailure.call(_t18, {
7176
- signalingState: _t19,
7177
- iceConnected: _t20,
7178
- turnServerUsed: _t21,
7179
- unreachable: _t22
7335
+ _t23 = _context24.sent;
7336
+ _t24 = _t19.generateClientErrorCodeForIceFailure.call(_t19, {
7337
+ signalingState: _t20,
7338
+ iceConnected: _t21,
7339
+ turnServerUsed: _t22,
7340
+ unreachable: _t23
7180
7341
  });
7181
- _t24 = _t17.getErrorPayloadForClientErrorCode.call(_t17, {
7182
- clientErrorCode: _t23
7342
+ _t25 = _t18.getErrorPayloadForClientErrorCode.call(_t18, {
7343
+ clientErrorCode: _t24
7183
7344
  });
7184
- _t25 = [_t24];
7185
- _t26 = {
7186
- canProceed: _t15,
7187
- icePhase: _t16,
7188
- errors: _t25
7189
- };
7345
+ _t26 = [_t25];
7190
7346
  _t27 = {
7347
+ canProceed: _t16,
7348
+ icePhase: _t17,
7349
+ errors: _t26
7350
+ };
7351
+ _t28 = {
7191
7352
  meetingId: this.id,
7192
- rawError: _t13
7353
+ rawError: _t14
7193
7354
  };
7194
- _t14.submitClientEvent.call(_t14, {
7355
+ _t15.submitClientEvent.call(_t15, {
7195
7356
  name: 'client.ice.end',
7196
- payload: _t26,
7197
- options: _t27
7357
+ payload: _t27,
7358
+ options: _t28
7198
7359
  });
7199
7360
  case 4:
7200
7361
  timedOutError = new Error("Timed out waiting for media connection to be connected, correlationId=".concat(this.correlationId));
7201
- timedOutError.cause = _t13;
7362
+ timedOutError.cause = _t14;
7202
7363
  throw timedOutError;
7203
7364
  case 5:
7204
7365
  case "end":
7205
- return _context22.stop();
7366
+ return _context24.stop();
7206
7367
  }
7207
- }, _callee22, this, [[0, 2]]);
7368
+ }, _callee24, this, [[0, 2]]);
7208
7369
  }));
7209
7370
  function waitForMediaConnectionConnected() {
7210
7371
  return _waitForMediaConnectionConnected.apply(this, arguments);
@@ -7271,19 +7432,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7271
7432
  }, {
7272
7433
  key: "waitForRemoteSDPAnswer",
7273
7434
  value: (function () {
7274
- var _waitForRemoteSDPAnswer = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee23() {
7435
+ var _waitForRemoteSDPAnswer = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee25() {
7275
7436
  var _this44 = this;
7276
7437
  var LOG_HEADER, deferSDPAnswer;
7277
- return _regenerator.default.wrap(function (_context23) {
7278
- while (1) switch (_context23.prev = _context23.next) {
7438
+ return _regenerator.default.wrap(function (_context25) {
7439
+ while (1) switch (_context25.prev = _context25.next) {
7279
7440
  case 0:
7280
7441
  LOG_HEADER = 'Meeting:index#addMedia():waitForRemoteSDPAnswer -->';
7281
7442
  if (this.deferSDPAnswer) {
7282
- _context23.next = 1;
7443
+ _context25.next = 1;
7283
7444
  break;
7284
7445
  }
7285
7446
  _loggerProxy.default.logger.warn("".concat(LOG_HEADER, " offer not created yet"));
7286
- return _context23.abrupt("return", _promise.default.reject(new Error('waitForRemoteSDPAnswer() called before local sdp offer created')));
7447
+ return _context25.abrupt("return", _promise.default.reject(new Error('waitForRemoteSDPAnswer() called before local sdp offer created')));
7287
7448
  case 1:
7288
7449
  deferSDPAnswer = this.deferSDPAnswer;
7289
7450
  this.sdpResponseTimer = setTimeout(function () {
@@ -7309,12 +7470,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7309
7470
  deferSDPAnswer.reject(error);
7310
7471
  }, _constants.ROAP_OFFER_ANSWER_EXCHANGE_TIMEOUT);
7311
7472
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " waiting for REMOTE SDP ANSWER..."));
7312
- return _context23.abrupt("return", deferSDPAnswer.promise);
7473
+ return _context25.abrupt("return", deferSDPAnswer.promise);
7313
7474
  case 2:
7314
7475
  case "end":
7315
- return _context23.stop();
7476
+ return _context25.stop();
7316
7477
  }
7317
- }, _callee23, this);
7478
+ }, _callee25, this);
7318
7479
  }));
7319
7480
  function waitForRemoteSDPAnswer() {
7320
7481
  return _waitForRemoteSDPAnswer.apply(this, arguments);
@@ -7333,28 +7494,28 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7333
7494
  }, {
7334
7495
  key: "retryEstablishMediaConnectionWithForcedTurnDiscovery",
7335
7496
  value: (function () {
7336
- var _retryEstablishMediaConnectionWithForcedTurnDiscovery = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee24(remoteMediaManagerConfig, bundlePolicy) {
7337
- var LOG_HEADER, _t28;
7338
- return _regenerator.default.wrap(function (_context24) {
7339
- while (1) switch (_context24.prev = _context24.next) {
7497
+ var _retryEstablishMediaConnectionWithForcedTurnDiscovery = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee26(remoteMediaManagerConfig, bundlePolicy) {
7498
+ var LOG_HEADER, _t29;
7499
+ return _regenerator.default.wrap(function (_context26) {
7500
+ while (1) switch (_context26.prev = _context26.next) {
7340
7501
  case 0:
7341
7502
  LOG_HEADER = 'Meeting:index#addMedia():retryEstablishMediaConnectionWithForcedTurnDiscovery -->';
7342
- _context24.prev = 1;
7343
- _context24.next = 2;
7503
+ _context26.prev = 1;
7504
+ _context26.next = 2;
7344
7505
  return this.establishMediaConnection(remoteMediaManagerConfig, bundlePolicy, true);
7345
7506
  case 2:
7346
- _context24.next = 4;
7507
+ _context26.next = 4;
7347
7508
  break;
7348
7509
  case 3:
7349
- _context24.prev = 3;
7350
- _t28 = _context24["catch"](1);
7351
- _loggerProxy.default.logger.error("".concat(LOG_HEADER, " retry with TURN-TLS failed, media connection unable to connect, "), _t28);
7352
- throw _t28;
7510
+ _context26.prev = 3;
7511
+ _t29 = _context26["catch"](1);
7512
+ _loggerProxy.default.logger.error("".concat(LOG_HEADER, " retry with TURN-TLS failed, media connection unable to connect, "), _t29);
7513
+ throw _t29;
7353
7514
  case 4:
7354
7515
  case "end":
7355
- return _context24.stop();
7516
+ return _context26.stop();
7356
7517
  }
7357
- }, _callee24, this, [[1, 3]]);
7518
+ }, _callee26, this, [[1, 3]]);
7358
7519
  }));
7359
7520
  function retryEstablishMediaConnectionWithForcedTurnDiscovery(_x18, _x19) {
7360
7521
  return _retryEstablishMediaConnectionWithForcedTurnDiscovery.apply(this, arguments);
@@ -7374,14 +7535,14 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7374
7535
  }, {
7375
7536
  key: "retryWithForcedTurnDiscovery",
7376
7537
  value: (function () {
7377
- var _retryWithForcedTurnDiscovery = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee25(remoteMediaManagerConfig, bundlePolicy) {
7538
+ var _retryWithForcedTurnDiscovery = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee27(remoteMediaManagerConfig, bundlePolicy) {
7378
7539
  var LOG_HEADER;
7379
- return _regenerator.default.wrap(function (_context25) {
7380
- while (1) switch (_context25.prev = _context25.next) {
7540
+ return _regenerator.default.wrap(function (_context27) {
7541
+ while (1) switch (_context27.prev = _context27.next) {
7381
7542
  case 0:
7382
7543
  this.addMediaData.retriedWithTurnServer = true;
7383
7544
  LOG_HEADER = 'Meeting:index#addMedia():retryWithForcedTurnDiscovery -->';
7384
- _context25.next = 1;
7545
+ _context27.next = 1;
7385
7546
  return this.cleanUpBeforeRetryWithTurnServer();
7386
7547
  case 1:
7387
7548
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_MEDIA_RETRY, {
@@ -7391,22 +7552,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7391
7552
  reason: 'forcingTurnTls'
7392
7553
  });
7393
7554
  if (!(this.state === _constants.MEETING_STATE.STATES.LEFT)) {
7394
- _context25.next = 2;
7555
+ _context27.next = 2;
7395
7556
  break;
7396
7557
  }
7397
7558
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " meeting state was LEFT after first attempt to establish media connection. Attempting to rejoin. "));
7398
- _context25.next = 2;
7559
+ _context27.next = 2;
7399
7560
  return this.join({
7400
7561
  rejoin: true
7401
7562
  });
7402
7563
  case 2:
7403
- _context25.next = 3;
7564
+ _context27.next = 3;
7404
7565
  return this.retryEstablishMediaConnectionWithForcedTurnDiscovery(remoteMediaManagerConfig, bundlePolicy);
7405
7566
  case 3:
7406
7567
  case "end":
7407
- return _context25.stop();
7568
+ return _context27.stop();
7408
7569
  }
7409
- }, _callee25, this);
7570
+ }, _callee27, this);
7410
7571
  }));
7411
7572
  function retryWithForcedTurnDiscovery(_x20, _x21) {
7412
7573
  return _retryWithForcedTurnDiscovery.apply(this, arguments);
@@ -7428,30 +7589,30 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7428
7589
  }, {
7429
7590
  key: "handleWaitForMediaConnectionConnectedError",
7430
7591
  value: (function () {
7431
- var _handleWaitForMediaConnectionConnectedError = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee26(error, remoteMediaManagerConfig, bundlePolicy) {
7592
+ var _handleWaitForMediaConnectionConnectedError = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee28(error, remoteMediaManagerConfig, bundlePolicy) {
7432
7593
  var LOG_HEADER;
7433
- return _regenerator.default.wrap(function (_context26) {
7434
- while (1) switch (_context26.prev = _context26.next) {
7594
+ return _regenerator.default.wrap(function (_context28) {
7595
+ while (1) switch (_context28.prev = _context28.next) {
7435
7596
  case 0:
7436
7597
  LOG_HEADER = 'Meeting:index#addMedia():handleWaitForMediaConnectionConnectedError -->'; // @ts-ignore - config coming from registerPlugin
7437
7598
  if (this.turnServerUsed) {
7438
- _context26.next = 2;
7599
+ _context28.next = 2;
7439
7600
  break;
7440
7601
  }
7441
7602
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " error waiting for media to connect on UDP, TCP, retrying using TURN-TLS, "), error);
7442
- _context26.next = 1;
7603
+ _context28.next = 1;
7443
7604
  return this.retryWithForcedTurnDiscovery(remoteMediaManagerConfig, bundlePolicy);
7444
7605
  case 1:
7445
- _context26.next = 3;
7606
+ _context28.next = 3;
7446
7607
  break;
7447
7608
  case 2:
7448
7609
  _loggerProxy.default.logger.error("".concat(LOG_HEADER, " error waiting for media to connect using UDP, TCP and TURN-TLS"), error);
7449
7610
  throw new _webexErrors.AddMediaFailed(error);
7450
7611
  case 3:
7451
7612
  case "end":
7452
- return _context26.stop();
7613
+ return _context28.stop();
7453
7614
  }
7454
- }, _callee26, this);
7615
+ }, _callee28, this);
7455
7616
  }));
7456
7617
  function handleWaitForMediaConnectionConnectedError(_x22, _x23, _x24) {
7457
7618
  return _handleWaitForMediaConnectionConnectedError.apply(this, arguments);
@@ -7469,20 +7630,20 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7469
7630
  }, {
7470
7631
  key: "doTurnDiscovery",
7471
7632
  value: (function () {
7472
- var _doTurnDiscovery = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee27(isReconnecting, isForced) {
7633
+ var _doTurnDiscovery = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee29(isReconnecting, isForced) {
7473
7634
  var cdl, turnDiscoveryResult;
7474
- return _regenerator.default.wrap(function (_context27) {
7475
- while (1) switch (_context27.prev = _context27.next) {
7635
+ return _regenerator.default.wrap(function (_context29) {
7636
+ while (1) switch (_context29.prev = _context29.next) {
7476
7637
  case 0:
7477
7638
  // @ts-ignore
7478
7639
  cdl = this.webex.internal.newMetrics.callDiagnosticLatencies; // @ts-ignore
7479
7640
  this.webex.internal.newMetrics.submitInternalEvent({
7480
7641
  name: 'internal.client.add-media.turn-discovery.start'
7481
7642
  });
7482
- _context27.next = 1;
7643
+ _context29.next = 1;
7483
7644
  return this.roap.doTurnDiscovery(this, isReconnecting, isForced);
7484
7645
  case 1:
7485
- turnDiscoveryResult = _context27.sent;
7646
+ turnDiscoveryResult = _context29.sent;
7486
7647
  this.turnDiscoverySkippedReason = turnDiscoveryResult === null || turnDiscoveryResult === void 0 ? void 0 : turnDiscoveryResult.turnDiscoverySkippedReason;
7487
7648
  this.turnServerUsed = !this.turnDiscoverySkippedReason;
7488
7649
 
@@ -7498,12 +7659,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7498
7659
  retriedWithTurnServer: this.addMediaData.retriedWithTurnServer
7499
7660
  });
7500
7661
  }
7501
- return _context27.abrupt("return", turnDiscoveryResult);
7662
+ return _context29.abrupt("return", turnDiscoveryResult);
7502
7663
  case 2:
7503
7664
  case "end":
7504
- return _context27.stop();
7665
+ return _context29.stop();
7505
7666
  }
7506
- }, _callee27, this);
7667
+ }, _callee29, this);
7507
7668
  }));
7508
7669
  function doTurnDiscovery(_x25, _x26) {
7509
7670
  return _doTurnDiscovery.apply(this, arguments);
@@ -7524,35 +7685,35 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7524
7685
  }, {
7525
7686
  key: "establishMediaConnection",
7526
7687
  value: (function () {
7527
- var _establishMediaConnection = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee28(remoteMediaManagerConfig, bundlePolicy, isForced, turnServerInfo) {
7688
+ var _establishMediaConnection = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee30(remoteMediaManagerConfig, bundlePolicy, isForced, turnServerInfo) {
7528
7689
  var _this$locusMediaReque;
7529
- var LOG_HEADER, isReconnecting, _yield$this$doTurnDis, mc, _t29, _t30;
7530
- return _regenerator.default.wrap(function (_context28) {
7531
- while (1) switch (_context28.prev = _context28.next) {
7690
+ var LOG_HEADER, isReconnecting, _yield$this$doTurnDis, mc, _t30, _t31;
7691
+ return _regenerator.default.wrap(function (_context30) {
7692
+ while (1) switch (_context30.prev = _context30.next) {
7532
7693
  case 0:
7533
7694
  LOG_HEADER = 'Meeting:index#addMedia():establishMediaConnection -->';
7534
7695
  isReconnecting = this.isMoveToInProgress || !!((_this$locusMediaReque = this.locusMediaRequest) !== null && _this$locusMediaReque !== void 0 && _this$locusMediaReque.isConfluenceCreated()); // We are forcing turn discovery if the case is moveTo and a turn server was used already
7535
7696
  if (this.isMoveToInProgress && this.turnServerUsed) {
7536
7697
  isForced = true;
7537
7698
  }
7538
- _context28.prev = 1;
7699
+ _context30.prev = 1;
7539
7700
  if (turnServerInfo) {
7540
- _context28.next = 3;
7701
+ _context30.next = 3;
7541
7702
  break;
7542
7703
  }
7543
- _context28.next = 2;
7704
+ _context30.next = 2;
7544
7705
  return this.doTurnDiscovery(isReconnecting, isForced);
7545
7706
  case 2:
7546
- _yield$this$doTurnDis = _context28.sent;
7707
+ _yield$this$doTurnDis = _context30.sent;
7547
7708
  turnServerInfo = _yield$this$doTurnDis.turnServerInfo;
7548
7709
  case 3:
7549
- _context28.next = 4;
7710
+ _context30.next = 4;
7550
7711
  return this.createMediaConnection(turnServerInfo, bundlePolicy);
7551
7712
  case 4:
7552
- mc = _context28.sent;
7713
+ mc = _context30.sent;
7553
7714
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " media connection created this.isMultistream=").concat(this.isMultistream));
7554
7715
  if (!this.isMultistream) {
7555
- _context28.next = 5;
7716
+ _context30.next = 5;
7556
7717
  break;
7557
7718
  }
7558
7719
  this.remoteMediaManager = new _remoteMediaManager.RemoteMediaManager(this.receiveSlotManager, this.mediaRequestManagers, remoteMediaManagerConfig);
@@ -7560,40 +7721,40 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7560
7721
  this.forwardEvent(this.remoteMediaManager, _remoteMediaManager.Event.InterpretationAudioCreated, _constants.EVENT_TRIGGERS.REMOTE_MEDIA_INTERPRETATION_AUDIO_CREATED);
7561
7722
  this.forwardEvent(this.remoteMediaManager, _remoteMediaManager.Event.ScreenShareAudioCreated, _constants.EVENT_TRIGGERS.REMOTE_MEDIA_SCREEN_SHARE_AUDIO_CREATED);
7562
7723
  this.forwardEvent(this.remoteMediaManager, _remoteMediaManager.Event.VideoLayoutChanged, _constants.EVENT_TRIGGERS.REMOTE_MEDIA_VIDEO_LAYOUT_CHANGED);
7563
- _context28.next = 5;
7724
+ _context30.next = 5;
7564
7725
  return this.remoteMediaManager.start();
7565
7726
  case 5:
7566
- _context28.next = 6;
7727
+ _context30.next = 6;
7567
7728
  return mc.initiateOffer();
7568
7729
  case 6:
7569
- _context28.next = 7;
7730
+ _context30.next = 7;
7570
7731
  return this.waitForRemoteSDPAnswer();
7571
7732
  case 7:
7572
7733
  this.handleMediaLogging(this.mediaProperties);
7573
- _context28.next = 9;
7734
+ _context30.next = 9;
7574
7735
  break;
7575
7736
  case 8:
7576
- _context28.prev = 8;
7577
- _t29 = _context28["catch"](1);
7578
- _loggerProxy.default.logger.error("".concat(LOG_HEADER, " error establishing media connection, "), _t29);
7579
- throw _t29;
7737
+ _context30.prev = 8;
7738
+ _t30 = _context30["catch"](1);
7739
+ _loggerProxy.default.logger.error("".concat(LOG_HEADER, " error establishing media connection, "), _t30);
7740
+ throw _t30;
7580
7741
  case 9:
7581
- _context28.prev = 9;
7582
- _context28.next = 10;
7742
+ _context30.prev = 9;
7743
+ _context30.next = 10;
7583
7744
  return this.waitForMediaConnectionConnected();
7584
7745
  case 10:
7585
- _context28.next = 12;
7746
+ _context30.next = 12;
7586
7747
  break;
7587
7748
  case 11:
7588
- _context28.prev = 11;
7589
- _t30 = _context28["catch"](9);
7590
- _context28.next = 12;
7591
- return this.handleWaitForMediaConnectionConnectedError(_t30, remoteMediaManagerConfig, bundlePolicy);
7749
+ _context30.prev = 11;
7750
+ _t31 = _context30["catch"](9);
7751
+ _context30.next = 12;
7752
+ return this.handleWaitForMediaConnectionConnectedError(_t31, remoteMediaManagerConfig, bundlePolicy);
7592
7753
  case 12:
7593
7754
  case "end":
7594
- return _context28.stop();
7755
+ return _context30.stop();
7595
7756
  }
7596
- }, _callee28, this, [[1, 8], [9, 11]]);
7757
+ }, _callee30, this, [[1, 8], [9, 11]]);
7597
7758
  }));
7598
7759
  function establishMediaConnection(_x27, _x28, _x29, _x30) {
7599
7760
  return _establishMediaConnection.apply(this, arguments);
@@ -7610,16 +7771,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7610
7771
  }, {
7611
7772
  key: "cleanUpOnAddMediaFailure",
7612
7773
  value: (function () {
7613
- var _cleanUpOnAddMediaFailure = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee29() {
7774
+ var _cleanUpOnAddMediaFailure = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee31() {
7614
7775
  var _this$networkQualityM, _this$statsMonitor;
7615
- return _regenerator.default.wrap(function (_context29) {
7616
- while (1) switch (_context29.prev = _context29.next) {
7776
+ return _regenerator.default.wrap(function (_context31) {
7777
+ while (1) switch (_context31.prev = _context31.next) {
7617
7778
  case 0:
7618
7779
  if (!this.statsAnalyzer) {
7619
- _context29.next = 1;
7780
+ _context31.next = 1;
7620
7781
  break;
7621
7782
  }
7622
- _context29.next = 1;
7783
+ _context31.next = 1;
7623
7784
  return this.statsAnalyzer.stopAnalyzer();
7624
7785
  case 1:
7625
7786
  this.statsAnalyzer = null;
@@ -7630,7 +7791,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7630
7791
 
7631
7792
  // when media fails, we want to upload a webrtc dump to see whats going on
7632
7793
  // this function is async, but returns once the stats have been gathered
7633
- _context29.next = 2;
7794
+ _context31.next = 2;
7634
7795
  return this.forceSendStatsReport({
7635
7796
  callFrom: 'addMedia'
7636
7797
  });
@@ -7641,9 +7802,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7641
7802
  }
7642
7803
  case 3:
7643
7804
  case "end":
7644
- return _context29.stop();
7805
+ return _context31.stop();
7645
7806
  }
7646
- }, _callee29, this);
7807
+ }, _callee31, this);
7647
7808
  }));
7648
7809
  function cleanUpOnAddMediaFailure() {
7649
7810
  return _cleanUpOnAddMediaFailure.apply(this, arguments);
@@ -7661,16 +7822,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7661
7822
  }, {
7662
7823
  key: "downgradeFromMultistreamToTranscoded",
7663
7824
  value: (function () {
7664
- var _downgradeFromMultistreamToTranscoded = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee30() {
7825
+ var _downgradeFromMultistreamToTranscoded = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee32() {
7665
7826
  var _this$networkQualityM2, _this$statsMonitor2, _this$locusMediaReque2;
7666
- return _regenerator.default.wrap(function (_context30) {
7667
- while (1) switch (_context30.prev = _context30.next) {
7827
+ return _regenerator.default.wrap(function (_context32) {
7828
+ while (1) switch (_context32.prev = _context32.next) {
7668
7829
  case 0:
7669
7830
  if (!this.statsAnalyzer) {
7670
- _context30.next = 1;
7831
+ _context32.next = 1;
7671
7832
  break;
7672
7833
  }
7673
- _context30.next = 1;
7834
+ _context32.next = 1;
7674
7835
  return this.statsAnalyzer.stopAnalyzer();
7675
7836
  case 1:
7676
7837
  this.statsAnalyzer = null;
@@ -7688,9 +7849,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7688
7849
  this.createStatsAnalyzer();
7689
7850
  case 2:
7690
7851
  case "end":
7691
- return _context30.stop();
7852
+ return _context32.stop();
7692
7853
  }
7693
- }, _callee30, this);
7854
+ }, _callee32, this);
7694
7855
  }));
7695
7856
  function downgradeFromMultistreamToTranscoded() {
7696
7857
  return _downgradeFromMultistreamToTranscoded.apply(this, arguments);
@@ -7708,11 +7869,11 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7708
7869
  }, {
7709
7870
  key: "cleanUpBeforeRetryWithTurnServer",
7710
7871
  value: (function () {
7711
- var _cleanUpBeforeRetryWithTurnServer = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee31() {
7712
- return _regenerator.default.wrap(function (_context31) {
7713
- while (1) switch (_context31.prev = _context31.next) {
7872
+ var _cleanUpBeforeRetryWithTurnServer = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee33() {
7873
+ return _regenerator.default.wrap(function (_context33) {
7874
+ while (1) switch (_context33.prev = _context33.next) {
7714
7875
  case 0:
7715
- _context31.next = 1;
7876
+ _context33.next = 1;
7716
7877
  return this.forceSendStatsReport({
7717
7878
  callFrom: 'cleanUpBeforeRetryWithTurnServer'
7718
7879
  });
@@ -7732,9 +7893,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7732
7893
  }
7733
7894
  case 2:
7734
7895
  case "end":
7735
- return _context31.stop();
7896
+ return _context33.stop();
7736
7897
  }
7737
- }, _callee31, this);
7898
+ }, _callee33, this);
7738
7899
  }));
7739
7900
  function cleanUpBeforeRetryWithTurnServer() {
7740
7901
  return _cleanUpBeforeRetryWithTurnServer.apply(this, arguments);
@@ -7744,35 +7905,35 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7744
7905
  }, {
7745
7906
  key: "cleanUpBeforeReconnection",
7746
7907
  value: function () {
7747
- var _cleanUpBeforeReconnection = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee32() {
7748
- var _t31;
7749
- return _regenerator.default.wrap(function (_context32) {
7750
- while (1) switch (_context32.prev = _context32.next) {
7908
+ var _cleanUpBeforeReconnection = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee34() {
7909
+ var _t32;
7910
+ return _regenerator.default.wrap(function (_context34) {
7911
+ while (1) switch (_context34.prev = _context34.next) {
7751
7912
  case 0:
7752
- _context32.prev = 0;
7753
- _context32.next = 1;
7913
+ _context34.prev = 0;
7914
+ _context34.next = 1;
7754
7915
  return this.forceSendStatsReport({
7755
7916
  callFrom: 'cleanUpBeforeReconnection'
7756
7917
  });
7757
7918
  case 1:
7758
7919
  if (!this.statsAnalyzer) {
7759
- _context32.next = 2;
7920
+ _context34.next = 2;
7760
7921
  break;
7761
7922
  }
7762
- _context32.next = 2;
7923
+ _context34.next = 2;
7763
7924
  return this.statsAnalyzer.stopAnalyzer();
7764
7925
  case 2:
7765
- _context32.next = 4;
7926
+ _context34.next = 4;
7766
7927
  break;
7767
7928
  case 3:
7768
- _context32.prev = 3;
7769
- _t31 = _context32["catch"](0);
7770
- _loggerProxy.default.logger.error('Meeting:index#cleanUpBeforeReconnection --> Error during cleanup: ', _t31);
7929
+ _context34.prev = 3;
7930
+ _t32 = _context34["catch"](0);
7931
+ _loggerProxy.default.logger.error('Meeting:index#cleanUpBeforeReconnection --> Error during cleanup: ', _t32);
7771
7932
  case 4:
7772
7933
  case "end":
7773
- return _context32.stop();
7934
+ return _context34.stop();
7774
7935
  }
7775
- }, _callee32, this, [[0, 3]]);
7936
+ }, _callee34, this, [[0, 3]]);
7776
7937
  }));
7777
7938
  function cleanUpBeforeReconnection() {
7778
7939
  return _cleanUpBeforeReconnection.apply(this, arguments);
@@ -7840,7 +8001,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7840
8001
  }, {
7841
8002
  key: "addMediaInternal",
7842
8003
  value: (function () {
7843
- var _addMediaInternal = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee33(icePhaseCallback, turnServerInfo, forceTurnDiscovery) {
8004
+ var _addMediaInternal = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee35(icePhaseCallback, turnServerInfo, forceTurnDiscovery) {
7844
8005
  var options,
7845
8006
  LOG_HEADER,
7846
8007
  localStreams,
@@ -7857,6 +8018,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7857
8018
  bundlePolicy,
7858
8019
  _options$additionalMe,
7859
8020
  additionalMediaOptions,
8021
+ _options$allowPublish,
8022
+ allowPublishMediaInLobby,
7860
8023
  rawSendVideo,
7861
8024
  rawReceiveVideo,
7862
8025
  rawSendAudio,
@@ -7874,7 +8037,6 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7874
8037
  numTransports,
7875
8038
  iceCandidateErrors,
7876
8039
  reachabilityMetrics,
7877
- _this$mediaProperties13,
7878
8040
  _this$mediaProperties14,
7879
8041
  _this$mediaProperties15,
7880
8042
  _this$mediaProperties16,
@@ -7895,36 +8057,37 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7895
8057
  _this$mediaProperties31,
7896
8058
  _this$mediaProperties32,
7897
8059
  _this$mediaProperties33,
8060
+ _this$mediaProperties34,
7898
8061
  _reachabilityMetrics,
7899
8062
  _yield$this$mediaProp2,
7900
8063
  _selectedCandidatePairChanges,
7901
8064
  _numTransports,
7902
8065
  _iceCandidateErrors,
7903
- _args33 = arguments,
7904
- _t32,
7905
- _t33;
7906
- return _regenerator.default.wrap(function (_context33) {
7907
- while (1) switch (_context33.prev = _context33.next) {
8066
+ _args35 = arguments,
8067
+ _t33,
8068
+ _t34;
8069
+ return _regenerator.default.wrap(function (_context35) {
8070
+ while (1) switch (_context35.prev = _context35.next) {
7908
8071
  case 0:
7909
- options = _args33.length > 3 && _args33[3] !== undefined ? _args33[3] : {};
8072
+ options = _args35.length > 3 && _args35[3] !== undefined ? _args35[3] : {};
7910
8073
  this.addMediaData.retriedWithTurnServer = false;
7911
8074
  this.addMediaData.icePhaseCallback = icePhaseCallback;
7912
8075
  this.hasMediaConnectionConnectedAtLeastOnce = false;
7913
8076
  LOG_HEADER = 'Meeting:index#addMedia -->';
7914
8077
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " called with: options=").concat((0, _stringify.default)(options), ", turnServerInfo=").concat((0, _stringify.default)(turnServerInfo), ", forceTurnDiscovery=").concat(forceTurnDiscovery));
7915
8078
  if (!(options.allowMediaInLobby !== true && this.meetingState !== _constants.FULL_STATE.ACTIVE)) {
7916
- _context33.next = 1;
8079
+ _context35.next = 1;
7917
8080
  break;
7918
8081
  }
7919
8082
  throw new _webexErrors.MeetingNotActiveError();
7920
8083
  case 1:
7921
8084
  if (!_util2.default.isUserInLeftState(this.locusInfo)) {
7922
- _context33.next = 2;
8085
+ _context35.next = 2;
7923
8086
  break;
7924
8087
  }
7925
8088
  throw new _webexErrors.UserNotJoinedError();
7926
8089
  case 2:
7927
- localStreams = options.localStreams, _options$audioEnabled = options.audioEnabled, audioEnabled = _options$audioEnabled === void 0 ? true : _options$audioEnabled, _options$videoEnabled = options.videoEnabled, videoEnabled = _options$videoEnabled === void 0 ? true : _options$videoEnabled, _options$shareAudioEn = options.shareAudioEnabled, shareAudioEnabled = _options$shareAudioEn === void 0 ? true : _options$shareAudioEn, _options$shareVideoEn = options.shareVideoEnabled, shareVideoEnabled = _options$shareVideoEn === void 0 ? true : _options$shareVideoEn, remoteMediaManagerConfig = options.remoteMediaManagerConfig, _options$bundlePolicy = options.bundlePolicy, bundlePolicy = _options$bundlePolicy === void 0 ? 'max-bundle' : _options$bundlePolicy, _options$additionalMe = options.additionalMediaOptions, additionalMediaOptions = _options$additionalMe === void 0 ? {} : _options$additionalMe;
8090
+ localStreams = options.localStreams, _options$audioEnabled = options.audioEnabled, audioEnabled = _options$audioEnabled === void 0 ? true : _options$audioEnabled, _options$videoEnabled = options.videoEnabled, videoEnabled = _options$videoEnabled === void 0 ? true : _options$videoEnabled, _options$shareAudioEn = options.shareAudioEnabled, shareAudioEnabled = _options$shareAudioEn === void 0 ? true : _options$shareAudioEn, _options$shareVideoEn = options.shareVideoEnabled, shareVideoEnabled = _options$shareVideoEn === void 0 ? true : _options$shareVideoEn, remoteMediaManagerConfig = options.remoteMediaManagerConfig, _options$bundlePolicy = options.bundlePolicy, bundlePolicy = _options$bundlePolicy === void 0 ? 'max-bundle' : _options$bundlePolicy, _options$additionalMe = options.additionalMediaOptions, additionalMediaOptions = _options$additionalMe === void 0 ? {} : _options$additionalMe, _options$allowPublish = options.allowPublishMediaInLobby, allowPublishMediaInLobby = _options$allowPublish === void 0 ? false : _options$allowPublish;
7928
8091
  rawSendVideo = additionalMediaOptions.sendVideo, rawReceiveVideo = additionalMediaOptions.receiveVideo, rawSendAudio = additionalMediaOptions.sendAudio, rawReceiveAudio = additionalMediaOptions.receiveAudio;
7929
8092
  sendVideo = videoEnabled && (rawSendVideo !== null && rawSendVideo !== void 0 ? rawSendVideo : true);
7930
8093
  receiveVideo = videoEnabled && (rawReceiveVideo !== null && rawReceiveVideo !== void 0 ? rawReceiveVideo : true);
@@ -7935,9 +8098,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7935
8098
  // @ts-ignore
7936
8099
  ipver = _util2.default.getIpVersion(this.webex); // used just for metrics
7937
8100
  // If the user is unjoined or guest waiting in lobby dont allow the user to addMedia
7938
- // @ts-ignore - isUserUnadmitted coming from SelfUtil
7939
8101
  if (!(this.isUserUnadmitted && !this.wirelessShare && !this.allowMediaInLobby)) {
7940
- _context33.next = 3;
8102
+ _context35.next = 3;
7941
8103
  break;
7942
8104
  }
7943
8105
  throw new _webexErrors.UserInLobbyError();
@@ -7981,58 +8143,62 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7981
8143
  this.audio = (0, _muteState.createMuteState)(_constants.AUDIO, this, audioEnabled);
7982
8144
  this.video = (0, _muteState.createMuteState)(_constants.VIDEO, this, videoEnabled);
7983
8145
  this.brbState = (0, _brbState.createBrbState)(this, false);
7984
- _context33.prev = 4;
7985
- _context33.next = 5;
8146
+ _context35.prev = 4;
8147
+ if (!(allowPublishMediaInLobby || !this.isUserUnadmitted)) {
8148
+ _context35.next = 5;
8149
+ break;
8150
+ }
8151
+ _context35.next = 5;
7986
8152
  return this.setUpLocalStreamReferences(localStreams);
7987
8153
  case 5:
7988
8154
  this.setMercuryListener();
7989
8155
  this.createStatsAnalyzer();
7990
- _context33.prev = 6;
7991
- _context33.next = 7;
8156
+ _context35.prev = 6;
8157
+ _context35.next = 7;
7992
8158
  return this.establishMediaConnection(remoteMediaManagerConfig, bundlePolicy, forceTurnDiscovery, turnServerInfo);
7993
8159
  case 7:
7994
- _context33.next = 12;
8160
+ _context35.next = 12;
7995
8161
  break;
7996
8162
  case 8:
7997
- _context33.prev = 8;
7998
- _t32 = _context33["catch"](6);
7999
- if (!(_t32 instanceof _multistreamNotSupportedError.default)) {
8000
- _context33.next = 11;
8163
+ _context35.prev = 8;
8164
+ _t33 = _context35["catch"](6);
8165
+ if (!(_t33 instanceof _multistreamNotSupportedError.default)) {
8166
+ _context35.next = 11;
8001
8167
  break;
8002
8168
  }
8003
8169
  _loggerProxy.default.logger.warn("".concat(LOG_HEADER, " we asked for multistream backend (Homer), but got transcoded backend, recreating media connection..."));
8004
- _context33.next = 9;
8170
+ _context35.next = 9;
8005
8171
  return this.downgradeFromMultistreamToTranscoded();
8006
8172
  case 9:
8007
- _context33.next = 10;
8173
+ _context35.next = 10;
8008
8174
  return this.establishMediaConnection(remoteMediaManagerConfig, bundlePolicy, true, undefined);
8009
8175
  case 10:
8010
- _context33.next = 12;
8176
+ _context35.next = 12;
8011
8177
  break;
8012
8178
  case 11:
8013
- throw _t32;
8179
+ throw _t33;
8014
8180
  case 12:
8015
8181
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " media connected, finalizing..."));
8016
8182
  if (!this.mediaProperties.hasLocalShareStream()) {
8017
- _context33.next = 13;
8183
+ _context35.next = 13;
8018
8184
  break;
8019
8185
  }
8020
- _context33.next = 13;
8186
+ _context35.next = 13;
8021
8187
  return this.enqueueScreenShareFloorRequest();
8022
8188
  case 13:
8023
- _context33.next = 14;
8189
+ _context35.next = 14;
8024
8190
  return this.mediaProperties.getCurrentConnectionInfo();
8025
8191
  case 14:
8026
- _yield$this$mediaProp = _context33.sent;
8192
+ _yield$this$mediaProp = _context35.sent;
8027
8193
  connectionType = _yield$this$mediaProp.connectionType;
8028
8194
  ipVersion = _yield$this$mediaProp.ipVersion;
8029
8195
  selectedCandidatePairChanges = _yield$this$mediaProp.selectedCandidatePairChanges;
8030
8196
  numTransports = _yield$this$mediaProp.numTransports;
8031
8197
  iceCandidateErrors = Object.fromEntries(this.iceCandidateErrors);
8032
- _context33.next = 15;
8198
+ _context35.next = 15;
8033
8199
  return this.getMediaReachabilityMetricFields();
8034
8200
  case 15:
8035
- reachabilityMetrics = _context33.sent;
8201
+ reachabilityMetrics = _context35.sent;
8036
8202
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_MEDIA_SUCCESS, _objectSpread(_objectSpread(_objectSpread({
8037
8203
  correlation_id: this.correlationId,
8038
8204
  locus_id: this.locusUrl.split('/').pop(),
@@ -8062,31 +8228,31 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8062
8228
  // We can log ReceiveSlot SSRCs only after the SDP exchange, so doing it here:
8063
8229
  (_this$remoteMediaMana = this.remoteMediaManager) === null || _this$remoteMediaMana === void 0 ? void 0 : _this$remoteMediaMana.logAllReceiveSlots();
8064
8230
  this.startPeriodicLogUpload();
8065
- _context33.next = 20;
8231
+ _context35.next = 20;
8066
8232
  break;
8067
8233
  case 16:
8068
- _context33.prev = 16;
8069
- _t33 = _context33["catch"](4);
8070
- _loggerProxy.default.logger.error("".concat(LOG_HEADER, " failed to establish media connection: "), _t33);
8234
+ _context35.prev = 16;
8235
+ _t34 = _context35["catch"](4);
8236
+ _loggerProxy.default.logger.error("".concat(LOG_HEADER, " failed to establish media connection: "), _t34);
8071
8237
 
8072
8238
  // @ts-ignore
8073
- _context33.next = 17;
8239
+ _context35.next = 17;
8074
8240
  return this.getMediaReachabilityMetricFields();
8075
8241
  case 17:
8076
- _reachabilityMetrics = _context33.sent;
8077
- _context33.next = 18;
8242
+ _reachabilityMetrics = _context35.sent;
8243
+ _context35.next = 18;
8078
8244
  return this.mediaProperties.getCurrentConnectionInfo();
8079
8245
  case 18:
8080
- _yield$this$mediaProp2 = _context33.sent;
8246
+ _yield$this$mediaProp2 = _context35.sent;
8081
8247
  _selectedCandidatePairChanges = _yield$this$mediaProp2.selectedCandidatePairChanges;
8082
8248
  _numTransports = _yield$this$mediaProp2.numTransports;
8083
8249
  _iceCandidateErrors = Object.fromEntries(this.iceCandidateErrors);
8084
8250
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_MEDIA_FAILURE, _objectSpread(_objectSpread(_objectSpread({
8085
8251
  correlation_id: this.correlationId,
8086
8252
  locus_id: this.locusUrl.split('/').pop(),
8087
- reason: _t33.message,
8088
- stack: _t33.stack,
8089
- code: _t33.code,
8253
+ reason: _t34.message,
8254
+ stack: _t34.stack,
8255
+ code: _t34.code,
8090
8256
  selectedCandidatePairChanges: _selectedCandidatePairChanges,
8091
8257
  numTransports: _numTransports,
8092
8258
  turnDiscoverySkippedReason: this.turnDiscoverySkippedReason,
@@ -8094,14 +8260,14 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8094
8260
  retriedWithTurnServer: this.addMediaData.retriedWithTurnServer,
8095
8261
  isMultistream: this.isMultistream,
8096
8262
  isJoinWithMediaRetry: this.joinWithMediaRetryInfo.isRetry,
8097
- signalingState: ((_this$mediaProperties13 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties13 === void 0 ? void 0 : (_this$mediaProperties14 = _this$mediaProperties13.multistreamConnection) === null || _this$mediaProperties14 === void 0 ? void 0 : (_this$mediaProperties15 = _this$mediaProperties14.pc) === null || _this$mediaProperties15 === void 0 ? void 0 : (_this$mediaProperties16 = _this$mediaProperties15.pc) === null || _this$mediaProperties16 === void 0 ? void 0 : _this$mediaProperties16.signalingState) || ((_this$mediaProperties17 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties17 === void 0 ? void 0 : (_this$mediaProperties18 = _this$mediaProperties17.mediaConnection) === null || _this$mediaProperties18 === void 0 ? void 0 : (_this$mediaProperties19 = _this$mediaProperties18.pc) === null || _this$mediaProperties19 === void 0 ? void 0 : _this$mediaProperties19.signalingState) || 'unknown',
8098
- connectionState: ((_this$mediaProperties20 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties20 === void 0 ? void 0 : (_this$mediaProperties21 = _this$mediaProperties20.multistreamConnection) === null || _this$mediaProperties21 === void 0 ? void 0 : (_this$mediaProperties22 = _this$mediaProperties21.pc) === null || _this$mediaProperties22 === void 0 ? void 0 : (_this$mediaProperties23 = _this$mediaProperties22.pc) === null || _this$mediaProperties23 === void 0 ? void 0 : _this$mediaProperties23.connectionState) || ((_this$mediaProperties24 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties24 === void 0 ? void 0 : (_this$mediaProperties25 = _this$mediaProperties24.mediaConnection) === null || _this$mediaProperties25 === void 0 ? void 0 : (_this$mediaProperties26 = _this$mediaProperties25.pc) === null || _this$mediaProperties26 === void 0 ? void 0 : _this$mediaProperties26.connectionState) || 'unknown',
8099
- iceConnectionState: ((_this$mediaProperties27 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties27 === void 0 ? void 0 : (_this$mediaProperties28 = _this$mediaProperties27.multistreamConnection) === null || _this$mediaProperties28 === void 0 ? void 0 : (_this$mediaProperties29 = _this$mediaProperties28.pc) === null || _this$mediaProperties29 === void 0 ? void 0 : (_this$mediaProperties30 = _this$mediaProperties29.pc) === null || _this$mediaProperties30 === void 0 ? void 0 : _this$mediaProperties30.iceConnectionState) || ((_this$mediaProperties31 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties31 === void 0 ? void 0 : (_this$mediaProperties32 = _this$mediaProperties31.mediaConnection) === null || _this$mediaProperties32 === void 0 ? void 0 : (_this$mediaProperties33 = _this$mediaProperties32.pc) === null || _this$mediaProperties33 === void 0 ? void 0 : _this$mediaProperties33.iceConnectionState) || 'unknown'
8263
+ 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',
8264
+ 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',
8265
+ iceConnectionState: ((_this$mediaProperties28 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties28 === void 0 ? void 0 : (_this$mediaProperties29 = _this$mediaProperties28.multistreamConnection) === null || _this$mediaProperties29 === void 0 ? void 0 : (_this$mediaProperties30 = _this$mediaProperties29.pc) === null || _this$mediaProperties30 === void 0 ? void 0 : (_this$mediaProperties31 = _this$mediaProperties30.pc) === null || _this$mediaProperties31 === void 0 ? void 0 : _this$mediaProperties31.iceConnectionState) || ((_this$mediaProperties32 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties32 === void 0 ? void 0 : (_this$mediaProperties33 = _this$mediaProperties32.mediaConnection) === null || _this$mediaProperties33 === void 0 ? void 0 : (_this$mediaProperties34 = _this$mediaProperties33.pc) === null || _this$mediaProperties34 === void 0 ? void 0 : _this$mediaProperties34.iceConnectionState) || 'unknown'
8100
8266
  }, _reachabilityMetrics), _iceCandidateErrors), {}, {
8101
8267
  iceCandidatesCount: this.iceCandidatesCount,
8102
8268
  ipver: ipver
8103
8269
  }));
8104
- _context33.next = 19;
8270
+ _context35.next = 19;
8105
8271
  return this.cleanUpOnAddMediaFailure();
8106
8272
  case 19:
8107
8273
  // Upload logs on error while adding media
@@ -8109,21 +8275,21 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8109
8275
  file: 'meeting/index',
8110
8276
  function: 'addMedia'
8111
8277
  }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, this);
8112
- if (_t33 instanceof _internalMediaCore.Errors.SdpError) {
8278
+ if (_t34 instanceof _internalMediaCore.Errors.SdpError) {
8113
8279
  this.leave({
8114
8280
  reason: _constants.MEETING_REMOVED_REASON.MEETING_CONNECTION_FAILED
8115
8281
  });
8116
8282
  }
8117
- throw _t33;
8283
+ throw _t34;
8118
8284
  case 20:
8119
- _context33.prev = 20;
8285
+ _context35.prev = 20;
8120
8286
  this.addMediaData.icePhaseCallback = DEFAULT_ICE_PHASE_CALLBACK;
8121
- return _context33.finish(20);
8287
+ return _context35.finish(20);
8122
8288
  case 21:
8123
8289
  case "end":
8124
- return _context33.stop();
8290
+ return _context35.stop();
8125
8291
  }
8126
- }, _callee33, this, [[4, 16, 20, 21], [6, 8]]);
8292
+ }, _callee35, this, [[4, 16, 20, 21], [6, 8]]);
8127
8293
  }));
8128
8294
  function addMediaInternal(_x31, _x32, _x33) {
8129
8295
  return _addMediaInternal.apply(this, arguments);
@@ -8191,35 +8357,35 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8191
8357
  * @memberof Meeting
8192
8358
  */
8193
8359
  function () {
8194
- var _updateMedia = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee34(options) {
8360
+ var _updateMedia = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee36(options) {
8195
8361
  var audioEnabled, videoEnabled, shareAudioEnabled, shareVideoEnabled, _this$audio3, _this$video3;
8196
- return _regenerator.default.wrap(function (_context34) {
8197
- while (1) switch (_context34.prev = _context34.next) {
8362
+ return _regenerator.default.wrap(function (_context36) {
8363
+ while (1) switch (_context36.prev = _context36.next) {
8198
8364
  case 0:
8199
8365
  this.checkMediaConnection();
8200
8366
  audioEnabled = options.audioEnabled, videoEnabled = options.videoEnabled, shareAudioEnabled = options.shareAudioEnabled, shareVideoEnabled = options.shareVideoEnabled;
8201
8367
  _loggerProxy.default.logger.log("Meeting:index#updateMedia --> called with options=".concat((0, _stringify.default)(options)));
8202
8368
  if (this.canUpdateMedia()) {
8203
- _context34.next = 1;
8369
+ _context36.next = 1;
8204
8370
  break;
8205
8371
  }
8206
- return _context34.abrupt("return", this.enqueueMediaUpdate(MEDIA_UPDATE_TYPE.UPDATE_MEDIA, options));
8372
+ return _context36.abrupt("return", this.enqueueMediaUpdate(MEDIA_UPDATE_TYPE.UPDATE_MEDIA, options));
8207
8373
  case 1:
8208
8374
  if (!this.isMultistream) {
8209
- _context34.next = 3;
8375
+ _context36.next = 3;
8210
8376
  break;
8211
8377
  }
8212
8378
  if (!(shareAudioEnabled !== undefined || shareVideoEnabled !== undefined)) {
8213
- _context34.next = 2;
8379
+ _context36.next = 2;
8214
8380
  break;
8215
8381
  }
8216
8382
  throw new Error('toggling shareAudioEnabled or shareVideoEnabled in a multistream meeting is not supported, to control receiving screen share call meeting.remoteMediaManager.setLayout() with appropriate layout');
8217
8383
  case 2:
8218
- _context34.next = 4;
8384
+ _context36.next = 4;
8219
8385
  break;
8220
8386
  case 3:
8221
8387
  if (!(shareAudioEnabled !== undefined)) {
8222
- _context34.next = 4;
8388
+ _context36.next = 4;
8223
8389
  break;
8224
8390
  }
8225
8391
  throw new Error('toggling shareAudioEnabled in a transcoded meeting is not supported as of now');
@@ -8244,18 +8410,18 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8244
8410
  this.mediaProperties.mediaDirection.receiveShare = !!(shareAudioEnabled || shareVideoEnabled);
8245
8411
  }
8246
8412
  if (this.isMultistream) {
8247
- _context34.next = 5;
8413
+ _context36.next = 5;
8248
8414
  break;
8249
8415
  }
8250
- _context34.next = 5;
8416
+ _context36.next = 5;
8251
8417
  return this.updateTranscodedMediaConnection();
8252
8418
  case 5:
8253
- return _context34.abrupt("return", undefined);
8419
+ return _context36.abrupt("return", undefined);
8254
8420
  case 6:
8255
8421
  case "end":
8256
- return _context34.stop();
8422
+ return _context36.stop();
8257
8423
  }
8258
- }, _callee34, this);
8424
+ }, _callee36, this);
8259
8425
  }));
8260
8426
  function updateMedia(_x34) {
8261
8427
  return _updateMedia.apply(this, arguments);
@@ -8397,32 +8563,46 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8397
8563
  );
8398
8564
  };
8399
8565
  _loggerProxy.default.logger.log('Meeting:index#leave --> Leaving a meeting');
8400
- return _util2.default.leaveMeeting(this, options).then(function (leave) {
8401
- // CA team recommends submitting this *after* locus /leave
8402
- submitLeaveMetric();
8403
- _this49.meetingFiniteStateMachine.leave();
8404
- _this49.clearMeetingData();
8405
-
8406
- // upload logs on leave irrespective of meeting delete
8407
- _triggerProxy.default.trigger(_this49, {
8408
- file: 'meeting/index',
8409
- function: 'leave'
8410
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this49);
8566
+ return _util2.default.leaveMeeting(this, options).then(/*#__PURE__*/function () {
8567
+ var _ref42 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee37(leave) {
8568
+ return _regenerator.default.wrap(function (_context37) {
8569
+ while (1) switch (_context37.prev = _context37.next) {
8570
+ case 0:
8571
+ // CA team recommends submitting this *after* locus /leave
8572
+ submitLeaveMetric();
8573
+ _this49.meetingFiniteStateMachine.leave();
8574
+ _context37.next = 1;
8575
+ return _this49.clearMeetingData();
8576
+ case 1:
8577
+ // upload logs on leave irrespective of meeting delete
8578
+ _triggerProxy.default.trigger(_this49, {
8579
+ file: 'meeting/index',
8580
+ function: 'leave'
8581
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this49);
8411
8582
 
8412
- // TODO: more testing before we remove this code, we are not sure the scenarios for destroy here
8413
- if (_this49.wirelessShare || _this49.guest) {
8414
- // If screen sharing clean the meeting object
8415
- _triggerProxy.default.trigger(_this49, {
8416
- file: 'meeting/index',
8417
- function: 'leave'
8418
- }, _constants.EVENTS.DESTROY_MEETING, {
8419
- reason: options.reason,
8420
- meetingId: _this49.id
8421
- });
8422
- }
8423
- _loggerProxy.default.logger.log('Meeting:index#leave --> LEAVE REASON ', leaveReason);
8424
- return leave;
8425
- }).catch(function (error) {
8583
+ // TODO: more testing before we remove this code, we are not sure the scenarios for destroy here
8584
+ if (_this49.wirelessShare || _this49.guest) {
8585
+ // If screen sharing clean the meeting object
8586
+ _triggerProxy.default.trigger(_this49, {
8587
+ file: 'meeting/index',
8588
+ function: 'leave'
8589
+ }, _constants.EVENTS.DESTROY_MEETING, {
8590
+ reason: options.reason,
8591
+ meetingId: _this49.id
8592
+ });
8593
+ }
8594
+ _loggerProxy.default.logger.log('Meeting:index#leave --> LEAVE REASON ', leaveReason);
8595
+ return _context37.abrupt("return", leave);
8596
+ case 2:
8597
+ case "end":
8598
+ return _context37.stop();
8599
+ }
8600
+ }, _callee37);
8601
+ }));
8602
+ return function (_x35) {
8603
+ return _ref42.apply(this, arguments);
8604
+ };
8605
+ }()).catch(function (error) {
8426
8606
  // CA team recommends submitting this *after* locus /leave
8427
8607
  submitLeaveMetric({
8428
8608
  errors: [{
@@ -8901,10 +9081,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8901
9081
  var renderInfo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
8902
9082
  var main = renderInfo.main,
8903
9083
  content = renderInfo.content;
8904
- var _this$mediaProperties34 = this.mediaProperties,
8905
- mediaDirection = _this$mediaProperties34.mediaDirection,
8906
- remoteShareStream = _this$mediaProperties34.remoteShareStream,
8907
- remoteVideoStream = _this$mediaProperties34.remoteVideoStream;
9084
+ var _this$mediaProperties35 = this.mediaProperties,
9085
+ mediaDirection = _this$mediaProperties35.mediaDirection,
9086
+ remoteShareStream = _this$mediaProperties35.remoteShareStream,
9087
+ remoteVideoStream = _this$mediaProperties35.remoteVideoStream;
8908
9088
  var layoutInfo = (0, _lodash.cloneDeep)(this.lastVideoLayoutInfo);
8909
9089
 
8910
9090
  // TODO: We need a real time value for Audio, Video and Share send indicator
@@ -9084,16 +9264,31 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9084
9264
  correlation_id: this.correlationId,
9085
9265
  locus_id: this.locusId
9086
9266
  });
9087
- return _util2.default.endMeetingForAll(this).then(function (end) {
9088
- _this56.meetingFiniteStateMachine.end();
9089
- _this56.clearMeetingData();
9090
- // upload logs on leave irrespective of meeting delete
9091
- _triggerProxy.default.trigger(_this56, {
9092
- file: 'meeting/index',
9093
- function: 'endMeetingForAll'
9094
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this56);
9095
- return end;
9096
- }).catch(function (error) {
9267
+ return _util2.default.endMeetingForAll(this).then(/*#__PURE__*/function () {
9268
+ var _ref43 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee38(end) {
9269
+ return _regenerator.default.wrap(function (_context38) {
9270
+ while (1) switch (_context38.prev = _context38.next) {
9271
+ case 0:
9272
+ _this56.meetingFiniteStateMachine.end();
9273
+ _context38.next = 1;
9274
+ return _this56.clearMeetingData();
9275
+ case 1:
9276
+ // upload logs on leave irrespective of meeting delete
9277
+ _triggerProxy.default.trigger(_this56, {
9278
+ file: 'meeting/index',
9279
+ function: 'endMeetingForAll'
9280
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this56);
9281
+ return _context38.abrupt("return", end);
9282
+ case 2:
9283
+ case "end":
9284
+ return _context38.stop();
9285
+ }
9286
+ }, _callee38);
9287
+ }));
9288
+ return function (_x36) {
9289
+ return _ref43.apply(this, arguments);
9290
+ };
9291
+ }()).catch(function (error) {
9097
9292
  _this56.meetingFiniteStateMachine.fail(error);
9098
9293
  _loggerProxy.default.logger.error('Meeting:index#endMeetingForAll --> Failed to end meeting ', error);
9099
9294
  // upload logs on leave irrespective of meeting delete
@@ -9155,12 +9350,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9155
9350
  */
9156
9351
  }, {
9157
9352
  key: "extendMeeting",
9158
- value: function extendMeeting(_ref37) {
9159
- var meetingPolicyUrl = _ref37.meetingPolicyUrl,
9160
- meetingInstanceId = _ref37.meetingInstanceId,
9161
- participantId = _ref37.participantId,
9162
- _ref37$extensionMinut = _ref37.extensionMinutes,
9163
- extensionMinutes = _ref37$extensionMinut === void 0 ? 30 : _ref37$extensionMinut;
9353
+ value: function extendMeeting(_ref44) {
9354
+ var meetingPolicyUrl = _ref44.meetingPolicyUrl,
9355
+ meetingInstanceId = _ref44.meetingInstanceId,
9356
+ participantId = _ref44.participantId,
9357
+ _ref44$extensionMinut = _ref44.extensionMinutes,
9358
+ extensionMinutes = _ref44$extensionMinut === void 0 ? 30 : _ref44$extensionMinut;
9164
9359
  if (!meetingInstanceId || !participantId) {
9165
9360
  return _promise.default.reject(new Error('Missing meetingInstanceId or participantId'));
9166
9361
  }
@@ -9225,8 +9420,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9225
9420
  }, {
9226
9421
  key: "checkMediaConnection",
9227
9422
  value: function checkMediaConnection() {
9228
- var _this$mediaProperties35;
9229
- if ((_this$mediaProperties35 = this.mediaProperties) !== null && _this$mediaProperties35 !== void 0 && _this$mediaProperties35.webrtcMediaConnection) {
9423
+ var _this$mediaProperties36;
9424
+ if ((_this$mediaProperties36 = this.mediaProperties) !== null && _this$mediaProperties36 !== void 0 && _this$mediaProperties36.webrtcMediaConnection) {
9230
9425
  return;
9231
9426
  }
9232
9427
  throw new _webexErrors.NoMediaEstablishedYetError();
@@ -9241,39 +9436,39 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9241
9436
  }, {
9242
9437
  key: "enableMusicMode",
9243
9438
  value: (function () {
9244
- var _enableMusicMode = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee35(shouldEnableMusicMode) {
9245
- return _regenerator.default.wrap(function (_context35) {
9246
- while (1) switch (_context35.prev = _context35.next) {
9439
+ var _enableMusicMode = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee39(shouldEnableMusicMode) {
9440
+ return _regenerator.default.wrap(function (_context39) {
9441
+ while (1) switch (_context39.prev = _context39.next) {
9247
9442
  case 0:
9248
9443
  this.checkMediaConnection();
9249
9444
  if (this.isMultistream) {
9250
- _context35.next = 1;
9445
+ _context39.next = 1;
9251
9446
  break;
9252
9447
  }
9253
9448
  throw new Error('enableMusicMode() only supported with multistream');
9254
9449
  case 1:
9255
9450
  if (!shouldEnableMusicMode) {
9256
- _context35.next = 3;
9451
+ _context39.next = 3;
9257
9452
  break;
9258
9453
  }
9259
- _context35.next = 2;
9454
+ _context39.next = 2;
9260
9455
  return this.sendSlotManager.setCodecParameters(_internalMediaCore.MediaType.AudioMain, {
9261
9456
  maxaveragebitrate: '64000',
9262
9457
  maxplaybackrate: '48000'
9263
9458
  });
9264
9459
  case 2:
9265
- _context35.next = 4;
9460
+ _context39.next = 4;
9266
9461
  break;
9267
9462
  case 3:
9268
- _context35.next = 4;
9463
+ _context39.next = 4;
9269
9464
  return this.sendSlotManager.deleteCodecParameters(_internalMediaCore.MediaType.AudioMain, ['maxaveragebitrate', 'maxplaybackrate']);
9270
9465
  case 4:
9271
9466
  case "end":
9272
- return _context35.stop();
9467
+ return _context39.stop();
9273
9468
  }
9274
- }, _callee35, this);
9469
+ }, _callee39, this);
9275
9470
  }));
9276
- function enableMusicMode(_x35) {
9471
+ function enableMusicMode(_x37) {
9277
9472
  return _enableMusicMode.apply(this, arguments);
9278
9473
  }
9279
9474
  return enableMusicMode;
@@ -9286,14 +9481,14 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9286
9481
  }, {
9287
9482
  key: "updateTranscodedMediaConnection",
9288
9483
  value: function updateTranscodedMediaConnection() {
9289
- var _this$mediaProperties36,
9290
- _this$mediaProperties37,
9484
+ var _this$mediaProperties37,
9291
9485
  _this$mediaProperties38,
9292
9486
  _this$mediaProperties39,
9293
9487
  _this$mediaProperties40,
9294
9488
  _this$mediaProperties41,
9295
9489
  _this$mediaProperties42,
9296
9490
  _this$mediaProperties43,
9491
+ _this$mediaProperties44,
9297
9492
  _this57 = this;
9298
9493
  var LOG_HEADER = 'Meeting:index#updateTranscodedMediaConnection -->';
9299
9494
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " starting"));
@@ -9303,10 +9498,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9303
9498
  return this.mediaProperties.webrtcMediaConnection.update({
9304
9499
  // TODO: RoapMediaConnection is not ready to use stream classes yet, so we pass the raw MediaStreamTrack for now
9305
9500
  localTracks: {
9306
- audio: ((_this$mediaProperties36 = this.mediaProperties.audioStream) === null || _this$mediaProperties36 === void 0 ? void 0 : (_this$mediaProperties37 = _this$mediaProperties36.outputStream) === null || _this$mediaProperties37 === void 0 ? void 0 : _this$mediaProperties37.getTracks()[0]) || null,
9307
- video: ((_this$mediaProperties38 = this.mediaProperties.videoStream) === null || _this$mediaProperties38 === void 0 ? void 0 : (_this$mediaProperties39 = _this$mediaProperties38.outputStream) === null || _this$mediaProperties39 === void 0 ? void 0 : _this$mediaProperties39.getTracks()[0]) || null,
9308
- screenShareVideo: ((_this$mediaProperties40 = this.mediaProperties.shareVideoStream) === null || _this$mediaProperties40 === void 0 ? void 0 : (_this$mediaProperties41 = _this$mediaProperties40.outputStream) === null || _this$mediaProperties41 === void 0 ? void 0 : _this$mediaProperties41.getTracks()[0]) || null,
9309
- screenShareAudio: ((_this$mediaProperties42 = this.mediaProperties.shareAudioStream) === null || _this$mediaProperties42 === void 0 ? void 0 : (_this$mediaProperties43 = _this$mediaProperties42.outputStream) === null || _this$mediaProperties43 === void 0 ? void 0 : _this$mediaProperties43.getTracks()[0]) || null
9501
+ 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,
9502
+ 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,
9503
+ 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,
9504
+ screenShareAudio: ((_this$mediaProperties43 = this.mediaProperties.shareAudioStream) === null || _this$mediaProperties43 === void 0 ? void 0 : (_this$mediaProperties44 = _this$mediaProperties43.outputStream) === null || _this$mediaProperties44 === void 0 ? void 0 : _this$mediaProperties44.getTracks()[0]) || null
9310
9505
  },
9311
9506
  direction: {
9312
9507
  audio: _media.default.getDirection(true, this.mediaProperties.mediaDirection.receiveAudio, this.mediaProperties.mediaDirection.sendAudio),
@@ -9364,25 +9559,25 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9364
9559
  }, {
9365
9560
  key: "publishStream",
9366
9561
  value: (function () {
9367
- var _publishStream = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee36(mediaType, stream) {
9368
- return _regenerator.default.wrap(function (_context36) {
9369
- while (1) switch (_context36.prev = _context36.next) {
9562
+ var _publishStream = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee40(mediaType, stream) {
9563
+ return _regenerator.default.wrap(function (_context40) {
9564
+ while (1) switch (_context40.prev = _context40.next) {
9370
9565
  case 0:
9371
9566
  if (stream) {
9372
- _context36.next = 1;
9567
+ _context40.next = 1;
9373
9568
  break;
9374
9569
  }
9375
- return _context36.abrupt("return");
9570
+ return _context40.abrupt("return");
9376
9571
  case 1:
9377
9572
  if (!this.mediaProperties.webrtcMediaConnection) {
9378
- _context36.next = 3;
9573
+ _context40.next = 3;
9379
9574
  break;
9380
9575
  }
9381
9576
  if (!(this.isMultistream && this.mediaProperties.webrtcMediaConnection)) {
9382
- _context36.next = 2;
9577
+ _context40.next = 2;
9383
9578
  break;
9384
9579
  }
9385
- _context36.next = 2;
9580
+ _context40.next = 2;
9386
9581
  return this.sendSlotManager.publishStream(mediaType, stream);
9387
9582
  case 2:
9388
9583
  this.emitPublishStateChangeEvent({
@@ -9393,11 +9588,11 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9393
9588
  });
9394
9589
  case 3:
9395
9590
  case "end":
9396
- return _context36.stop();
9591
+ return _context40.stop();
9397
9592
  }
9398
- }, _callee36, this);
9593
+ }, _callee40, this);
9399
9594
  }));
9400
- function publishStream(_x36, _x37) {
9595
+ function publishStream(_x38, _x39) {
9401
9596
  return _publishStream.apply(this, arguments);
9402
9597
  }
9403
9598
  return publishStream;
@@ -9413,21 +9608,21 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9413
9608
  }, {
9414
9609
  key: "unpublishStream",
9415
9610
  value: (function () {
9416
- var _unpublishStream = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee37(mediaType, stream) {
9417
- return _regenerator.default.wrap(function (_context37) {
9418
- while (1) switch (_context37.prev = _context37.next) {
9611
+ var _unpublishStream = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee41(mediaType, stream) {
9612
+ return _regenerator.default.wrap(function (_context41) {
9613
+ while (1) switch (_context41.prev = _context41.next) {
9419
9614
  case 0:
9420
9615
  if (stream) {
9421
- _context37.next = 1;
9616
+ _context41.next = 1;
9422
9617
  break;
9423
9618
  }
9424
- return _context37.abrupt("return");
9619
+ return _context41.abrupt("return");
9425
9620
  case 1:
9426
9621
  if (!(this.isMultistream && this.mediaProperties.webrtcMediaConnection)) {
9427
- _context37.next = 2;
9622
+ _context41.next = 2;
9428
9623
  break;
9429
9624
  }
9430
- _context37.next = 2;
9625
+ _context41.next = 2;
9431
9626
  return this.sendSlotManager.unpublishStream(mediaType);
9432
9627
  case 2:
9433
9628
  this.emitPublishStateChangeEvent({
@@ -9438,11 +9633,11 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9438
9633
  });
9439
9634
  case 3:
9440
9635
  case "end":
9441
- return _context37.stop();
9636
+ return _context41.stop();
9442
9637
  }
9443
- }, _callee37, this);
9638
+ }, _callee41, this);
9444
9639
  }));
9445
- function unpublishStream(_x38, _x39) {
9640
+ function unpublishStream(_x40, _x41) {
9446
9641
  return _unpublishStream.apply(this, arguments);
9447
9642
  }
9448
9643
  return unpublishStream;
@@ -9457,19 +9652,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9457
9652
  }, {
9458
9653
  key: "publishStreams",
9459
9654
  value: (function () {
9460
- var _publishStreams = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee38(streams) {
9655
+ var _publishStreams = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee42(streams) {
9461
9656
  var _streams$screenShare, _streams$screenShare2, _streams$screenShare3, _streams$screenShare4, _streams$screenShare5, _streams$screenShare6;
9462
9657
  var streamChecks, _i, _streamChecks, _streamChecks$_i, stream, name, floorRequestNeeded, _streams$screenShare7;
9463
- return _regenerator.default.wrap(function (_context38) {
9464
- while (1) switch (_context38.prev = _context38.next) {
9658
+ return _regenerator.default.wrap(function (_context42) {
9659
+ while (1) switch (_context42.prev = _context42.next) {
9465
9660
  case 0:
9466
9661
  _loggerProxy.default.logger.info("Meeting:index#publishStreams --> called with: ".concat((0, _stringify.default)(streams)));
9467
9662
  this.checkMediaConnection();
9468
9663
  if (!(!streams.microphone && !streams.camera && !((_streams$screenShare = streams.screenShare) !== null && _streams$screenShare !== void 0 && _streams$screenShare.audio) && !((_streams$screenShare2 = streams.screenShare) !== null && _streams$screenShare2 !== void 0 && _streams$screenShare2.video))) {
9469
- _context38.next = 1;
9664
+ _context42.next = 1;
9470
9665
  break;
9471
9666
  }
9472
- return _context38.abrupt("return");
9667
+ return _context42.abrupt("return");
9473
9668
  case 1:
9474
9669
  streamChecks = [{
9475
9670
  stream: streams === null || streams === void 0 ? void 0 : streams.microphone,
@@ -9487,62 +9682,62 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9487
9682
  _i = 0, _streamChecks = streamChecks;
9488
9683
  case 2:
9489
9684
  if (!(_i < _streamChecks.length)) {
9490
- _context38.next = 4;
9685
+ _context42.next = 4;
9491
9686
  break;
9492
9687
  }
9493
9688
  _streamChecks$_i = _streamChecks[_i], stream = _streamChecks$_i.stream, name = _streamChecks$_i.name;
9494
9689
  if (!((stream === null || stream === void 0 ? void 0 : stream.readyState) === 'ended')) {
9495
- _context38.next = 3;
9690
+ _context42.next = 3;
9496
9691
  break;
9497
9692
  }
9498
9693
  throw new Error("Attempted to publish ".concat(name, " stream with ended readyState, correlationId=").concat(this.correlationId));
9499
9694
  case 3:
9500
9695
  _i++;
9501
- _context38.next = 2;
9696
+ _context42.next = 2;
9502
9697
  break;
9503
9698
  case 4:
9504
9699
  floorRequestNeeded = false; // Screenshare Audio is supported only in multi stream. So we check for screenshare audio presence only if it's a multi stream meeting
9505
9700
  if (!(this.isMultistream && (_streams$screenShare5 = streams.screenShare) !== null && _streams$screenShare5 !== void 0 && _streams$screenShare5.audio)) {
9506
- _context38.next = 6;
9701
+ _context42.next = 6;
9507
9702
  break;
9508
9703
  }
9509
- _context38.next = 5;
9704
+ _context42.next = 5;
9510
9705
  return this.setLocalShareAudioStream(streams.screenShare.audio);
9511
9706
  case 5:
9512
9707
  floorRequestNeeded = this.screenShareFloorState === ScreenShareFloorStatus.RELEASED;
9513
9708
  case 6:
9514
9709
  if (!((_streams$screenShare6 = streams.screenShare) !== null && _streams$screenShare6 !== void 0 && _streams$screenShare6.video)) {
9515
- _context38.next = 8;
9710
+ _context42.next = 8;
9516
9711
  break;
9517
9712
  }
9518
- _context38.next = 7;
9713
+ _context42.next = 7;
9519
9714
  return this.setLocalShareVideoStream((_streams$screenShare7 = streams.screenShare) === null || _streams$screenShare7 === void 0 ? void 0 : _streams$screenShare7.video);
9520
9715
  case 7:
9521
9716
  floorRequestNeeded = this.screenShareFloorState === ScreenShareFloorStatus.RELEASED;
9522
9717
  case 8:
9523
9718
  if (!streams.microphone) {
9524
- _context38.next = 9;
9719
+ _context42.next = 9;
9525
9720
  break;
9526
9721
  }
9527
- _context38.next = 9;
9722
+ _context42.next = 9;
9528
9723
  return this.setLocalAudioStream(streams.microphone);
9529
9724
  case 9:
9530
9725
  if (!streams.camera) {
9531
- _context38.next = 10;
9726
+ _context42.next = 10;
9532
9727
  break;
9533
9728
  }
9534
- _context38.next = 10;
9729
+ _context42.next = 10;
9535
9730
  return this.setLocalVideoStream(streams.camera);
9536
9731
  case 10:
9537
9732
  if (this.isMultistream) {
9538
- _context38.next = 11;
9733
+ _context42.next = 11;
9539
9734
  break;
9540
9735
  }
9541
- _context38.next = 11;
9736
+ _context42.next = 11;
9542
9737
  return this.updateTranscodedMediaConnection();
9543
9738
  case 11:
9544
9739
  if (!floorRequestNeeded) {
9545
- _context38.next = 12;
9740
+ _context42.next = 12;
9546
9741
  break;
9547
9742
  }
9548
9743
  this.localShareInstanceId = _uuid.default.v4();
@@ -9573,15 +9768,15 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9573
9768
  // we're sending the http request to Locus to request the screen share floor
9574
9769
  // only after the SDP update, because that's how it's always been done for transcoded meetings
9575
9770
  // and also if sharing from the start, we need confluence to have been created
9576
- _context38.next = 12;
9771
+ _context42.next = 12;
9577
9772
  return this.enqueueScreenShareFloorRequest();
9578
9773
  case 12:
9579
9774
  case "end":
9580
- return _context38.stop();
9775
+ return _context42.stop();
9581
9776
  }
9582
- }, _callee38, this);
9777
+ }, _callee42, this);
9583
9778
  }));
9584
- function publishStreams(_x40) {
9779
+ function publishStreams(_x42) {
9585
9780
  return _publishStreams.apply(this, arguments);
9586
9781
  }
9587
9782
  return publishStreams;
@@ -9596,10 +9791,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9596
9791
  }, {
9597
9792
  key: "unpublishStreams",
9598
9793
  value: (function () {
9599
- var _unpublishStreams = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee39(streams) {
9794
+ var _unpublishStreams = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee43(streams) {
9600
9795
  var promises, _iterator, _step, stream;
9601
- return _regenerator.default.wrap(function (_context39) {
9602
- while (1) switch (_context39.prev = _context39.next) {
9796
+ return _regenerator.default.wrap(function (_context43) {
9797
+ while (1) switch (_context43.prev = _context43.next) {
9603
9798
  case 0:
9604
9799
  _loggerProxy.default.logger.info("Meeting:index#unpublishStreams --> called with: ".concat((0, _stringify.default)(streams)));
9605
9800
  this.checkMediaConnection();
@@ -9631,7 +9826,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9631
9826
  if (!this.isMultistream) {
9632
9827
  promises.push(this.updateTranscodedMediaConnection());
9633
9828
  }
9634
- _context39.next = 1;
9829
+ _context43.next = 1;
9635
9830
  return _promise.default.all(promises);
9636
9831
  case 1:
9637
9832
  // we're allowing for the SDK to support just audio share as well
@@ -9652,11 +9847,11 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9652
9847
  }
9653
9848
  case 2:
9654
9849
  case "end":
9655
- return _context39.stop();
9850
+ return _context43.stop();
9656
9851
  }
9657
- }, _callee39, this);
9852
+ }, _callee43, this);
9658
9853
  }));
9659
- function unpublishStreams(_x41) {
9854
+ function unpublishStreams(_x43) {
9660
9855
  return _unpublishStreams.apply(this, arguments);
9661
9856
  }
9662
9857
  return unpublishStreams;
@@ -9722,16 +9917,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9722
9917
  }, {
9723
9918
  key: "getMediaReachabilityMetricFields",
9724
9919
  value: (function () {
9725
- var _getMediaReachabilityMetricFields = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee40() {
9920
+ var _getMediaReachabilityMetricFields = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee44() {
9726
9921
  var _this$mediaServerIp, _this$mediaConnection, _this$mediaConnection2, _this$mediaConnection3;
9727
9922
  var reachabilityMetrics, successKeys, totalSuccessCases, selectedSubnetFirstOctet, isSubnetReachable, selectedCluster;
9728
- return _regenerator.default.wrap(function (_context40) {
9729
- while (1) switch (_context40.prev = _context40.next) {
9923
+ return _regenerator.default.wrap(function (_context44) {
9924
+ while (1) switch (_context44.prev = _context44.next) {
9730
9925
  case 0:
9731
- _context40.next = 1;
9926
+ _context44.next = 1;
9732
9927
  return this.webex.meetings.reachability.getReachabilityMetrics();
9733
9928
  case 1:
9734
- reachabilityMetrics = _context40.sent;
9929
+ reachabilityMetrics = _context44.sent;
9735
9930
  successKeys = ['reachability_public_udp_success', 'reachability_public_tcp_success', 'reachability_public_xtls_success', 'reachability_vmn_udp_success', 'reachability_vmn_tcp_success', 'reachability_vmn_xtls_success'];
9736
9931
  totalSuccessCases = successKeys.reduce(function (total, key) {
9737
9932
  var value = reachabilityMetrics[key];
@@ -9748,16 +9943,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9748
9943
  this.webex.meetings.reachability.isSubnetReachable(selectedSubnetFirstOctet);
9749
9944
  }
9750
9945
  selectedCluster = (_this$mediaConnection = (_this$mediaConnection2 = this.mediaConnections) === null || _this$mediaConnection2 === void 0 ? void 0 : (_this$mediaConnection3 = _this$mediaConnection2[0]) === null || _this$mediaConnection3 === void 0 ? void 0 : _this$mediaConnection3.mediaAgentCluster) !== null && _this$mediaConnection !== void 0 ? _this$mediaConnection : null;
9751
- return _context40.abrupt("return", _objectSpread(_objectSpread({}, reachabilityMetrics), {}, {
9946
+ return _context44.abrupt("return", _objectSpread(_objectSpread({}, reachabilityMetrics), {}, {
9752
9947
  subnet_reachable: isSubnetReachable,
9753
9948
  selected_cluster: selectedCluster,
9754
9949
  selected_subnet: selectedSubnetFirstOctet ? "".concat(selectedSubnetFirstOctet, ".X.X.X") : null
9755
9950
  }));
9756
9951
  case 2:
9757
9952
  case "end":
9758
- return _context40.stop();
9953
+ return _context44.stop();
9759
9954
  }
9760
- }, _callee40, this);
9955
+ }, _callee44, this);
9761
9956
  }));
9762
9957
  function getMediaReachabilityMetricFields() {
9763
9958
  return _getMediaReachabilityMetricFields.apply(this, arguments);
@@ -9774,17 +9969,17 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9774
9969
  }, {
9775
9970
  key: "setStage",
9776
9971
  value: function setStage() {
9777
- var _ref38 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
9778
- _ref38$activeSpeakerP = _ref38.activeSpeakerProportion,
9779
- activeSpeakerProportion = _ref38$activeSpeakerP === void 0 ? 0.5 : _ref38$activeSpeakerP,
9780
- customBackground = _ref38.customBackground,
9781
- customLogo = _ref38.customLogo,
9782
- customNameLabel = _ref38.customNameLabel,
9783
- importantParticipants = _ref38.importantParticipants,
9784
- _ref38$lockAttendeeVi = _ref38.lockAttendeeViewOnStage,
9785
- lockAttendeeViewOnStage = _ref38$lockAttendeeVi === void 0 ? false : _ref38$lockAttendeeVi,
9786
- _ref38$showActiveSpea = _ref38.showActiveSpeaker,
9787
- showActiveSpeaker = _ref38$showActiveSpea === void 0 ? false : _ref38$showActiveSpea;
9972
+ var _ref45 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
9973
+ _ref45$activeSpeakerP = _ref45.activeSpeakerProportion,
9974
+ activeSpeakerProportion = _ref45$activeSpeakerP === void 0 ? 0.5 : _ref45$activeSpeakerP,
9975
+ customBackground = _ref45.customBackground,
9976
+ customLogo = _ref45.customLogo,
9977
+ customNameLabel = _ref45.customNameLabel,
9978
+ importantParticipants = _ref45.importantParticipants,
9979
+ _ref45$lockAttendeeVi = _ref45.lockAttendeeViewOnStage,
9980
+ lockAttendeeViewOnStage = _ref45$lockAttendeeVi === void 0 ? false : _ref45$lockAttendeeVi,
9981
+ _ref45$showActiveSpea = _ref45.showActiveSpeaker,
9982
+ showActiveSpeaker = _ref45$showActiveSpea === void 0 ? false : _ref45$showActiveSpea;
9788
9983
  var videoLayout = {
9789
9984
  overrideDefault: true,
9790
9985
  lockAttendeeViewOnStageOnly: lockAttendeeViewOnStage,
@@ -9880,6 +10075,71 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9880
10075
  value: function cancelSipCallOut(participantId) {
9881
10076
  return this.meetingRequest.cancelSipCallOut(participantId);
9882
10077
  }
10078
+
10079
+ /**
10080
+ * Method to get new data
10081
+ * @returns {Promise}
10082
+ */
10083
+ }, {
10084
+ key: "refreshDataChannelToken",
10085
+ value: (function () {
10086
+ var _refreshDataChannelToken = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee45() {
10087
+ var isPracticeSession, dataChannelTokenType, res, msg, _t35;
10088
+ return _regenerator.default.wrap(function (_context45) {
10089
+ while (1) switch (_context45.prev = _context45.next) {
10090
+ case 0:
10091
+ isPracticeSession = this.webinar.isJoinPracticeSessionDataChannel();
10092
+ dataChannelTokenType = this.getDataChannelTokenType();
10093
+ _context45.prev = 1;
10094
+ _context45.next = 2;
10095
+ return this.meetingRequest.fetchDatachannelToken({
10096
+ locusUrl: this.locusUrl,
10097
+ requestingParticipantId: this.members.selfId,
10098
+ isPracticeSession: isPracticeSession
10099
+ });
10100
+ case 2:
10101
+ res = _context45.sent;
10102
+ return _context45.abrupt("return", {
10103
+ body: {
10104
+ datachannelToken: res.body.datachannelToken,
10105
+ dataChannelTokenType: dataChannelTokenType
10106
+ }
10107
+ });
10108
+ case 3:
10109
+ _context45.prev = 3;
10110
+ _t35 = _context45["catch"](1);
10111
+ msg = (_t35 === null || _t35 === void 0 ? void 0 : _t35.message) || String(_t35);
10112
+ _loggerProxy.default.logger.warn("Meeting:index#refreshDataChannelToken --> DataChannel token refresh failed (likely locus changed or participant left): ".concat(msg), {
10113
+ statusCode: _t35 === null || _t35 === void 0 ? void 0 : _t35.statusCode
10114
+ });
10115
+ return _context45.abrupt("return", null);
10116
+ case 4:
10117
+ case "end":
10118
+ return _context45.stop();
10119
+ }
10120
+ }, _callee45, this, [[1, 3]]);
10121
+ }));
10122
+ function refreshDataChannelToken() {
10123
+ return _refreshDataChannelToken.apply(this, arguments);
10124
+ }
10125
+ return refreshDataChannelToken;
10126
+ }()
10127
+ /**
10128
+ * Determines the current data channel token type based on the meeting state.
10129
+ *
10130
+ * variant should be used when connecting to the LLM data channel.
10131
+ *
10132
+ * @returns {DataChannelTokenType} The token type representing the current session mode.
10133
+ */
10134
+ )
10135
+ }, {
10136
+ key: "getDataChannelTokenType",
10137
+ value: function getDataChannelTokenType() {
10138
+ if (this.webinar.isJoinPracticeSessionDataChannel()) {
10139
+ return _internalPluginLlm.DataChannelTokenType.PracticeSession;
10140
+ }
10141
+ return _internalPluginLlm.DataChannelTokenType.Default;
10142
+ }
9883
10143
  }]);
9884
10144
  }(_webexCore.StatelessWebexPlugin);
9885
10145
  //# sourceMappingURL=index.js.map