@webex/plugin-meetings 3.11.0 → 3.12.0-next.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (170) hide show
  1. package/dist/aiEnableRequest/index.js +184 -0
  2. package/dist/aiEnableRequest/index.js.map +1 -0
  3. package/dist/aiEnableRequest/utils.js +36 -0
  4. package/dist/aiEnableRequest/utils.js.map +1 -0
  5. package/dist/annotation/index.js +14 -5
  6. package/dist/annotation/index.js.map +1 -1
  7. package/dist/breakouts/breakout.js +1 -1
  8. package/dist/breakouts/index.js +1 -1
  9. package/dist/config.js +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 +1173 -877
  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/reachability/index.js +18 -10
  69. package/dist/reachability/index.js.map +1 -1
  70. package/dist/reactions/reactions.type.js.map +1 -1
  71. package/dist/reconnection-manager/index.js +0 -1
  72. package/dist/reconnection-manager/index.js.map +1 -1
  73. package/dist/types/aiEnableRequest/index.d.ts +5 -0
  74. package/dist/types/aiEnableRequest/utils.d.ts +2 -0
  75. package/dist/types/config.d.ts +4 -0
  76. package/dist/types/constants.d.ts +23 -1
  77. package/dist/types/hashTree/constants.d.ts +1 -0
  78. package/dist/types/hashTree/hashTree.d.ts +7 -0
  79. package/dist/types/hashTree/hashTreeParser.d.ts +122 -14
  80. package/dist/types/hashTree/types.d.ts +3 -0
  81. package/dist/types/hashTree/utils.d.ts +6 -0
  82. package/dist/types/index.d.ts +1 -0
  83. package/dist/types/interceptors/constant.d.ts +5 -0
  84. package/dist/types/interceptors/dataChannelAuthToken.d.ts +43 -0
  85. package/dist/types/interceptors/index.d.ts +2 -1
  86. package/dist/types/interceptors/utils.d.ts +1 -0
  87. package/dist/types/locus-info/index.d.ts +60 -8
  88. package/dist/types/locus-info/types.d.ts +7 -0
  89. package/dist/types/media/MediaConnectionAwaiter.d.ts +10 -1
  90. package/dist/types/media/properties.d.ts +2 -1
  91. package/dist/types/meeting/in-meeting-actions.d.ts +6 -0
  92. package/dist/types/meeting/index.d.ts +61 -7
  93. package/dist/types/meeting/request.d.ts +16 -1
  94. package/dist/types/meeting/request.type.d.ts +5 -0
  95. package/dist/types/meeting/util.d.ts +31 -0
  96. package/dist/types/meetings/index.d.ts +4 -2
  97. package/dist/types/member/index.d.ts +1 -0
  98. package/dist/types/member/util.d.ts +5 -0
  99. package/dist/types/metrics/constants.d.ts +1 -0
  100. package/dist/types/multistream/mediaRequestManager.d.ts +0 -23
  101. package/dist/types/reactions/reactions.type.d.ts +1 -0
  102. package/dist/types/webinar/utils.d.ts +6 -0
  103. package/dist/webinar/index.js +291 -91
  104. package/dist/webinar/index.js.map +1 -1
  105. package/dist/webinar/utils.js +25 -0
  106. package/dist/webinar/utils.js.map +1 -0
  107. package/package.json +24 -23
  108. package/src/aiEnableRequest/README.md +84 -0
  109. package/src/aiEnableRequest/index.ts +170 -0
  110. package/src/aiEnableRequest/utils.ts +25 -0
  111. package/src/annotation/index.ts +27 -7
  112. package/src/config.ts +4 -0
  113. package/src/constants.ts +29 -1
  114. package/src/hashTree/constants.ts +1 -0
  115. package/src/hashTree/hashTree.ts +17 -0
  116. package/src/hashTree/hashTreeParser.ts +745 -252
  117. package/src/hashTree/types.ts +4 -0
  118. package/src/hashTree/utils.ts +9 -0
  119. package/src/index.ts +8 -1
  120. package/src/interceptors/constant.ts +6 -0
  121. package/src/interceptors/dataChannelAuthToken.ts +170 -0
  122. package/src/interceptors/index.ts +2 -1
  123. package/src/interceptors/utils.ts +16 -0
  124. package/src/interpretation/index.ts +2 -2
  125. package/src/locus-info/controlsUtils.ts +11 -0
  126. package/src/locus-info/index.ts +579 -113
  127. package/src/locus-info/selfUtils.ts +1 -0
  128. package/src/locus-info/types.ts +8 -0
  129. package/src/media/MediaConnectionAwaiter.ts +41 -1
  130. package/src/media/properties.ts +3 -1
  131. package/src/meeting/in-meeting-actions.ts +12 -0
  132. package/src/meeting/index.ts +291 -76
  133. package/src/meeting/request.ts +42 -0
  134. package/src/meeting/request.type.ts +6 -0
  135. package/src/meeting/util.ts +160 -2
  136. package/src/meetings/index.ts +157 -44
  137. package/src/member/index.ts +10 -0
  138. package/src/member/util.ts +12 -0
  139. package/src/metrics/constants.ts +1 -0
  140. package/src/multistream/mediaRequestManager.ts +4 -54
  141. package/src/multistream/remoteMediaManager.ts +13 -0
  142. package/src/reachability/index.ts +9 -0
  143. package/src/reactions/reactions.type.ts +1 -0
  144. package/src/reconnection-manager/index.ts +0 -1
  145. package/src/webinar/index.ts +191 -6
  146. package/src/webinar/utils.ts +16 -0
  147. package/test/unit/spec/aiEnableRequest/index.ts +981 -0
  148. package/test/unit/spec/aiEnableRequest/utils.ts +130 -0
  149. package/test/unit/spec/annotation/index.ts +69 -7
  150. package/test/unit/spec/hashTree/hashTree.ts +66 -0
  151. package/test/unit/spec/hashTree/hashTreeParser.ts +2225 -189
  152. package/test/unit/spec/interceptors/dataChannelAuthToken.ts +210 -0
  153. package/test/unit/spec/interceptors/utils.ts +75 -0
  154. package/test/unit/spec/locus-info/controlsUtils.js +29 -0
  155. package/test/unit/spec/locus-info/index.js +1134 -55
  156. package/test/unit/spec/media/MediaConnectionAwaiter.ts +41 -1
  157. package/test/unit/spec/media/properties.ts +12 -3
  158. package/test/unit/spec/meeting/in-meeting-actions.ts +8 -2
  159. package/test/unit/spec/meeting/index.js +829 -115
  160. package/test/unit/spec/meeting/request.js +70 -0
  161. package/test/unit/spec/meeting/utils.js +438 -26
  162. package/test/unit/spec/meetings/index.js +653 -32
  163. package/test/unit/spec/member/index.js +28 -4
  164. package/test/unit/spec/member/util.js +65 -27
  165. package/test/unit/spec/multistream/mediaRequestManager.ts +2 -85
  166. package/test/unit/spec/multistream/remoteMediaManager.ts +30 -0
  167. package/test/unit/spec/reachability/index.ts +23 -0
  168. package/test/unit/spec/reconnection-manager/index.js +4 -8
  169. package/test/unit/spec/webinar/index.ts +474 -37
  170. 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,8 +41,10 @@ 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");
47
+ var _webCapabilities = require("@webex/web-capabilities");
45
48
  var _voiceaMeeting = require("./voicea-meeting");
46
49
  var _webexErrors = require("../common/errors/webex-errors");
47
50
  var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
@@ -89,18 +92,19 @@ var _joinWebinarError = _interopRequireDefault(require("../common/errors/join-we
89
92
  var _brbState = require("./brbState");
90
93
  var _multistreamNotSupportedError = _interopRequireDefault(require("../common/errors/multistream-not-supported-error"));
91
94
  var _joinForbiddenError = _interopRequireDefault(require("../common/errors/join-forbidden-error"));
95
+ var _aiEnableRequest = _interopRequireDefault(require("../aiEnableRequest"));
92
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; } } }; }
93
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; } }
94
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; }
95
- 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; }
96
- 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; }
97
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)); }
98
100
  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
99
101
  function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
100
102
  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
101
103
  function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
102
104
  function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }
103
- 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
104
108
  // @ts-ignore - Types not available for @webex/common
105
109
  // default callback so we don't call an undefined function, but in practice it should never be used
106
110
  var DEFAULT_ICE_PHASE_CALLBACK = function DEFAULT_ICE_PHASE_CALLBACK() {
@@ -130,7 +134,6 @@ var ScreenShareFloorStatus = exports.ScreenShareFloorStatus = /*#__PURE__*/funct
130
134
  ScreenShareFloorStatus["RELEASED"] = "floor_released";
131
135
  return ScreenShareFloorStatus;
132
136
  }({});
133
- var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
134
137
  /**
135
138
  * MediaDirection
136
139
  * @typedef {Object} MediaDirection
@@ -142,12 +145,14 @@ var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
142
145
  * @property {boolean} receiveShare
143
146
  * @property {boolean} isSharing
144
147
  */
148
+
145
149
  /**
146
150
  * SharePreferences
147
151
  * @typedef {Object} SharePreferences
148
152
  * @property {Object} [shareConstraints]
149
153
  * @property {Boolean} [highFrameRate]
150
154
  */
155
+
151
156
  /**
152
157
  * JoinOptions
153
158
  * @typedef {Object} JoinOptions
@@ -159,12 +164,14 @@ var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
159
164
  * @property {Boolean} [rejoin]
160
165
  * @property {Boolean} [enableMultistream]
161
166
  */
167
+
162
168
  /**
163
169
  * Recording
164
170
  * @typedef {Object} Recording
165
171
  * @property {Object} state
166
172
  * @property {String} modifiedBy
167
173
  */
174
+
168
175
  /**
169
176
  * Meeting State Change Event
170
177
  * Emitted when ever there is a meeting state change
@@ -175,6 +182,7 @@ var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
175
182
  * @property {String} previousState previous state of the meeting
176
183
  * @memberof Meeting
177
184
  */
185
+
178
186
  /**
179
187
  * Media Ready Event
180
188
  * Emitted when a stream is ready to be rendered
@@ -185,6 +193,7 @@ var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
185
193
  * @property {String} type what type of stream, remote, local
186
194
  * @memberof Meeting
187
195
  */
196
+
188
197
  /**
189
198
  * Media Stopped Event
190
199
  * Emitted when a stream has stopped sending
@@ -194,6 +203,7 @@ var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
194
203
  * @property {String} type what type of stream, remote, local
195
204
  * @memberof Meeting
196
205
  */
206
+
197
207
  /**
198
208
  * Meeting Ringing Event
199
209
  * Emitted when this client should play a ringing sound, because this member is getting an incoming meeting
@@ -205,6 +215,7 @@ var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
205
215
  * @property {String} id
206
216
  * @memberof Meeting
207
217
  */
218
+
208
219
  /**
209
220
  * Meeting Ringing Stop Event
210
221
  * Emitted when this client should stop playing a ringing sound
@@ -217,6 +228,7 @@ var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
217
228
  * @property {String} id
218
229
  * @memberof Meeting
219
230
  */
231
+
220
232
  /**
221
233
  * Meeting Started Sharing Local Event
222
234
  * Emitted when this member starts sharing
@@ -225,6 +237,7 @@ var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
225
237
  * @type {Object}
226
238
  * @memberof Meeting
227
239
  */
240
+
228
241
  /**
229
242
  * Meeting Stopped Sharing Local Event
230
243
  * Emitted when this member stops sharing
@@ -233,6 +246,7 @@ var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
233
246
  * @type {Object}
234
247
  * @memberof Meeting
235
248
  */
249
+
236
250
  /**
237
251
  * Meeting Started Sharing Remote Event
238
252
  * Emitted when remote sharing starts
@@ -246,6 +260,7 @@ var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
246
260
  * @memberof Meeting
247
261
  *
248
262
  */
263
+
249
264
  /**
250
265
  * Meeting Stopped Sharing Remote Event
251
266
  * Emitted when remote screen sharing ends
@@ -254,6 +269,7 @@ var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
254
269
  * @type {Object}
255
270
  * @memberof Meeting
256
271
  */
272
+
257
273
  /**
258
274
  * Meeting Locked Event
259
275
  * Emitted when a meeting is locked
@@ -263,6 +279,7 @@ var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
263
279
  * @property {Object} info
264
280
  * @memberof Meeting
265
281
  */
282
+
266
283
  /**
267
284
  * Meeting Unlocked Event
268
285
  * Emitted when a meeting is unlocked
@@ -272,6 +289,7 @@ var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
272
289
  * @property {Object} info
273
290
  * @memberof Meeting
274
291
  */
292
+
275
293
  /**
276
294
  * Meeting Actions Update Event
277
295
  * Emitted when a user can take actions on a meeting such as lock, unlock, assign host
@@ -283,6 +301,7 @@ var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
283
301
  * @property {Boolean} canAssignHost
284
302
  * @memberof Meeting
285
303
  */
304
+
286
305
  /**
287
306
  * Meeting Unmuted By Others Event
288
307
  * Emitted when a member is unmuted by another member
@@ -292,6 +311,7 @@ var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
292
311
  * @property {Object} payload
293
312
  * @memberof Meeting
294
313
  */
314
+
295
315
  /**
296
316
  * Meeting Muted By Others Event
297
317
  * Emitted when a member is muted by another member
@@ -302,6 +322,7 @@ var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
302
322
  * @property {Boolean} payload.unmuteAllowed - whether the user is allowed to unmute self
303
323
  * @memberof Meeting
304
324
  */
325
+
305
326
  /**
306
327
  * Meeting Muted By Others Event
307
328
  * Emitted when the host(moderator)/co-host requests a user to unmute
@@ -311,6 +332,7 @@ var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
311
332
  * @property {Object} payload
312
333
  * @memberof Meeting
313
334
  */
335
+
314
336
  /**
315
337
  * Meeting Self Guest Admitted Event
316
338
  * Emitted when a joined user get admitted to the meeting by another member or host
@@ -320,6 +342,7 @@ var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
320
342
  * @property {Object} payload
321
343
  * @memberof Meeting
322
344
  */
345
+
323
346
  /**
324
347
  * Meeting Self Lobby Waiting Event
325
348
  * Emitted when joined user enters the lobby and is waiting for the webex meeting to begin
@@ -329,6 +352,7 @@ var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
329
352
  * @property {Object} reason Reason why user left the meeting
330
353
  * @memberof Meeting
331
354
  */
355
+
332
356
  /**
333
357
  * Meeting Self Left State
334
358
  * Emitted when user is inactive for more then 40 seconds, User can rejoin the meeting again
@@ -338,6 +362,7 @@ var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
338
362
  * @property {Object} payload
339
363
  * @memberof Meeting
340
364
  */
365
+
341
366
  /**
342
367
  * Reconnection Starting Event
343
368
  * Emitted when reconnection of media to the active meeting was successful
@@ -345,6 +370,7 @@ var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
345
370
  * @instance
346
371
  * @memberof Meeting
347
372
  */
373
+
348
374
  /**
349
375
  * Reconnection Success Event
350
376
  * Emitted when reconnection of media to the active meeting was successful
@@ -354,6 +380,7 @@ var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
354
380
  * @property {Object} reconnect
355
381
  * @memberof Meeting
356
382
  */
383
+
357
384
  /**
358
385
  * Reconnection Failure Event
359
386
  * Emitted when reconnection of media to the active meeting was successful
@@ -363,6 +390,7 @@ var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
363
390
  * @property {Error} error
364
391
  * @memberof Meeting
365
392
  */
393
+
366
394
  /**
367
395
  * Meeting network quality event
368
396
  * Emitted on each interval of retrieving stats Analyzer data
@@ -372,11 +400,33 @@ var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
372
400
  * @property {number} networkQualityScore - {1|0} 1 indicates acceptable uplink 0 indicates unacceptable uplink based on threshold
373
401
  * @memberof Meeting
374
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
+
375
424
  /**
376
425
  * @description Meeting is the crux of the plugin
377
426
  * @export
378
427
  * @class Meeting
379
428
  */
429
+ var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
380
430
  var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
381
431
  /**
382
432
  * @param {Object} attrs
@@ -386,7 +436,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
386
436
  * @memberof Meeting
387
437
  */
388
438
  function Meeting(attrs, _options, callback) {
389
- var _attrs$callStateForMe, _attrs$callStateForMe2, _this$locusInfo, _this$locusInfo$links, _this$locusInfo$links2, _this$locusInfo$links3, _this$locusInfo2, _this$locusInfo2$full, _this$locusInfo3, _this$locusInfo4;
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;
390
440
  var _this;
391
441
  (0, _classCallCheck2.default)(this, Meeting);
392
442
  _this = _callSuper(this, Meeting, [{}, _options]);
@@ -402,6 +452,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
402
452
  (0, _defineProperty3.default)(_this, "breakouts", void 0);
403
453
  (0, _defineProperty3.default)(_this, "simultaneousInterpretation", void 0);
404
454
  (0, _defineProperty3.default)(_this, "annotation", void 0);
455
+ (0, _defineProperty3.default)(_this, "aiEnableRequest", void 0);
405
456
  (0, _defineProperty3.default)(_this, "webinar", void 0);
406
457
  (0, _defineProperty3.default)(_this, "conversationUrl", void 0);
407
458
  (0, _defineProperty3.default)(_this, "callStateForMetrics", void 0);
@@ -451,6 +502,13 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
451
502
  (0, _defineProperty3.default)(_this, "keepAliveTimerId", void 0);
452
503
  (0, _defineProperty3.default)(_this, "lastVideoLayoutInfo", void 0);
453
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
454
512
  (0, _defineProperty3.default)(_this, "locusMediaRequest", void 0);
455
513
  (0, _defineProperty3.default)(_this, "mediaProperties", void 0);
456
514
  (0, _defineProperty3.default)(_this, "mediaRequestManagers", void 0);
@@ -479,7 +537,6 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
479
537
  (0, _defineProperty3.default)(_this, "endCallInitJoinReq", void 0);
480
538
  (0, _defineProperty3.default)(_this, "endJoinReqResp", void 0);
481
539
  (0, _defineProperty3.default)(_this, "endLocalSDPGenRemoteSDPRecvDelay", void 0);
482
- (0, _defineProperty3.default)(_this, "joinedWith", void 0);
483
540
  (0, _defineProperty3.default)(_this, "locusId", void 0);
484
541
  (0, _defineProperty3.default)(_this, "startCallInitJoinReq", void 0);
485
542
  (0, _defineProperty3.default)(_this, "startJoinReqResp", void 0);
@@ -494,12 +551,11 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
494
551
  (0, _defineProperty3.default)(_this, "permissionTokenReceivedLocalTime", void 0);
495
552
  (0, _defineProperty3.default)(_this, "resourceId", void 0);
496
553
  (0, _defineProperty3.default)(_this, "resourceUrl", void 0);
497
- (0, _defineProperty3.default)(_this, "selfId", void 0);
498
554
  (0, _defineProperty3.default)(_this, "state", void 0);
499
555
  (0, _defineProperty3.default)(_this, "localAudioStreamMuteStateHandler", void 0);
500
556
  (0, _defineProperty3.default)(_this, "localVideoStreamMuteStateHandler", void 0);
501
557
  (0, _defineProperty3.default)(_this, "localOutputTrackChangeHandler", void 0);
502
- (0, _defineProperty3.default)(_this, "roles", void 0);
558
+ (0, _defineProperty3.default)(_this, "localConstraintsChangeHandler", void 0);
503
559
  (0, _defineProperty3.default)(_this, "environment", void 0);
504
560
  (0, _defineProperty3.default)(_this, "namespace", _constants.MEETINGS);
505
561
  (0, _defineProperty3.default)(_this, "allowMediaInLobby", void 0);
@@ -569,6 +625,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
569
625
  */
570
626
  (0, _defineProperty3.default)(_this, "processLocusLLMEvent", function (event) {
571
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
+ }
572
632
  _this.locusInfo.parse(_this, event.data);
573
633
  } else {
574
634
  _loggerProxy.default.logger.warn("Meeting:index#processLocusLLMEvent --> Unknown event type: ".concat(event.data.eventType));
@@ -586,13 +646,14 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
586
646
  if (
587
647
  // @ts-ignore - config coming from registerPlugin
588
648
  (_this.config.receiveReactions || options.receiveReactions) && _this.isReactionsSupported()) {
649
+ var _this$locusInfo, _this$locusInfo$info;
589
650
  var member = _this.members.membersCollection.get(e.data.sender.participantId);
590
- 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)) {
591
652
  // @ts-ignore -- fix type
592
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."));
593
654
  break;
594
655
  }
595
- var name = member.name;
656
+ var name = member && member.name || e.data.sender.displayName;
596
657
  var processedReaction = {
597
658
  reaction: e.data.reaction,
598
659
  sender: {
@@ -625,6 +686,61 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
625
686
  function: 'handleLLMOnline'
626
687
  }, _constants.EVENT_TRIGGERS.MEETING_TRANSCRIPTION_CONNECTED, undefined);
627
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
+ })));
628
744
  /**
629
745
  * Handles ROAP_FAILURE event from the webrtc media connection
630
746
  *
@@ -810,8 +926,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
810
926
  seq: event.roapMessage.seq,
811
927
  tieBreaker: event.roapMessage.tieBreaker,
812
928
  meeting: _this // or can pass meeting ID
813
- }).then(function (_ref2) {
814
- var roapAnswer = _ref2.roapAnswer;
929
+ }).then(function (_ref4) {
930
+ var roapAnswer = _ref4.roapAnswer;
815
931
  if (roapAnswer) {
816
932
  _loggerProxy.default.logger.log("".concat(LOG_HEADER, " received Roap ANSWER in http response"));
817
933
  _this.roapMessageReceived(roapAnswer);
@@ -1214,32 +1330,32 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
1214
1330
  * @returns {Promise<void>}
1215
1331
  */
1216
1332
  (0, _defineProperty3.default)(_this, "forceSendStatsReport", /*#__PURE__*/function () {
1217
- var _ref4 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee(_ref3) {
1218
- var callFrom, LOG_HEADER, _this$mediaProperties, _this$mediaProperties2, _t;
1219
- return _regenerator.default.wrap(function (_context) {
1220
- while (1) switch (_context.prev = _context.next) {
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) {
1221
1337
  case 0:
1222
- callFrom = _ref3.callFrom;
1338
+ callFrom = _ref5.callFrom;
1223
1339
  LOG_HEADER = "Meeting:index#forceSendStatsReport --> called from ".concat(callFrom, " : ");
1224
- _context.prev = 1;
1225
- _context.next = 2;
1340
+ _context2.prev = 1;
1341
+ _context2.next = 2;
1226
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();
1227
1343
  case 2:
1228
1344
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " successfully uploaded available webrtc telemetry statistics"));
1229
- _context.next = 4;
1345
+ _context2.next = 4;
1230
1346
  break;
1231
1347
  case 3:
1232
- _context.prev = 3;
1233
- _t = _context["catch"](1);
1234
- _loggerProxy.default.logger.error("".concat(LOG_HEADER, " failed to upload webrtc telemetry statistics: "), _t);
1348
+ _context2.prev = 3;
1349
+ _t2 = _context2["catch"](1);
1350
+ _loggerProxy.default.logger.error("".concat(LOG_HEADER, " failed to upload webrtc telemetry statistics: "), _t2);
1235
1351
  case 4:
1236
1352
  case "end":
1237
- return _context.stop();
1353
+ return _context2.stop();
1238
1354
  }
1239
- }, _callee, null, [[1, 3]]);
1355
+ }, _callee2, null, [[1, 3]]);
1240
1356
  }));
1241
1357
  return function (_x) {
1242
- return _ref4.apply(this, arguments);
1358
+ return _ref6.apply(this, arguments);
1243
1359
  };
1244
1360
  }());
1245
1361
  /**
@@ -1299,40 +1415,40 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
1299
1415
  * @memberof Meeting
1300
1416
  * @returns {undefined}
1301
1417
  */
1302
- (0, _defineProperty3.default)(_this, "handleShareAudioStreamEnded", /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee2() {
1303
- var _t2;
1304
- return _regenerator.default.wrap(function (_context2) {
1305
- while (1) switch (_context2.prev = _context2.next) {
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) {
1306
1422
  case 0:
1307
1423
  _loggerProxy.default.logger.info("Meeting:index#handleShareAudioStreamEnded --> audio share stream ended");
1308
1424
  // current share audio stream has ended, but there might be an active
1309
1425
  // share video stream. we only leave from wireless share if share has
1310
1426
  // completely ended, which means no share audio or video streams active
1311
1427
  if (!(_this.wirelessShare && !_this.mediaProperties.shareVideoStream)) {
1312
- _context2.next = 1;
1428
+ _context3.next = 1;
1313
1429
  break;
1314
1430
  }
1315
1431
  _this.leave({
1316
1432
  reason: _constants.MEETING_REMOVED_REASON.USER_ENDED_SHARE_STREAMS
1317
1433
  });
1318
- _context2.next = 4;
1434
+ _context3.next = 4;
1319
1435
  break;
1320
1436
  case 1:
1321
- _context2.prev = 1;
1322
- _context2.next = 2;
1437
+ _context3.prev = 1;
1438
+ _context3.next = 2;
1323
1439
  return _this.unpublishStreams([_this.mediaProperties.shareAudioStream]);
1324
1440
  case 2:
1325
- _context2.next = 4;
1441
+ _context3.next = 4;
1326
1442
  break;
1327
1443
  case 3:
1328
- _context2.prev = 3;
1329
- _t2 = _context2["catch"](1);
1330
- _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);
1331
1447
  case 4:
1332
1448
  case "end":
1333
- return _context2.stop();
1449
+ return _context3.stop();
1334
1450
  }
1335
- }, _callee2, null, [[1, 3]]);
1451
+ }, _callee3, null, [[1, 3]]);
1336
1452
  })));
1337
1453
  /**
1338
1454
  * Functionality for when a share video is muted or unmuted.
@@ -1364,42 +1480,42 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
1364
1480
  * @memberof Meeting
1365
1481
  * @returns {undefined}
1366
1482
  */
1367
- (0, _defineProperty3.default)(_this, "handleShareVideoStreamEnded", /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee3() {
1368
- var _t3;
1369
- return _regenerator.default.wrap(function (_context3) {
1370
- while (1) switch (_context3.prev = _context3.next) {
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) {
1371
1487
  case 0:
1372
1488
  _loggerProxy.default.logger.info("Meeting:index#handleShareVideoStreamEnded --> video share stream ended");
1373
1489
  // current share video stream has ended, but there might be an active
1374
1490
  // share audio stream. we only leave from wireless share if share has
1375
1491
  // completely ended, which means no share audio or video streams active
1376
1492
  if (!(_this.wirelessShare && !_this.mediaProperties.shareAudioStream)) {
1377
- _context3.next = 1;
1493
+ _context4.next = 1;
1378
1494
  break;
1379
1495
  }
1380
1496
  _this.leave({
1381
1497
  reason: _constants.MEETING_REMOVED_REASON.USER_ENDED_SHARE_STREAMS
1382
1498
  });
1383
- _context3.next = 4;
1499
+ _context4.next = 4;
1384
1500
  break;
1385
1501
  case 1:
1386
- _context3.prev = 1;
1387
- _context3.next = 2;
1502
+ _context4.prev = 1;
1503
+ _context4.next = 2;
1388
1504
  return _this.unpublishStreams([_this.mediaProperties.shareVideoStream]);
1389
1505
  case 2:
1390
- _context3.next = 4;
1506
+ _context4.next = 4;
1391
1507
  break;
1392
1508
  case 3:
1393
- _context3.prev = 3;
1394
- _t3 = _context3["catch"](1);
1395
- _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);
1396
1512
  case 4:
1397
1513
  _this.triggerStoppedSharing();
1398
1514
  case 5:
1399
1515
  case "end":
1400
- return _context3.stop();
1516
+ return _context4.stop();
1401
1517
  }
1402
- }, _callee3, null, [[1, 3]]);
1518
+ }, _callee4, null, [[1, 3]]);
1403
1519
  })));
1404
1520
  /**
1405
1521
  * Emits meeting:stoppedSharingLocal
@@ -1423,26 +1539,31 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
1423
1539
  * @public
1424
1540
  * @memberof Meeting
1425
1541
  */
1426
- (0, _defineProperty3.default)(_this, "clearMeetingData", function () {
1427
- _this.audio = null;
1428
- _this.video = null;
1429
- _this.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
1430
- if (_this.shareStatus === _constants.SHARE_STATUS.LOCAL_SHARE_ACTIVE) {
1431
- _this.shareStatus = _constants.SHARE_STATUS.NO_SHARE;
1432
- }
1433
- _this.queuedMediaUpdates = [];
1434
- if (_this.transcription) {
1435
- _this.stopTranscription();
1436
- _this.transcription = undefined;
1437
- }
1438
- _this.annotation.deregisterEvents();
1439
-
1440
- // @ts-ignore - fix types
1441
- _this.webex.internal.llm.off('event:relay.event', _this.processRelayEvent);
1442
- // @ts-ignore - Fix type
1443
- _this.webex.internal.llm.off(_constants.LOCUS_LLM_EVENT, _this.processLocusLLMEvent);
1444
- _this.clearLLMHealthCheckTimer();
1445
- });
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
+ _this.stopTranscription();
1554
+ _this.transcription = undefined;
1555
+ _this.annotation.deregisterEvents();
1556
+ _this.clearDataChannelToken();
1557
+ _context5.next = 1;
1558
+ return _this.cleanupLLMConneciton({
1559
+ throwOnError: false
1560
+ });
1561
+ case 1:
1562
+ case "end":
1563
+ return _context5.stop();
1564
+ }
1565
+ }, _callee5);
1566
+ })));
1446
1567
  /**
1447
1568
  * starts keepAlives being sent
1448
1569
  * @returns {void}
@@ -1605,6 +1726,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
1605
1726
  _this.simultaneousInterpretation = new _interpretation.default({}, {
1606
1727
  parent: _this.webex
1607
1728
  });
1729
+
1730
+ // @ts-ignore
1731
+ _this.aiEnableRequest = new _aiEnableRequest.default({}, {
1732
+ parent: _this.webex
1733
+ });
1734
+
1608
1735
  /**
1609
1736
  * @instance
1610
1737
  * @type {Annotation}
@@ -2184,9 +2311,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2184
2311
  * @memberof Meeting
2185
2312
  */
2186
2313
  _this.recordingController = new _recordingController.default(_this.meetingRequest, {
2187
- serviceUrl: (_this$locusInfo = _this.locusInfo) === null || _this$locusInfo === void 0 ? void 0 : (_this$locusInfo$links = _this$locusInfo.links) === null || _this$locusInfo$links === void 0 ? void 0 : (_this$locusInfo$links2 = _this$locusInfo$links.services) === null || _this$locusInfo$links2 === void 0 ? void 0 : (_this$locusInfo$links3 = _this$locusInfo$links2.record) === null || _this$locusInfo$links3 === void 0 ? void 0 : _this$locusInfo$links3.url,
2188
- sessionId: (_this$locusInfo2 = _this.locusInfo) === null || _this$locusInfo2 === void 0 ? void 0 : (_this$locusInfo2$full = _this$locusInfo2.fullState) === null || _this$locusInfo2$full === void 0 ? void 0 : _this$locusInfo2$full.sessionId,
2189
- locusUrl: (_this$locusInfo3 = _this.locusInfo) === null || _this$locusInfo3 === void 0 ? void 0 : _this$locusInfo3.url,
2314
+ 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,
2315
+ 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,
2316
+ locusUrl: (_this$locusInfo4 = _this.locusInfo) === null || _this$locusInfo4 === void 0 ? void 0 : _this$locusInfo4.url,
2190
2317
  displayHints: []
2191
2318
  });
2192
2319
 
@@ -2198,7 +2325,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2198
2325
  * @memberof Meeting
2199
2326
  */
2200
2327
  _this.controlsOptionsManager = new _controlsOptionsManager.default(_this.meetingRequest, {
2201
- locusUrl: (_this$locusInfo4 = _this.locusInfo) === null || _this$locusInfo4 === void 0 ? void 0 : _this$locusInfo4.url,
2328
+ locusUrl: (_this$locusInfo5 = _this.locusInfo) === null || _this$locusInfo5 === void 0 ? void 0 : _this$locusInfo5.url,
2202
2329
  displayHints: []
2203
2330
  });
2204
2331
  _this.setUpLocusInfoListeners();
@@ -2227,6 +2354,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2227
2354
  _this.updateTranscodedMediaConnection();
2228
2355
  }
2229
2356
  };
2357
+ _this.localConstraintsChangeHandler = function () {
2358
+ if (!_this.isMultistream) {
2359
+ var _this$mediaProperties6;
2360
+ (_this$mediaProperties6 = _this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties6 === void 0 ? void 0 : _this$mediaProperties6.updatePreferredBitrateKbps();
2361
+ }
2362
+ };
2230
2363
 
2231
2364
  /**
2232
2365
  * Promise that exists if SDP offer has been generated, and resolves once sdp answer is received.
@@ -2563,20 +2696,20 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2563
2696
  }, {
2564
2697
  key: "injectMeetingInfo",
2565
2698
  value: (function () {
2566
- var _injectMeetingInfo = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee4(meetingInfo, fetchParams, meetingLookupUrl) {
2567
- return _regenerator.default.wrap(function (_context4) {
2568
- while (1) switch (_context4.prev = _context4.next) {
2699
+ var _injectMeetingInfo = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee6(meetingInfo, fetchParams, meetingLookupUrl) {
2700
+ return _regenerator.default.wrap(function (_context6) {
2701
+ while (1) switch (_context6.prev = _context6.next) {
2569
2702
  case 0:
2570
- _context4.next = 1;
2703
+ _context6.next = 1;
2571
2704
  return this.prepForFetchMeetingInfo(fetchParams, 'injectMeetingInfo');
2572
2705
  case 1:
2573
2706
  this.parseMeetingInfo(meetingInfo, this.destination);
2574
2707
  this.setMeetingInfo(meetingInfo, meetingLookupUrl);
2575
2708
  case 2:
2576
2709
  case "end":
2577
- return _context4.stop();
2710
+ return _context6.stop();
2578
2711
  }
2579
- }, _callee4, this);
2712
+ }, _callee6, this);
2580
2713
  }));
2581
2714
  function injectMeetingInfo(_x2, _x3, _x4) {
2582
2715
  return _injectMeetingInfo.apply(this, arguments);
@@ -2595,15 +2728,15 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2595
2728
  )
2596
2729
  }, {
2597
2730
  key: "prepForFetchMeetingInfo",
2598
- value: function prepForFetchMeetingInfo(_ref7, caller) {
2599
- var _ref7$password = _ref7.password,
2600
- password = _ref7$password === void 0 ? null : _ref7$password,
2601
- _ref7$registrationId = _ref7.registrationId,
2602
- registrationId = _ref7$registrationId === void 0 ? null : _ref7$registrationId,
2603
- _ref7$captchaCode = _ref7.captchaCode,
2604
- captchaCode = _ref7$captchaCode === void 0 ? null : _ref7$captchaCode,
2605
- _ref7$extraParams = _ref7.extraParams,
2606
- extraParams = _ref7$extraParams === void 0 ? {} : _ref7$extraParams;
2731
+ value: function prepForFetchMeetingInfo(_ref0, caller) {
2732
+ var _ref0$password = _ref0.password,
2733
+ password = _ref0$password === void 0 ? null : _ref0$password,
2734
+ _ref0$registrationId = _ref0.registrationId,
2735
+ registrationId = _ref0$registrationId === void 0 ? null : _ref0$registrationId,
2736
+ _ref0$captchaCode = _ref0.captchaCode,
2737
+ captchaCode = _ref0$captchaCode === void 0 ? null : _ref0$captchaCode,
2738
+ _ref0$extraParams = _ref0.extraParams,
2739
+ extraParams = _ref0$extraParams === void 0 ? {} : _ref0$extraParams;
2607
2740
  // when fetch meeting info is called directly by the client, we want to clear out the random timer for sdk to do it
2608
2741
  if (this.fetchMeetingInfoTimeoutId) {
2609
2742
  clearTimeout(this.fetchMeetingInfoTimeoutId);
@@ -2627,18 +2760,18 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2627
2760
  }, {
2628
2761
  key: "fetchMeetingInfoInternal",
2629
2762
  value: (function () {
2630
- var _fetchMeetingInfoInternal = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee5(_ref8) {
2631
- var destination, destinationType, _ref8$password, password, _ref8$captchaCode, captchaCode, _ref8$extraParams, extraParams, _ref8$sendCAevents, sendCAevents, _ref8$registrationId, registrationId, _ref8$classificationI, classificationId, captchaInfo, info, _err$body, _err$body2, _t4;
2632
- return _regenerator.default.wrap(function (_context5) {
2633
- while (1) switch (_context5.prev = _context5.next) {
2763
+ var _fetchMeetingInfoInternal = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee7(_ref1) {
2764
+ 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;
2765
+ return _regenerator.default.wrap(function (_context7) {
2766
+ while (1) switch (_context7.prev = _context7.next) {
2634
2767
  case 0:
2635
- destination = _ref8.destination, destinationType = _ref8.destinationType, _ref8$password = _ref8.password, password = _ref8$password === void 0 ? null : _ref8$password, _ref8$captchaCode = _ref8.captchaCode, captchaCode = _ref8$captchaCode === void 0 ? null : _ref8$captchaCode, _ref8$extraParams = _ref8.extraParams, extraParams = _ref8$extraParams === void 0 ? {} : _ref8$extraParams, _ref8$sendCAevents = _ref8.sendCAevents, sendCAevents = _ref8$sendCAevents === void 0 ? false : _ref8$sendCAevents, _ref8$registrationId = _ref8.registrationId, registrationId = _ref8$registrationId === void 0 ? null : _ref8$registrationId, _ref8$classificationI = _ref8.classificationId, classificationId = _ref8$classificationI === void 0 ? null : _ref8$classificationI;
2636
- _context5.prev = 1;
2768
+ 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;
2769
+ _context7.prev = 1;
2637
2770
  captchaInfo = captchaCode ? {
2638
2771
  code: captchaCode,
2639
2772
  id: this.requiredCaptcha.captchaId
2640
2773
  } : null;
2641
- _context5.next = 2;
2774
+ _context7.next = 2;
2642
2775
  return this.attrs.meetingInfoProvider.fetchMeetingInfo(destination, destinationType, password, captchaInfo,
2643
2776
  // @ts-ignore - config coming from registerPlugin
2644
2777
  this.config.installedOrgID, this.locusId, extraParams, {
@@ -2646,112 +2779,112 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2646
2779
  sendCAevents: sendCAevents
2647
2780
  }, registrationId, null, classificationId);
2648
2781
  case 2:
2649
- info = _context5.sent;
2782
+ info = _context7.sent;
2650
2783
  this.parseMeetingInfo(info === null || info === void 0 ? void 0 : info.body, this.destination, info === null || info === void 0 ? void 0 : info.errors);
2651
2784
  this.setMeetingInfo(info === null || info === void 0 ? void 0 : info.body, info === null || info === void 0 ? void 0 : info.url);
2652
- return _context5.abrupt("return", _promise.default.resolve());
2785
+ return _context7.abrupt("return", _promise.default.resolve());
2653
2786
  case 3:
2654
- _context5.prev = 3;
2655
- _t4 = _context5["catch"](1);
2787
+ _context7.prev = 3;
2788
+ _t5 = _context7["catch"](1);
2656
2789
  this.updateMeetingActions();
2657
- if (!(_t4 instanceof _meetingInfoV.MeetingInfoV2PolicyError)) {
2658
- _context5.next = 4;
2790
+ if (!(_t5 instanceof _meetingInfoV.MeetingInfoV2PolicyError)) {
2791
+ _context7.next = 4;
2659
2792
  break;
2660
2793
  }
2661
2794
  this.meetingInfoFailureReason = _constants.MEETING_INFO_FAILURE_REASON.POLICY;
2662
- this.meetingInfoFailureCode = _t4.wbxAppApiCode;
2663
- if (_t4.meetingInfo) {
2664
- this.meetingInfo = _t4.meetingInfo;
2795
+ this.meetingInfoFailureCode = _t5.wbxAppApiCode;
2796
+ if (_t5.meetingInfo) {
2797
+ this.meetingInfo = _t5.meetingInfo;
2665
2798
  }
2666
2799
  throw new _permission.default();
2667
2800
  case 4:
2668
- if (!(_t4 instanceof _meetingInfoV.MeetingInfoV2JoinWebinarError)) {
2669
- _context5.next = 5;
2801
+ if (!(_t5 instanceof _meetingInfoV.MeetingInfoV2JoinWebinarError)) {
2802
+ _context7.next = 5;
2670
2803
  break;
2671
2804
  }
2672
2805
  this.meetingInfoFailureReason = _constants.MEETING_INFO_FAILURE_REASON.WEBINAR_REGISTRATION;
2673
- if (_constants.WEBINAR_ERROR_WEBCAST.includes(_t4.wbxAppApiCode)) {
2806
+ if (_constants.WEBINAR_ERROR_WEBCAST.includes(_t5.wbxAppApiCode)) {
2674
2807
  this.meetingInfoFailureReason = _constants.MEETING_INFO_FAILURE_REASON.NEED_JOIN_WITH_WEBCAST;
2675
- } else if (_constants.WEBINAR_ERROR_REGISTRATION_ID.includes(_t4.wbxAppApiCode)) {
2808
+ } else if (_constants.WEBINAR_ERROR_REGISTRATION_ID.includes(_t5.wbxAppApiCode)) {
2676
2809
  this.meetingInfoFailureReason = _constants.MEETING_INFO_FAILURE_REASON.WEBINAR_NEED_REGISTRATION_ID;
2677
2810
  }
2678
- this.meetingInfoFailureCode = _t4.wbxAppApiCode;
2679
- if (_t4.meetingInfo) {
2680
- this.meetingInfo = _t4.meetingInfo;
2811
+ this.meetingInfoFailureCode = _t5.wbxAppApiCode;
2812
+ if (_t5.meetingInfo) {
2813
+ this.meetingInfo = _t5.meetingInfo;
2681
2814
  }
2682
2815
  this.requiredCaptcha = null;
2683
2816
  throw new _joinWebinarError.default();
2684
2817
  case 5:
2685
- if (!(_t4 instanceof _meetingInfoV.MeetingInfoV2JoinForbiddenError)) {
2686
- _context5.next = 6;
2818
+ if (!(_t5 instanceof _meetingInfoV.MeetingInfoV2JoinForbiddenError)) {
2819
+ _context7.next = 6;
2687
2820
  break;
2688
2821
  }
2689
2822
  this.meetingInfoFailureReason = _constants.MEETING_INFO_FAILURE_REASON.JOIN_FORBIDDEN;
2690
- this.meetingInfoFailureCode = _t4.wbxAppApiCode;
2691
- if (_t4.meetingInfo) {
2692
- this.meetingInfo = _t4.meetingInfo;
2823
+ this.meetingInfoFailureCode = _t5.wbxAppApiCode;
2824
+ if (_t5.meetingInfo) {
2825
+ this.meetingInfo = _t5.meetingInfo;
2693
2826
  }
2694
2827
 
2695
2828
  // Handle the case where user hasn't reached Join Before Host (JBH) time (error code 403003)
2696
- if (_constants.JOIN_BEFORE_HOST === _t4.wbxAppApiCode) {
2829
+ if (_constants.JOIN_BEFORE_HOST === _t5.wbxAppApiCode) {
2697
2830
  this.meetingInfoFailureReason = _constants.MEETING_INFO_FAILURE_REASON.NOT_REACH_JBH;
2698
2831
  }
2699
- throw new _joinForbiddenError.default(this.meetingInfoFailureReason, _t4);
2832
+ throw new _joinForbiddenError.default(this.meetingInfoFailureReason, _t5);
2700
2833
  case 6:
2701
- if (!(_t4 instanceof _meetingInfoV.MeetingInfoV2PasswordError)) {
2702
- _context5.next = 8;
2834
+ if (!(_t5 instanceof _meetingInfoV.MeetingInfoV2PasswordError)) {
2835
+ _context7.next = 8;
2703
2836
  break;
2704
2837
  }
2705
2838
  _loggerProxy.default.logger.info(// @ts-ignore
2706
- "Meeting:index#fetchMeetingInfo --> Info Unable to fetch meeting info for ".concat(this.destination, " - password required (code=").concat(_t4 === null || _t4 === void 0 ? void 0 : (_err$body = _t4.body) === null || _err$body === void 0 ? void 0 : _err$body.code, ")."));
2839
+ "Meeting:index#fetchMeetingInfo --> Info Unable to fetch meeting info for ".concat(this.destination, " - password required (code=").concat(_t5 === null || _t5 === void 0 ? void 0 : (_err$body = _t5.body) === null || _err$body === void 0 ? void 0 : _err$body.code, ")."));
2707
2840
 
2708
2841
  // when wbxappapi requires password it still populates partial meeting info in the response
2709
- if (_t4.meetingInfo) {
2710
- this.meetingInfo = _t4.meetingInfo;
2711
- this.meetingNumber = _t4.meetingInfo.meetingNumber;
2842
+ if (_t5.meetingInfo) {
2843
+ this.meetingInfo = _t5.meetingInfo;
2844
+ this.meetingNumber = _t5.meetingInfo.meetingNumber;
2712
2845
  }
2713
- this.meetingInfoFailureCode = _t4.wbxAppApiCode;
2846
+ this.meetingInfoFailureCode = _t5.wbxAppApiCode;
2714
2847
  this.passwordStatus = _constants.PASSWORD_STATUS.REQUIRED;
2715
2848
  this.meetingInfoFailureReason = _constants.MEETING_INFO_FAILURE_REASON.WRONG_PASSWORD;
2716
2849
  if (!this.requiredCaptcha) {
2717
- _context5.next = 7;
2850
+ _context7.next = 7;
2718
2851
  break;
2719
2852
  }
2720
- _context5.next = 7;
2853
+ _context7.next = 7;
2721
2854
  return this.refreshCaptcha();
2722
2855
  case 7:
2723
2856
  throw new _passwordError.default();
2724
2857
  case 8:
2725
- if (!(_t4 instanceof _meetingInfoV.MeetingInfoV2CaptchaError)) {
2726
- _context5.next = 9;
2858
+ if (!(_t5 instanceof _meetingInfoV.MeetingInfoV2CaptchaError)) {
2859
+ _context7.next = 9;
2727
2860
  break;
2728
2861
  }
2729
2862
  _loggerProxy.default.logger.info(// @ts-ignore
2730
- "Meeting:index#fetchMeetingInfo --> Info Unable to fetch meeting info for ".concat(this.destination, " - captcha required (code=").concat(_t4 === null || _t4 === void 0 ? void 0 : (_err$body2 = _t4.body) === null || _err$body2 === void 0 ? void 0 : _err$body2.code, ")."));
2863
+ "Meeting:index#fetchMeetingInfo --> Info Unable to fetch meeting info for ".concat(this.destination, " - captcha required (code=").concat(_t5 === null || _t5 === void 0 ? void 0 : (_err$body2 = _t5.body) === null || _err$body2 === void 0 ? void 0 : _err$body2.code, ")."));
2731
2864
  if (this.requiredCaptcha) {
2732
2865
  this.meetingInfoFailureReason = _constants.MEETING_INFO_FAILURE_REASON.WRONG_CAPTCHA;
2733
- } else if (_t4.isRegistrationIdRequired) {
2866
+ } else if (_t5.isRegistrationIdRequired) {
2734
2867
  this.meetingInfoFailureReason = _constants.MEETING_INFO_FAILURE_REASON.WRONG_REGISTRATION_ID;
2735
2868
  } else {
2736
2869
  this.meetingInfoFailureReason = _constants.MEETING_INFO_FAILURE_REASON.WRONG_PASSWORD;
2737
2870
  }
2738
- this.meetingInfoFailureCode = _t4.wbxAppApiCode;
2739
- if (_t4.isPasswordRequired) {
2871
+ this.meetingInfoFailureCode = _t5.wbxAppApiCode;
2872
+ if (_t5.isPasswordRequired) {
2740
2873
  this.passwordStatus = _constants.PASSWORD_STATUS.REQUIRED;
2741
2874
  }
2742
- if (_t4.isRegistrationIdRequired) {
2875
+ if (_t5.isRegistrationIdRequired) {
2743
2876
  this.registrationIdStatus = _constants.REGISTRATION_ID_STATUS.REQUIRED;
2744
2877
  }
2745
- this.requiredCaptcha = _t4.captchaInfo;
2878
+ this.requiredCaptcha = _t5.captchaInfo;
2746
2879
  throw new _captchaError.default();
2747
2880
  case 9:
2748
2881
  this.meetingInfoFailureReason = _constants.MEETING_INFO_FAILURE_REASON.OTHER;
2749
- throw _t4;
2882
+ throw _t5;
2750
2883
  case 10:
2751
2884
  case "end":
2752
- return _context5.stop();
2885
+ return _context7.stop();
2753
2886
  }
2754
- }, _callee5, this, [[1, 3]]);
2887
+ }, _callee7, this, [[1, 3]]);
2755
2888
  }));
2756
2889
  function fetchMeetingInfoInternal(_x5) {
2757
2890
  return _fetchMeetingInfoInternal.apply(this, arguments);
@@ -2768,18 +2901,18 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2768
2901
  }, {
2769
2902
  key: "refreshPermissionToken",
2770
2903
  value: (function () {
2771
- var _refreshPermissionToken = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee6(reason) {
2904
+ var _refreshPermissionToken = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee8(reason) {
2772
2905
  var _this$meetingInfo;
2773
- var isStartingSpaceInstantV2Meeting, destination, destinationType, permissionTokenExpiryInfo, timeLeft, expiryTime, currentTime, _t5;
2774
- return _regenerator.default.wrap(function (_context6) {
2775
- while (1) switch (_context6.prev = _context6.next) {
2906
+ var isStartingSpaceInstantV2Meeting, destination, destinationType, permissionTokenExpiryInfo, timeLeft, expiryTime, currentTime, _t6;
2907
+ return _regenerator.default.wrap(function (_context8) {
2908
+ while (1) switch (_context8.prev = _context8.next) {
2776
2909
  case 0:
2777
2910
  if ((_this$meetingInfo = this.meetingInfo) !== null && _this$meetingInfo !== void 0 && _this$meetingInfo.permissionToken) {
2778
- _context6.next = 1;
2911
+ _context8.next = 1;
2779
2912
  break;
2780
2913
  }
2781
2914
  _loggerProxy.default.logger.info("Meeting:index#refreshPermissionToken --> cannot refresh the permission token, because we don't have it (reason=".concat(reason, ")"));
2782
- return _context6.abrupt("return");
2915
+ return _context8.abrupt("return");
2783
2916
  case 1:
2784
2917
  isStartingSpaceInstantV2Meeting = this.destinationType === _constants.DESTINATION_TYPE.CONVERSATION_URL &&
2785
2918
  // @ts-ignore - config coming from registerPlugin
@@ -2801,8 +2934,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2801
2934
  reason: reason,
2802
2935
  destinationType: destinationType
2803
2936
  });
2804
- _context6.prev = 2;
2805
- _context6.next = 3;
2937
+ _context8.prev = 2;
2938
+ _context8.next = 3;
2806
2939
  return this.fetchMeetingInfoInternal({
2807
2940
  destination: destination,
2808
2941
  destinationType: destinationType,
@@ -2812,23 +2945,23 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2812
2945
  sendCAevents: true // because if we're refreshing the permissionToken, it means that user is intending to join that meeting, so we want CA events
2813
2946
  });
2814
2947
  case 3:
2815
- _context6.next = 5;
2948
+ _context8.next = 5;
2816
2949
  break;
2817
2950
  case 4:
2818
- _context6.prev = 4;
2819
- _t5 = _context6["catch"](2);
2820
- _loggerProxy.default.logger.info('Meeting:index#refreshPermissionToken --> failed to refresh the permission token:', _t5);
2951
+ _context8.prev = 4;
2952
+ _t6 = _context8["catch"](2);
2953
+ _loggerProxy.default.logger.info('Meeting:index#refreshPermissionToken --> failed to refresh the permission token:', _t6);
2821
2954
  _metrics.default.sendBehavioralMetric(_constants2.default.PERMISSION_TOKEN_REFRESH_ERROR, {
2822
2955
  correlationId: this.correlationId,
2823
- reason: _t5.message,
2824
- stack: _t5.stack
2956
+ reason: _t6.message,
2957
+ stack: _t6.stack
2825
2958
  });
2826
- throw _t5;
2959
+ throw _t6;
2827
2960
  case 5:
2828
2961
  case "end":
2829
- return _context6.stop();
2962
+ return _context8.stop();
2830
2963
  }
2831
- }, _callee6, this, [[2, 4]]);
2964
+ }, _callee8, this, [[2, 4]]);
2832
2965
  }));
2833
2966
  function refreshPermissionToken(_x6) {
2834
2967
  return _refreshPermissionToken.apply(this, arguments);
@@ -2849,22 +2982,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2849
2982
  }, {
2850
2983
  key: "fetchMeetingInfo",
2851
2984
  value: (function () {
2852
- var _fetchMeetingInfo = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee7(options) {
2853
- return _regenerator.default.wrap(function (_context7) {
2854
- while (1) switch (_context7.prev = _context7.next) {
2985
+ var _fetchMeetingInfo = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee9(options) {
2986
+ return _regenerator.default.wrap(function (_context9) {
2987
+ while (1) switch (_context9.prev = _context9.next) {
2855
2988
  case 0:
2856
- _context7.next = 1;
2989
+ _context9.next = 1;
2857
2990
  return this.prepForFetchMeetingInfo(options, 'fetchMeetingInfo');
2858
2991
  case 1:
2859
- return _context7.abrupt("return", this.fetchMeetingInfoInternal(_objectSpread({
2992
+ return _context9.abrupt("return", this.fetchMeetingInfoInternal(_objectSpread({
2860
2993
  destination: this.destination,
2861
2994
  destinationType: this.destinationType
2862
2995
  }, options)));
2863
2996
  case 2:
2864
2997
  case "end":
2865
- return _context7.stop();
2998
+ return _context9.stop();
2866
2999
  }
2867
- }, _callee7, this);
3000
+ }, _callee9, this);
2868
3001
  }));
2869
3002
  function fetchMeetingInfo(_x7) {
2870
3003
  return _fetchMeetingInfo.apply(this, arguments);
@@ -3390,10 +3523,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3390
3523
  key: "setupLocusControlsListener",
3391
3524
  value: function setupLocusControlsListener() {
3392
3525
  var _this12 = this;
3393
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_RECORDING_UPDATED, function (_ref9) {
3394
- var state = _ref9.state,
3395
- modifiedBy = _ref9.modifiedBy,
3396
- lastModified = _ref9.lastModified;
3526
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_RECORDING_UPDATED, function (_ref10) {
3527
+ var state = _ref10.state,
3528
+ modifiedBy = _ref10.modifiedBy,
3529
+ lastModified = _ref10.lastModified;
3397
3530
  var event;
3398
3531
  switch (state) {
3399
3532
  case _constants.RECORDING_STATE.RECORDING:
@@ -3424,8 +3557,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3424
3557
  function: 'setupLocusControlsListener'
3425
3558
  }, event, _this12.recording);
3426
3559
  });
3427
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_CONTAINER_UPDATED, function (_ref0) {
3428
- var meetingContainerUrl = _ref0.meetingContainerUrl;
3560
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_CONTAINER_UPDATED, function (_ref11) {
3561
+ var meetingContainerUrl = _ref11.meetingContainerUrl;
3429
3562
  _triggerProxy.default.trigger(_this12, {
3430
3563
  file: 'meeting/index',
3431
3564
  function: 'setupLocusControlsListener'
@@ -3433,9 +3566,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3433
3566
  meetingContainerUrl: meetingContainerUrl
3434
3567
  });
3435
3568
  });
3436
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_TRANSCRIBE_UPDATED, function (_ref1) {
3437
- var caption = _ref1.caption,
3438
- transcribing = _ref1.transcribing;
3569
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_TRANSCRIBE_UPDATED, function (_ref12) {
3570
+ var caption = _ref12.caption,
3571
+ transcribing = _ref12.transcribing;
3439
3572
  // user need to be joined to start the llm and receive transcription
3440
3573
  if (_this12.isJoined()) {
3441
3574
  // @ts-ignore - config coming from registerPlugin
@@ -3452,8 +3585,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3452
3585
  }
3453
3586
  }
3454
3587
  });
3455
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_TRANSCRIPTION_SPOKEN_LANGUAGE_UPDATED, function (_ref10) {
3456
- var spokenLanguage = _ref10.spokenLanguage;
3588
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_TRANSCRIPTION_SPOKEN_LANGUAGE_UPDATED, function (_ref13) {
3589
+ var spokenLanguage = _ref13.spokenLanguage;
3457
3590
  if (spokenLanguage) {
3458
3591
  var _this12$transcription;
3459
3592
  if ((_this12$transcription = _this12.transcription) !== null && _this12$transcription !== void 0 && _this12$transcription.languageOptions) {
@@ -3470,8 +3603,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3470
3603
  });
3471
3604
  }
3472
3605
  });
3473
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_MANUAL_CAPTION_UPDATED, function (_ref11) {
3474
- var enable = _ref11.enable;
3606
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_MANUAL_CAPTION_UPDATED, function (_ref14) {
3607
+ var enable = _ref14.enable;
3475
3608
  _triggerProxy.default.trigger(_this12, {
3476
3609
  file: 'meeting/index',
3477
3610
  function: 'setupLocusControlsListener'
@@ -3479,31 +3612,31 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3479
3612
  enable: enable
3480
3613
  });
3481
3614
  });
3482
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_HESIOD_LLM_ID_UPDATED, function (_ref12) {
3483
- var hesiodLlmId = _ref12.hesiodLlmId;
3615
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_HESIOD_LLM_ID_UPDATED, function (_ref15) {
3616
+ var hesiodLlmId = _ref15.hesiodLlmId;
3484
3617
  if (hesiodLlmId) {
3485
3618
  // @ts-ignore
3486
3619
  _this12.webex.internal.voicea.onCaptionServiceIdUpdate(hesiodLlmId);
3487
3620
  }
3488
3621
  });
3489
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_BREAKOUT_UPDATED, function (_ref13) {
3490
- var breakout = _ref13.breakout;
3622
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_BREAKOUT_UPDATED, function (_ref16) {
3623
+ var breakout = _ref16.breakout;
3491
3624
  _this12.breakouts.updateBreakout(breakout);
3492
3625
  _triggerProxy.default.trigger(_this12, {
3493
3626
  file: 'meeting/index',
3494
3627
  function: 'setupLocusControlsListener'
3495
3628
  }, _constants.EVENT_TRIGGERS.MEETING_BREAKOUTS_UPDATE);
3496
3629
  });
3497
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_INTERPRETATION_UPDATED, function (_ref14) {
3498
- var interpretation = _ref14.interpretation;
3630
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_INTERPRETATION_UPDATED, function (_ref17) {
3631
+ var interpretation = _ref17.interpretation;
3499
3632
  _this12.simultaneousInterpretation.updateInterpretation(interpretation);
3500
3633
  _triggerProxy.default.trigger(_this12, {
3501
3634
  file: 'meeting/index',
3502
3635
  function: 'setupLocusControlsListener'
3503
3636
  }, _constants.EVENT_TRIGGERS.MEETING_INTERPRETATION_UPDATE);
3504
3637
  });
3505
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_ENTRY_EXIT_TONE_UPDATED, function (_ref15) {
3506
- var entryExitTone = _ref15.entryExitTone;
3638
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_ENTRY_EXIT_TONE_UPDATED, function (_ref18) {
3639
+ var entryExitTone = _ref18.entryExitTone;
3507
3640
  _triggerProxy.default.trigger(_this12, {
3508
3641
  file: 'meeting/index',
3509
3642
  function: 'setupLocusControlsListener'
@@ -3511,8 +3644,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3511
3644
  entryExitTone: entryExitTone
3512
3645
  });
3513
3646
  });
3514
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MUTE_ON_ENTRY_CHANGED, function (_ref16) {
3515
- var state = _ref16.state;
3647
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MUTE_ON_ENTRY_CHANGED, function (_ref19) {
3648
+ var state = _ref19.state;
3516
3649
  _triggerProxy.default.trigger(_this12, {
3517
3650
  file: 'meeting/index',
3518
3651
  function: 'setupLocusControlsListener'
@@ -3520,8 +3653,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3520
3653
  state: state
3521
3654
  });
3522
3655
  });
3523
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_SHARE_CONTROL_CHANGED, function (_ref17) {
3524
- var state = _ref17.state;
3656
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_SHARE_CONTROL_CHANGED, function (_ref20) {
3657
+ var state = _ref20.state;
3525
3658
  _triggerProxy.default.trigger(_this12, {
3526
3659
  file: 'meeting/index',
3527
3660
  function: 'setupLocusControlsListener'
@@ -3529,8 +3662,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3529
3662
  state: state
3530
3663
  });
3531
3664
  });
3532
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_DISALLOW_UNMUTE_CHANGED, function (_ref18) {
3533
- var state = _ref18.state;
3665
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_DISALLOW_UNMUTE_CHANGED, function (_ref21) {
3666
+ var state = _ref21.state;
3534
3667
  _triggerProxy.default.trigger(_this12, {
3535
3668
  file: 'meeting/index',
3536
3669
  function: 'setupLocusControlsListener'
@@ -3538,8 +3671,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3538
3671
  state: state
3539
3672
  });
3540
3673
  });
3541
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_REACTIONS_CHANGED, function (_ref19) {
3542
- var state = _ref19.state;
3674
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_REACTIONS_CHANGED, function (_ref22) {
3675
+ var state = _ref22.state;
3543
3676
  _triggerProxy.default.trigger(_this12, {
3544
3677
  file: 'meeting/index',
3545
3678
  function: 'setupLocusControlsListener'
@@ -3547,8 +3680,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3547
3680
  state: state
3548
3681
  });
3549
3682
  });
3550
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED, function (_ref20) {
3551
- var state = _ref20.state;
3683
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED, function (_ref23) {
3684
+ var state = _ref23.state;
3552
3685
  _triggerProxy.default.trigger(_this12, {
3553
3686
  file: 'meeting/index',
3554
3687
  function: 'setupLocusControlsListener'
@@ -3556,8 +3689,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3556
3689
  state: state
3557
3690
  });
3558
3691
  });
3559
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_RAISE_HAND_CHANGED, function (_ref21) {
3560
- var state = _ref21.state;
3692
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_RAISE_HAND_CHANGED, function (_ref24) {
3693
+ var state = _ref24.state;
3561
3694
  _triggerProxy.default.trigger(_this12, {
3562
3695
  file: 'meeting/index',
3563
3696
  function: 'setupLocusControlsListener'
@@ -3565,8 +3698,17 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3565
3698
  state: state
3566
3699
  });
3567
3700
  });
3568
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_WEBCAST_CHANGED, function (_ref22) {
3569
- var state = _ref22.state;
3701
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_AI_SUMMARY_NOTIFICATION_UPDATED, function (_ref25) {
3702
+ var aiSummaryNotification = _ref25.aiSummaryNotification;
3703
+ _triggerProxy.default.trigger(_this12, {
3704
+ file: 'meeting/index',
3705
+ function: 'setupLocusControlsListener'
3706
+ }, _constants.EVENT_TRIGGERS.MEETING_CONTROLS_AI_SUMMARY_NOTIFICATION_UPDATED, {
3707
+ aiSummaryNotification: aiSummaryNotification
3708
+ });
3709
+ });
3710
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_WEBCAST_CHANGED, function (_ref26) {
3711
+ var state = _ref26.state;
3570
3712
  _triggerProxy.default.trigger(_this12, {
3571
3713
  file: 'meeting/index',
3572
3714
  function: 'setupLocusControlsListener'
@@ -3574,8 +3716,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3574
3716
  state: state
3575
3717
  });
3576
3718
  });
3577
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_FULL_CHANGED, function (_ref23) {
3578
- var state = _ref23.state;
3719
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_FULL_CHANGED, function (_ref27) {
3720
+ var state = _ref27.state;
3579
3721
  _triggerProxy.default.trigger(_this12, {
3580
3722
  file: 'meeting/index',
3581
3723
  function: 'setupLocusControlsListener'
@@ -3583,8 +3725,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3583
3725
  state: state
3584
3726
  });
3585
3727
  });
3586
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_PRACTICE_SESSION_STATUS_UPDATED, function (_ref24) {
3587
- var state = _ref24.state;
3728
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_PRACTICE_SESSION_STATUS_UPDATED, function (_ref28) {
3729
+ var state = _ref28.state;
3588
3730
  _this12.webinar.updatePracticeSessionStatus(state);
3589
3731
  _triggerProxy.default.trigger(_this12, {
3590
3732
  file: 'meeting/index',
@@ -3593,8 +3735,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3593
3735
  state: state
3594
3736
  });
3595
3737
  });
3596
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_STAGE_VIEW_UPDATED, function (_ref25) {
3597
- var state = _ref25.state;
3738
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_STAGE_VIEW_UPDATED, function (_ref29) {
3739
+ var state = _ref29.state;
3598
3740
  _triggerProxy.default.trigger(_this12, {
3599
3741
  file: 'meeting/index',
3600
3742
  function: 'setupLocusControlsListener'
@@ -3602,8 +3744,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3602
3744
  state: state
3603
3745
  });
3604
3746
  });
3605
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_VIDEO_CHANGED, function (_ref26) {
3606
- var state = _ref26.state;
3747
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_VIDEO_CHANGED, function (_ref30) {
3748
+ var state = _ref30.state;
3607
3749
  _triggerProxy.default.trigger(_this12, {
3608
3750
  file: 'meeting/index',
3609
3751
  function: 'setupLocusControlsListener'
@@ -3611,8 +3753,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3611
3753
  state: state
3612
3754
  });
3613
3755
  });
3614
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_AUTO_END_MEETING_WARNING_CHANGED, function (_ref27) {
3615
- var state = _ref27.state;
3756
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_AUTO_END_MEETING_WARNING_CHANGED, function (_ref31) {
3757
+ var state = _ref31.state;
3616
3758
  _triggerProxy.default.trigger(_this12, {
3617
3759
  file: 'meeting/index',
3618
3760
  function: 'setupLocusControlsListener'
@@ -3620,8 +3762,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3620
3762
  state: state
3621
3763
  });
3622
3764
  });
3623
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_ANNOTATION_CHANGED, function (_ref28) {
3624
- var state = _ref28.state;
3765
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_ANNOTATION_CHANGED, function (_ref32) {
3766
+ var state = _ref32.state;
3625
3767
  _triggerProxy.default.trigger(_this12, {
3626
3768
  file: 'meeting/index',
3627
3769
  function: 'setupLocusControlsListener'
@@ -3629,8 +3771,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3629
3771
  state: state
3630
3772
  });
3631
3773
  });
3632
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_REMOTE_DESKTOP_CONTROL_CHANGED, function (_ref29) {
3633
- var state = _ref29.state;
3774
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_REMOTE_DESKTOP_CONTROL_CHANGED, function (_ref33) {
3775
+ var state = _ref33.state;
3634
3776
  _triggerProxy.default.trigger(_this12, {
3635
3777
  file: 'meeting/index',
3636
3778
  function: 'setupLocusControlsListener'
@@ -3638,8 +3780,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3638
3780
  state: state
3639
3781
  });
3640
3782
  });
3641
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_POLLING_QA_CHANGED, function (_ref30) {
3642
- var state = _ref30.state;
3783
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_POLLING_QA_CHANGED, function (_ref34) {
3784
+ var state = _ref34.state;
3643
3785
  _triggerProxy.default.trigger(_this12, {
3644
3786
  file: 'meeting/index',
3645
3787
  function: 'setupLocusControlsListener'
@@ -3686,21 +3828,21 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3686
3828
  var _this13 = this;
3687
3829
  // Will get triggered on local and remote share
3688
3830
  this.locusInfo.on(_constants.EVENTS.LOCUS_INFO_UPDATE_MEDIA_SHARES, /*#__PURE__*/function () {
3689
- var _ref31 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee8(payload) {
3831
+ var _ref35 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee0(payload) {
3690
3832
  var _payload$previous, _payload$previous2;
3691
- var _payload$current, contentShare, whiteboardShare, previousContentShare, previousWhiteboardShare, newShareStatus, _this13$locusInfo, _this13$locusInfo$inf, _this13$webinar, oldShareStatus, sendStartedSharingRemote, _this13$mediaProperti, _t6, _t7;
3692
- return _regenerator.default.wrap(function (_context8) {
3693
- while (1) switch (_context8.prev = _context8.next) {
3833
+ var _payload$current, contentShare, whiteboardShare, previousContentShare, previousWhiteboardShare, newShareStatus, _this13$locusInfo, _this13$locusInfo$inf, _this13$webinar, oldShareStatus, sendStartedSharingRemote, _this13$mediaProperti, _t7, _t8;
3834
+ return _regenerator.default.wrap(function (_context0) {
3835
+ while (1) switch (_context0.prev = _context0.next) {
3694
3836
  case 0:
3695
3837
  _payload$current = payload.current, contentShare = _payload$current.content, whiteboardShare = _payload$current.whiteboard;
3696
3838
  previousContentShare = (_payload$previous = payload.previous) === null || _payload$previous === void 0 ? void 0 : _payload$previous.content;
3697
3839
  previousWhiteboardShare = (_payload$previous2 = payload.previous) === null || _payload$previous2 === void 0 ? void 0 : _payload$previous2.whiteboard;
3698
3840
  _this13.triggerAnnotationInfoEvent(contentShare, previousContentShare);
3699
3841
  if (!(!payload.forceUpdate && contentShare.beneficiaryId === (previousContentShare === null || previousContentShare === void 0 ? void 0 : previousContentShare.beneficiaryId) && contentShare.disposition === (previousContentShare === null || previousContentShare === void 0 ? void 0 : previousContentShare.disposition) && contentShare.deviceUrlSharing === previousContentShare.deviceUrlSharing && whiteboardShare.beneficiaryId === (previousWhiteboardShare === null || previousWhiteboardShare === void 0 ? void 0 : previousWhiteboardShare.beneficiaryId) && whiteboardShare.disposition === (previousWhiteboardShare === null || previousWhiteboardShare === void 0 ? void 0 : previousWhiteboardShare.disposition) && whiteboardShare.resourceUrl === (previousWhiteboardShare === null || previousWhiteboardShare === void 0 ? void 0 : previousWhiteboardShare.resourceUrl) && contentShare.resourceType === (previousContentShare === null || previousContentShare === void 0 ? void 0 : previousContentShare.resourceType))) {
3700
- _context8.next = 1;
3842
+ _context0.next = 1;
3701
3843
  break;
3702
3844
  }
3703
- return _context8.abrupt("return");
3845
+ return _context0.abrupt("return");
3704
3846
  case 1:
3705
3847
  newShareStatus = _this13.shareStatus; // REMOTE - check if remote started sharing
3706
3848
  if (_this13.selfId !== contentShare.beneficiaryId && contentShare.disposition === _constants.FLOOR_ACTION.GRANTED) {
@@ -3738,22 +3880,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3738
3880
  }
3739
3881
  _loggerProxy.default.logger.info("Meeting:index#setUpLocusInfoMediaInactiveListener --> this.shareStatus=".concat(_this13.shareStatus, " newShareStatus=").concat(newShareStatus));
3740
3882
  if (!(newShareStatus !== _this13.shareStatus)) {
3741
- _context8.next = 17;
3883
+ _context0.next = 17;
3742
3884
  break;
3743
3885
  }
3744
3886
  oldShareStatus = _this13.shareStatus; // update our state before we send out any notifications
3745
3887
  _this13.shareStatus = newShareStatus;
3746
3888
 
3747
3889
  // send out "stop" notifications for the old state
3748
- _t6 = oldShareStatus;
3749
- _context8.next = _t6 === _constants.SHARE_STATUS.REMOTE_SHARE_ACTIVE ? 2 : _t6 === _constants.SHARE_STATUS.LOCAL_SHARE_ACTIVE ? 3 : _t6 === _constants.SHARE_STATUS.WHITEBOARD_SHARE_ACTIVE ? 4 : _t6 === _constants.SHARE_STATUS.NO_SHARE ? 5 : 6;
3890
+ _t7 = oldShareStatus;
3891
+ _context0.next = _t7 === _constants.SHARE_STATUS.REMOTE_SHARE_ACTIVE ? 2 : _t7 === _constants.SHARE_STATUS.LOCAL_SHARE_ACTIVE ? 3 : _t7 === _constants.SHARE_STATUS.WHITEBOARD_SHARE_ACTIVE ? 4 : _t7 === _constants.SHARE_STATUS.NO_SHARE ? 5 : 6;
3750
3892
  break;
3751
3893
  case 2:
3752
3894
  _triggerProxy.default.trigger(_this13, {
3753
3895
  file: 'meetings/index',
3754
3896
  function: 'remoteShare'
3755
3897
  }, _constants.EVENT_TRIGGERS.MEETING_STOPPED_SHARING_REMOTE);
3756
- return _context8.abrupt("continue", 7);
3898
+ return _context0.abrupt("continue", 7);
3757
3899
  case 3:
3758
3900
  _triggerProxy.default.trigger(_this13, {
3759
3901
  file: 'meeting/index',
@@ -3761,7 +3903,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3761
3903
  }, _constants.EVENT_TRIGGERS.MEETING_STOPPED_SHARING_LOCAL, {
3762
3904
  reason: _constants.SHARE_STOPPED_REASON.SELF_STOPPED
3763
3905
  });
3764
- return _context8.abrupt("continue", 7);
3906
+ return _context0.abrupt("continue", 7);
3765
3907
  case 4:
3766
3908
  _triggerProxy.default.trigger(_this13, {
3767
3909
  file: 'meeting/index',
@@ -3784,14 +3926,14 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3784
3926
  meetingId: _this13.id
3785
3927
  }
3786
3928
  });
3787
- return _context8.abrupt("continue", 7);
3929
+ return _context0.abrupt("continue", 7);
3788
3930
  case 5:
3789
- return _context8.abrupt("continue", 7);
3931
+ return _context0.abrupt("continue", 7);
3790
3932
  case 6:
3791
- return _context8.abrupt("continue", 7);
3933
+ return _context0.abrupt("continue", 7);
3792
3934
  case 7:
3793
- _t7 = newShareStatus;
3794
- _context8.next = _t7 === _constants.SHARE_STATUS.REMOTE_SHARE_ACTIVE ? 8 : _t7 === _constants.SHARE_STATUS.LOCAL_SHARE_ACTIVE ? 12 : _t7 === _constants.SHARE_STATUS.WHITEBOARD_SHARE_ACTIVE ? 13 : _t7 === _constants.SHARE_STATUS.NO_SHARE ? 14 : 15;
3935
+ _t8 = newShareStatus;
3936
+ _context0.next = _t8 === _constants.SHARE_STATUS.REMOTE_SHARE_ACTIVE ? 8 : _t8 === _constants.SHARE_STATUS.LOCAL_SHARE_ACTIVE ? 12 : _t8 === _constants.SHARE_STATUS.WHITEBOARD_SHARE_ACTIVE ? 13 : _t8 === _constants.SHARE_STATUS.NO_SHARE ? 14 : 15;
3795
3937
  break;
3796
3938
  case 8:
3797
3939
  sendStartedSharingRemote = function sendStartedSharingRemote() {
@@ -3817,19 +3959,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3817
3959
  resourceType: contentShare.resourceType
3818
3960
  });
3819
3961
  };
3820
- _context8.prev = 9;
3962
+ _context0.prev = 9;
3821
3963
  if (!((_this13$mediaProperti = _this13.mediaProperties.mediaDirection) !== null && _this13$mediaProperti !== void 0 && _this13$mediaProperti.sendShare && oldShareStatus === _constants.SHARE_STATUS.LOCAL_SHARE_ACTIVE)) {
3822
- _context8.next = 10;
3964
+ _context0.next = 10;
3823
3965
  break;
3824
3966
  }
3825
- _context8.next = 10;
3967
+ _context0.next = 10;
3826
3968
  return _this13.unpublishStreams([_this13.mediaProperties.shareVideoStream, _this13.mediaProperties.shareAudioStream]);
3827
3969
  case 10:
3828
- _context8.prev = 10;
3970
+ _context0.prev = 10;
3829
3971
  sendStartedSharingRemote();
3830
- return _context8.finish(10);
3972
+ return _context0.finish(10);
3831
3973
  case 11:
3832
- return _context8.abrupt("continue", 16);
3974
+ return _context0.abrupt("continue", 16);
3833
3975
  case 12:
3834
3976
  _triggerProxy.default.trigger(_this13, {
3835
3977
  file: 'meeting/index',
@@ -3846,7 +3988,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3846
3988
  meetingId: _this13.id
3847
3989
  }
3848
3990
  });
3849
- return _context8.abrupt("continue", 16);
3991
+ return _context0.abrupt("continue", 16);
3850
3992
  case 13:
3851
3993
  _triggerProxy.default.trigger(_this13, {
3852
3994
  file: 'meeting/index',
@@ -3865,14 +4007,14 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3865
4007
  meetingId: _this13.id
3866
4008
  }
3867
4009
  });
3868
- return _context8.abrupt("continue", 16);
4010
+ return _context0.abrupt("continue", 16);
3869
4011
  case 14:
3870
- return _context8.abrupt("continue", 16);
4012
+ return _context0.abrupt("continue", 16);
3871
4013
  case 15:
3872
- return _context8.abrupt("continue", 16);
4014
+ return _context0.abrupt("continue", 16);
3873
4015
  case 16:
3874
4016
  _this13.members.locusMediaSharesUpdate(payload);
3875
- _context8.next = 18;
4017
+ _context0.next = 18;
3876
4018
  break;
3877
4019
  case 17:
3878
4020
  if (newShareStatus === _constants.SHARE_STATUS.REMOTE_SHARE_ACTIVE) {
@@ -3916,12 +4058,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3916
4058
  }
3917
4059
  case 18:
3918
4060
  case "end":
3919
- return _context8.stop();
4061
+ return _context0.stop();
3920
4062
  }
3921
- }, _callee8, null, [[9,, 10, 11]]);
4063
+ }, _callee0, null, [[9,, 10, 11]]);
3922
4064
  }));
3923
4065
  return function (_x8) {
3924
- return _ref31.apply(this, arguments);
4066
+ return _ref35.apply(this, arguments);
3925
4067
  };
3926
4068
  }());
3927
4069
  }
@@ -3950,6 +4092,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3950
4092
  _this14.recordingController.setLocusUrl(_this14.locusUrl);
3951
4093
  _this14.controlsOptionsManager.setLocusUrl(_this14.locusUrl, !!isMainLocus);
3952
4094
  _this14.webinar.locusUrlUpdate(url);
4095
+ // @ts-ignore
4096
+ _this14.webex.internal.llm.setRefreshHandler(function () {
4097
+ return _this14.refreshDataChannelToken();
4098
+ });
3953
4099
  _triggerProxy.default.trigger(_this14, {
3954
4100
  file: 'meeting/index',
3955
4101
  function: 'setUpLocusSelfListener'
@@ -3973,12 +4119,13 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3973
4119
  value: function setUpLocusServicesListener() {
3974
4120
  var _this15 = this;
3975
4121
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.LINKS_SERVICES, function (payload) {
3976
- var _payload$services, _payload$services$rec, _this15$locusInfo, _this15$locusInfo$ful, _payload$services2, _payload$services2$br, _payload$services3, _payload$services3$ap, _payload$services4, _payload$services4$ap;
4122
+ var _payload$services, _payload$services$rec, _this15$locusInfo, _this15$locusInfo$ful, _payload$services2, _payload$services2$br, _payload$services3, _payload$services3$ap, _payload$services4, _payload$services4$ap, _payload$services5, _payload$services5$ap;
3977
4123
  _this15.recordingController.setServiceUrl(payload === null || payload === void 0 ? void 0 : (_payload$services = payload.services) === null || _payload$services === void 0 ? void 0 : (_payload$services$rec = _payload$services.record) === null || _payload$services$rec === void 0 ? void 0 : _payload$services$rec.url);
3978
4124
  _this15.recordingController.setSessionId((_this15$locusInfo = _this15.locusInfo) === null || _this15$locusInfo === void 0 ? void 0 : (_this15$locusInfo$ful = _this15$locusInfo.fullState) === null || _this15$locusInfo$ful === void 0 ? void 0 : _this15$locusInfo$ful.sessionId);
3979
4125
  _this15.breakouts.breakoutServiceUrlUpdate(payload === null || payload === void 0 ? void 0 : (_payload$services2 = payload.services) === null || _payload$services2 === void 0 ? void 0 : (_payload$services2$br = _payload$services2.breakout) === null || _payload$services2$br === void 0 ? void 0 : _payload$services2$br.url);
3980
4126
  _this15.annotation.approvalUrlUpdate(payload === null || payload === void 0 ? void 0 : (_payload$services3 = payload.services) === null || _payload$services3 === void 0 ? void 0 : (_payload$services3$ap = _payload$services3.approval) === null || _payload$services3$ap === void 0 ? void 0 : _payload$services3$ap.url);
3981
4127
  _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);
4128
+ _this15.aiEnableRequest.approvalUrlUpdate(payload === null || payload === void 0 ? void 0 : (_payload$services5 = payload.services) === null || _payload$services5 === void 0 ? void 0 : (_payload$services5$ap = _payload$services5.approval) === null || _payload$services5$ap === void 0 ? void 0 : _payload$services5$ap.url);
3982
4129
  });
3983
4130
  }
3984
4131
 
@@ -4037,8 +4184,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4037
4184
  });
4038
4185
  }
4039
4186
  });
4040
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.MEETING_INFO_UPDATED, function (_ref32) {
4041
- var isInitializing = _ref32.isInitializing;
4187
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.MEETING_INFO_UPDATED, function (_ref36) {
4188
+ var isInitializing = _ref36.isInitializing;
4042
4189
  _this17.updateMeetingActions();
4043
4190
  _this17.recordingController.setDisplayHints(_this17.userDisplayHints);
4044
4191
  _this17.recordingController.setUserPolicy(_this17.selfUserPolicies);
@@ -4065,6 +4212,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4065
4212
  // @ts-ignore - config coming from registerPlugin
4066
4213
  if (datachannelUrl && this.config.enableAutomaticLLM) {
4067
4214
  this.updateLLMConnection();
4215
+ if (this.webinar.isJoinPracticeSessionDataChannel()) {
4216
+ this.webinar.updatePSDataChannel();
4217
+ }
4068
4218
  }
4069
4219
  }
4070
4220
 
@@ -4176,10 +4326,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4176
4326
  _this19.updateLLMConnection();
4177
4327
  });
4178
4328
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_ADMITTED_GUEST, /*#__PURE__*/function () {
4179
- var _ref33 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee9(payload) {
4329
+ var _ref37 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee1(payload) {
4180
4330
  var _this19$rtcMetrics;
4181
- return _regenerator.default.wrap(function (_context9) {
4182
- while (1) switch (_context9.prev = _context9.next) {
4331
+ return _regenerator.default.wrap(function (_context1) {
4332
+ while (1) switch (_context1.prev = _context1.next) {
4183
4333
  case 0:
4184
4334
  _this19.stopKeepAlive();
4185
4335
  if (payload) {
@@ -4205,12 +4355,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4205
4355
  _this19.updateLLMConnection();
4206
4356
  case 1:
4207
4357
  case "end":
4208
- return _context9.stop();
4358
+ return _context1.stop();
4209
4359
  }
4210
- }, _callee9);
4360
+ }, _callee1);
4211
4361
  }));
4212
4362
  return function (_x9) {
4213
- return _ref33.apply(this, arguments);
4363
+ return _ref37.apply(this, arguments);
4214
4364
  };
4215
4365
  }());
4216
4366
 
@@ -4262,6 +4412,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4262
4412
  function: 'setUpLocusInfoSelfListener'
4263
4413
  }, _constants.EVENT_TRIGGERS.MEETING_BREAKOUTS_UPDATE);
4264
4414
  });
4415
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_ID_CHANGED, function (payload) {
4416
+ _this19.aiEnableRequest.selfParticipantIdUpdate(payload.selfId);
4417
+ });
4265
4418
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_MEETING_INTERPRETATION_CHANGED, function (payload) {
4266
4419
  var targetChanged = _this19.simultaneousInterpretation.updateSelfInterpretation(payload);
4267
4420
  _triggerProxy.default.trigger(_this19, {
@@ -4329,49 +4482,49 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4329
4482
  }
4330
4483
  });
4331
4484
  this.locusInfo.on(_constants.EVENTS.DESTROY_MEETING, /*#__PURE__*/function () {
4332
- var _ref34 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee0(payload) {
4333
- var _t8;
4334
- return _regenerator.default.wrap(function (_context0) {
4335
- while (1) switch (_context0.prev = _context0.next) {
4485
+ var _ref38 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee10(payload) {
4486
+ var _t9;
4487
+ return _regenerator.default.wrap(function (_context10) {
4488
+ while (1) switch (_context10.prev = _context10.next) {
4336
4489
  case 0:
4337
4490
  if (!_this20.wirelessShare) {
4338
- _context0.next = 2;
4491
+ _context10.next = 2;
4339
4492
  break;
4340
4493
  }
4341
4494
  if (!_this20.mediaProperties.shareVideoStream) {
4342
- _context0.next = 1;
4495
+ _context10.next = 1;
4343
4496
  break;
4344
4497
  }
4345
- _context0.next = 1;
4498
+ _context10.next = 1;
4346
4499
  return _this20.setLocalShareVideoStream(undefined);
4347
4500
  case 1:
4348
4501
  if (!_this20.mediaProperties.shareAudioStream) {
4349
- _context0.next = 2;
4502
+ _context10.next = 2;
4350
4503
  break;
4351
4504
  }
4352
- _context0.next = 2;
4505
+ _context10.next = 2;
4353
4506
  return _this20.setLocalShareAudioStream(undefined);
4354
4507
  case 2:
4355
4508
  if (!payload.shouldLeave) {
4356
- _context0.next = 7;
4509
+ _context10.next = 7;
4357
4510
  break;
4358
4511
  }
4359
- _context0.prev = 3;
4360
- _context0.next = 4;
4512
+ _context10.prev = 3;
4513
+ _context10.next = 4;
4361
4514
  return _this20.leave({
4362
4515
  reason: payload.reason
4363
4516
  });
4364
4517
  case 4:
4365
4518
  _loggerProxy.default.logger.warn('Meeting:index#setUpLocusInfoMeetingListener --> DESTROY_MEETING. The meeting has been left, but has not been destroyed, you should see a later event for leave.');
4366
- _context0.next = 6;
4519
+ _context10.next = 6;
4367
4520
  break;
4368
4521
  case 5:
4369
- _context0.prev = 5;
4370
- _t8 = _context0["catch"](3);
4522
+ _context10.prev = 5;
4523
+ _t9 = _context10["catch"](3);
4371
4524
  // @ts-ignore
4372
- _loggerProxy.default.logger.error("Meeting:index#setUpLocusInfoMeetingListener --> DESTROY_MEETING. Issue with leave for meeting, meeting still in collection: ".concat(_this20, ", error: ").concat(_t8));
4525
+ _loggerProxy.default.logger.error("Meeting:index#setUpLocusInfoMeetingListener --> DESTROY_MEETING. Issue with leave for meeting, meeting still in collection: ".concat(_this20, ", error: ").concat(_t9));
4373
4526
  case 6:
4374
- _context0.next = 8;
4527
+ _context10.next = 8;
4375
4528
  break;
4376
4529
  case 7:
4377
4530
  _loggerProxy.default.logger.info('Meeting:index#setUpLocusInfoMeetingListener --> MEETING_REMOVED_REASON', payload.reason);
@@ -4385,12 +4538,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4385
4538
  });
4386
4539
  case 8:
4387
4540
  case "end":
4388
- return _context0.stop();
4541
+ return _context10.stop();
4389
4542
  }
4390
- }, _callee0, null, [[3, 5]]);
4543
+ }, _callee10, null, [[3, 5]]);
4391
4544
  }));
4392
4545
  return function (_x0) {
4393
- return _ref34.apply(this, arguments);
4546
+ return _ref38.apply(this, arguments);
4394
4547
  };
4395
4548
  }());
4396
4549
  }
@@ -4508,31 +4661,31 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4508
4661
  }, {
4509
4662
  key: "beRightBack",
4510
4663
  value: (function () {
4511
- var _beRightBack = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee1(enabled) {
4664
+ var _beRightBack = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee11(enabled) {
4512
4665
  var _this22 = this;
4513
4666
  var errorMessage, error, _errorMessage, _error;
4514
- return _regenerator.default.wrap(function (_context1) {
4515
- while (1) switch (_context1.prev = _context1.next) {
4667
+ return _regenerator.default.wrap(function (_context11) {
4668
+ while (1) switch (_context11.prev = _context11.next) {
4516
4669
  case 0:
4517
4670
  if (this.isMultistream) {
4518
- _context1.next = 1;
4671
+ _context11.next = 1;
4519
4672
  break;
4520
4673
  }
4521
4674
  errorMessage = 'Meeting:index#beRightBack --> Not a multistream meeting';
4522
4675
  error = new Error(errorMessage);
4523
4676
  _loggerProxy.default.logger.error(error);
4524
- return _context1.abrupt("return", _promise.default.reject(error));
4677
+ return _context11.abrupt("return", _promise.default.reject(error));
4525
4678
  case 1:
4526
4679
  if (this.mediaProperties.webrtcMediaConnection) {
4527
- _context1.next = 2;
4680
+ _context11.next = 2;
4528
4681
  break;
4529
4682
  }
4530
4683
  _errorMessage = 'Meeting:index#beRightBack --> WebRTC media connection is not defined';
4531
4684
  _error = new Error(_errorMessage);
4532
4685
  _loggerProxy.default.logger.error(_error);
4533
- return _context1.abrupt("return", _promise.default.reject(_error));
4686
+ return _context11.abrupt("return", _promise.default.reject(_error));
4534
4687
  case 2:
4535
- return _context1.abrupt("return", this.brbState.enable(enabled, this.sendSlotManager).then(function () {
4688
+ return _context11.abrupt("return", this.brbState.enable(enabled, this.sendSlotManager).then(function () {
4536
4689
  if (_this22.audio && enabled) {
4537
4690
  // locus mutes the participant with brb enabled request,
4538
4691
  // so we need to explicitly update remote mute for correct logic flow
@@ -4543,9 +4696,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4543
4696
  }));
4544
4697
  case 3:
4545
4698
  case "end":
4546
- return _context1.stop();
4699
+ return _context11.stop();
4547
4700
  }
4548
- }, _callee1, this);
4701
+ }, _callee11, this);
4549
4702
  }));
4550
4703
  function beRightBack(_x1) {
4551
4704
  return _beRightBack.apply(this, arguments);
@@ -4743,6 +4896,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4743
4896
  canLowerAllHands: _util2.default.canUserLowerAllHands(this.userDisplayHints),
4744
4897
  canLowerSomeoneElsesHand: _util2.default.canUserLowerSomeoneElsesHand(this.userDisplayHints),
4745
4898
  bothLeaveAndEndMeetingAvailable: _util2.default.bothLeaveAndEndMeetingAvailable(this.userDisplayHints),
4899
+ requireHostEndMeetingBeforeLeave: _util2.default.requireHostEndMeetingBeforeLeave(this.userDisplayHints),
4746
4900
  canEnableClosedCaption: _util2.default.canEnableClosedCaption(this.userDisplayHints),
4747
4901
  canStartTranscribing: _util2.default.canStartTranscribing(this.userDisplayHints),
4748
4902
  canStopTranscribing: _util2.default.canStopTranscribing(this.userDisplayHints),
@@ -4972,7 +5126,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4972
5126
  canDisablePollingQA: _util5.default.hasHints({
4973
5127
  requiredHints: [_constants.DISPLAY_HINTS.DISABLE_ATTENDEE_START_POLLING_QA],
4974
5128
  displayHints: this.userDisplayHints
4975
- })
5129
+ }),
5130
+ canAttendeeRequestAiAssistantEnabled: _util2.default.canAttendeeRequestAiAssistantEnabled(this.userDisplayHints, this.roles),
5131
+ isAttendeeRequestAiAssistantDeclinedAll: _util2.default.attendeeRequestAiAssistantDeclinedAll(this.userDisplayHints)
4976
5132
  }) || changed;
4977
5133
  }
4978
5134
  if (changed) {
@@ -5054,7 +5210,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5054
5210
  this.locusInfo.initialSetup({
5055
5211
  trigger: 'join-response',
5056
5212
  locus: mtgLocus,
5057
- dataSets: data.dataSets
5213
+ dataSets: data.dataSets,
5214
+ metadata: data.metadata
5058
5215
  });
5059
5216
  }
5060
5217
 
@@ -5169,10 +5326,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5169
5326
  key: "closeRemoteStreams",
5170
5327
  value: function closeRemoteStreams() {
5171
5328
  var _this24 = this;
5172
- var _this$mediaProperties6 = this.mediaProperties,
5173
- remoteAudioStream = _this$mediaProperties6.remoteAudioStream,
5174
- remoteVideoStream = _this$mediaProperties6.remoteVideoStream,
5175
- remoteShareStream = _this$mediaProperties6.remoteShareStream;
5329
+ var _this$mediaProperties7 = this.mediaProperties,
5330
+ remoteAudioStream = _this$mediaProperties7.remoteAudioStream,
5331
+ remoteVideoStream = _this$mediaProperties7.remoteVideoStream,
5332
+ remoteShareStream = _this$mediaProperties7.remoteShareStream;
5176
5333
 
5177
5334
  /**
5178
5335
  * Triggers an event to the developer
@@ -5216,11 +5373,11 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5216
5373
  }, {
5217
5374
  key: "setLocalAudioStream",
5218
5375
  value: (function () {
5219
- var _setLocalAudioStream = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee10(localStream) {
5376
+ var _setLocalAudioStream = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee12(localStream) {
5220
5377
  var _this$audio2;
5221
5378
  var oldStream;
5222
- return _regenerator.default.wrap(function (_context10) {
5223
- while (1) switch (_context10.prev = _context10.next) {
5379
+ return _regenerator.default.wrap(function (_context12) {
5380
+ while (1) switch (_context12.prev = _context12.next) {
5224
5381
  case 0:
5225
5382
  oldStream = this.mediaProperties.audioStream;
5226
5383
  oldStream === null || oldStream === void 0 ? void 0 : oldStream.off(_mediaHelpers.LocalStreamEventNames.UserMuteStateChange, this.localAudioStreamMuteStateHandler);
@@ -5234,19 +5391,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5234
5391
  localStream === null || localStream === void 0 ? void 0 : localStream.on(_mediaHelpers.LocalStreamEventNames.SystemMuteStateChange, this.localAudioStreamMuteStateHandler);
5235
5392
  localStream === null || localStream === void 0 ? void 0 : localStream.on(_mediaHelpers.LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);
5236
5393
  if (!(!this.isMultistream || !localStream)) {
5237
- _context10.next = 1;
5394
+ _context12.next = 1;
5238
5395
  break;
5239
5396
  }
5240
- _context10.next = 1;
5397
+ _context12.next = 1;
5241
5398
  return this.unpublishStream(_internalMediaCore.MediaType.AudioMain, oldStream);
5242
5399
  case 1:
5243
- _context10.next = 2;
5400
+ _context12.next = 2;
5244
5401
  return this.publishStream(_internalMediaCore.MediaType.AudioMain, this.mediaProperties.audioStream);
5245
5402
  case 2:
5246
5403
  case "end":
5247
- return _context10.stop();
5404
+ return _context12.stop();
5248
5405
  }
5249
- }, _callee10, this);
5406
+ }, _callee12, this);
5250
5407
  }));
5251
5408
  function setLocalAudioStream(_x10) {
5252
5409
  return _setLocalAudioStream.apply(this, arguments);
@@ -5264,16 +5421,17 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5264
5421
  }, {
5265
5422
  key: "setLocalVideoStream",
5266
5423
  value: (function () {
5267
- var _setLocalVideoStream = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee11(localStream) {
5424
+ var _setLocalVideoStream = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee13(localStream) {
5268
5425
  var _this$video2;
5269
5426
  var oldStream;
5270
- return _regenerator.default.wrap(function (_context11) {
5271
- while (1) switch (_context11.prev = _context11.next) {
5427
+ return _regenerator.default.wrap(function (_context13) {
5428
+ while (1) switch (_context13.prev = _context13.next) {
5272
5429
  case 0:
5273
5430
  oldStream = this.mediaProperties.videoStream;
5274
5431
  oldStream === null || oldStream === void 0 ? void 0 : oldStream.off(_mediaHelpers.LocalStreamEventNames.UserMuteStateChange, this.localVideoStreamMuteStateHandler);
5275
5432
  oldStream === null || oldStream === void 0 ? void 0 : oldStream.off(_mediaHelpers.LocalStreamEventNames.SystemMuteStateChange, this.localVideoStreamMuteStateHandler);
5276
5433
  oldStream === null || oldStream === void 0 ? void 0 : oldStream.off(_mediaHelpers.LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);
5434
+ oldStream === null || oldStream === void 0 ? void 0 : oldStream.off(_mediaHelpers.LocalStreamEventNames.ConstraintsChange, this.localConstraintsChangeHandler);
5277
5435
 
5278
5436
  // we don't update this.mediaProperties.mediaDirection.sendVideo, because we always keep it as true to avoid extra SDP exchanges
5279
5437
  this.mediaProperties.setLocalVideoStream(localStream);
@@ -5281,20 +5439,21 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5281
5439
  localStream === null || localStream === void 0 ? void 0 : localStream.on(_mediaHelpers.LocalStreamEventNames.UserMuteStateChange, this.localVideoStreamMuteStateHandler);
5282
5440
  localStream === null || localStream === void 0 ? void 0 : localStream.on(_mediaHelpers.LocalStreamEventNames.SystemMuteStateChange, this.localVideoStreamMuteStateHandler);
5283
5441
  localStream === null || localStream === void 0 ? void 0 : localStream.on(_mediaHelpers.LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);
5442
+ localStream === null || localStream === void 0 ? void 0 : localStream.on(_mediaHelpers.LocalStreamEventNames.ConstraintsChange, this.localConstraintsChangeHandler);
5284
5443
  if (!(!this.isMultistream || !localStream)) {
5285
- _context11.next = 1;
5444
+ _context13.next = 1;
5286
5445
  break;
5287
5446
  }
5288
- _context11.next = 1;
5447
+ _context13.next = 1;
5289
5448
  return this.unpublishStream(_internalMediaCore.MediaType.VideoMain, oldStream);
5290
5449
  case 1:
5291
- _context11.next = 2;
5450
+ _context13.next = 2;
5292
5451
  return this.publishStream(_internalMediaCore.MediaType.VideoMain, this.mediaProperties.videoStream);
5293
5452
  case 2:
5294
5453
  case "end":
5295
- return _context11.stop();
5454
+ return _context13.stop();
5296
5455
  }
5297
- }, _callee11, this);
5456
+ }, _callee13, this);
5298
5457
  }));
5299
5458
  function setLocalVideoStream(_x11) {
5300
5459
  return _setLocalVideoStream.apply(this, arguments);
@@ -5313,10 +5472,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5313
5472
  }, {
5314
5473
  key: "setLocalShareVideoStream",
5315
5474
  value: (function () {
5316
- var _setLocalShareVideoStream = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee12(localDisplayStream) {
5475
+ var _setLocalShareVideoStream = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee14(localDisplayStream) {
5317
5476
  var oldStream;
5318
- return _regenerator.default.wrap(function (_context12) {
5319
- while (1) switch (_context12.prev = _context12.next) {
5477
+ return _regenerator.default.wrap(function (_context14) {
5478
+ while (1) switch (_context14.prev = _context14.next) {
5320
5479
  case 0:
5321
5480
  oldStream = this.mediaProperties.shareVideoStream;
5322
5481
  oldStream === null || oldStream === void 0 ? void 0 : oldStream.off(_mediaHelpers.LocalStreamEventNames.SystemMuteStateChange, this.handleShareVideoStreamMuteStateChange);
@@ -5328,19 +5487,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5328
5487
  localDisplayStream === null || localDisplayStream === void 0 ? void 0 : localDisplayStream.on(_mediaHelpers.LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);
5329
5488
  this.mediaProperties.mediaDirection.sendShare = this.mediaProperties.hasLocalShareStream();
5330
5489
  if (!(!this.isMultistream || !localDisplayStream)) {
5331
- _context12.next = 1;
5490
+ _context14.next = 1;
5332
5491
  break;
5333
5492
  }
5334
- _context12.next = 1;
5493
+ _context14.next = 1;
5335
5494
  return this.unpublishStream(_internalMediaCore.MediaType.VideoSlides, oldStream);
5336
5495
  case 1:
5337
- _context12.next = 2;
5496
+ _context14.next = 2;
5338
5497
  return this.publishStream(_internalMediaCore.MediaType.VideoSlides, this.mediaProperties.shareVideoStream);
5339
5498
  case 2:
5340
5499
  case "end":
5341
- return _context12.stop();
5500
+ return _context14.stop();
5342
5501
  }
5343
- }, _callee12, this);
5502
+ }, _callee14, this);
5344
5503
  }));
5345
5504
  function setLocalShareVideoStream(_x12) {
5346
5505
  return _setLocalShareVideoStream.apply(this, arguments);
@@ -5358,10 +5517,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5358
5517
  }, {
5359
5518
  key: "setLocalShareAudioStream",
5360
5519
  value: (function () {
5361
- var _setLocalShareAudioStream = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee13(localSystemAudioStream) {
5520
+ var _setLocalShareAudioStream = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee15(localSystemAudioStream) {
5362
5521
  var oldStream;
5363
- return _regenerator.default.wrap(function (_context13) {
5364
- while (1) switch (_context13.prev = _context13.next) {
5522
+ return _regenerator.default.wrap(function (_context15) {
5523
+ while (1) switch (_context15.prev = _context15.next) {
5365
5524
  case 0:
5366
5525
  oldStream = this.mediaProperties.shareAudioStream;
5367
5526
  oldStream === null || oldStream === void 0 ? void 0 : oldStream.off(_mediaHelpers.StreamEventNames.Ended, this.handleShareAudioStreamEnded);
@@ -5371,19 +5530,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5371
5530
  localSystemAudioStream === null || localSystemAudioStream === void 0 ? void 0 : localSystemAudioStream.on(_mediaHelpers.LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);
5372
5531
  this.mediaProperties.mediaDirection.sendShare = this.mediaProperties.hasLocalShareStream();
5373
5532
  if (!(!this.isMultistream || !localSystemAudioStream)) {
5374
- _context13.next = 1;
5533
+ _context15.next = 1;
5375
5534
  break;
5376
5535
  }
5377
- _context13.next = 1;
5536
+ _context15.next = 1;
5378
5537
  return this.unpublishStream(_internalMediaCore.MediaType.AudioSlides, oldStream);
5379
5538
  case 1:
5380
- _context13.next = 2;
5539
+ _context15.next = 2;
5381
5540
  return this.publishStream(_internalMediaCore.MediaType.AudioSlides, this.mediaProperties.shareAudioStream);
5382
5541
  case 2:
5383
5542
  case "end":
5384
- return _context13.stop();
5543
+ return _context15.stop();
5385
5544
  }
5386
- }, _callee13, this);
5545
+ }, _callee15, this);
5387
5546
  }));
5388
5547
  function setLocalShareAudioStream(_x13) {
5389
5548
  return _setLocalShareAudioStream.apply(this, arguments);
@@ -5424,17 +5583,18 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5424
5583
  }, {
5425
5584
  key: "cleanupLocalStreams",
5426
5585
  value: function cleanupLocalStreams() {
5427
- var _this$mediaProperties7 = this.mediaProperties,
5428
- audioStream = _this$mediaProperties7.audioStream,
5429
- videoStream = _this$mediaProperties7.videoStream,
5430
- shareAudioStream = _this$mediaProperties7.shareAudioStream,
5431
- shareVideoStream = _this$mediaProperties7.shareVideoStream;
5586
+ var _this$mediaProperties8 = this.mediaProperties,
5587
+ audioStream = _this$mediaProperties8.audioStream,
5588
+ videoStream = _this$mediaProperties8.videoStream,
5589
+ shareAudioStream = _this$mediaProperties8.shareAudioStream,
5590
+ shareVideoStream = _this$mediaProperties8.shareVideoStream;
5432
5591
  audioStream === null || audioStream === void 0 ? void 0 : audioStream.off(_mediaHelpers.LocalStreamEventNames.UserMuteStateChange, this.localAudioStreamMuteStateHandler);
5433
5592
  audioStream === null || audioStream === void 0 ? void 0 : audioStream.off(_mediaHelpers.LocalStreamEventNames.SystemMuteStateChange, this.localAudioStreamMuteStateHandler);
5434
5593
  audioStream === null || audioStream === void 0 ? void 0 : audioStream.off(_mediaHelpers.LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);
5435
5594
  videoStream === null || videoStream === void 0 ? void 0 : videoStream.off(_mediaHelpers.LocalStreamEventNames.UserMuteStateChange, this.localVideoStreamMuteStateHandler);
5436
5595
  videoStream === null || videoStream === void 0 ? void 0 : videoStream.off(_mediaHelpers.LocalStreamEventNames.SystemMuteStateChange, this.localVideoStreamMuteStateHandler);
5437
5596
  videoStream === null || videoStream === void 0 ? void 0 : videoStream.off(_mediaHelpers.LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);
5597
+ videoStream === null || videoStream === void 0 ? void 0 : videoStream.off(_mediaHelpers.LocalStreamEventNames.ConstraintsChange, this.localConstraintsChangeHandler);
5438
5598
  shareAudioStream === null || shareAudioStream === void 0 ? void 0 : shareAudioStream.off(_mediaHelpers.StreamEventNames.Ended, this.handleShareAudioStreamEnded);
5439
5599
  shareAudioStream === null || shareAudioStream === void 0 ? void 0 : shareAudioStream.off(_mediaHelpers.LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);
5440
5600
  shareVideoStream === null || shareVideoStream === void 0 ? void 0 : shareVideoStream.off(_mediaHelpers.LocalStreamEventNames.SystemMuteStateChange, this.handleShareVideoStreamMuteStateChange);
@@ -5823,7 +5983,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5823
5983
  }, {
5824
5984
  key: "joinWithMedia",
5825
5985
  value: (function () {
5826
- var _joinWithMedia = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee14() {
5986
+ var _joinWithMedia = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee16() {
5827
5987
  var _this30 = this;
5828
5988
  var options,
5829
5989
  mediaOptions,
@@ -5846,53 +6006,64 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5846
6006
  shouldRetry,
5847
6007
  _error2,
5848
6008
  _error3,
5849
- _args14 = arguments,
5850
- _t9,
5851
- _t0;
5852
- return _regenerator.default.wrap(function (_context14) {
5853
- while (1) switch (_context14.prev = _context14.next) {
6009
+ _args16 = arguments,
6010
+ _t0,
6011
+ _t1;
6012
+ return _regenerator.default.wrap(function (_context16) {
6013
+ while (1) switch (_context16.prev = _context16.next) {
5854
6014
  case 0:
5855
- options = _args14.length > 0 && _args14[0] !== undefined ? _args14[0] : {};
6015
+ options = _args16.length > 0 && _args16[0] !== undefined ? _args16[0] : {};
5856
6016
  mediaOptions = options.mediaOptions, _options$joinOptions = options.joinOptions, joinOptions = _options$joinOptions === void 0 ? {} : _options$joinOptions;
5857
6017
  _this$joinWithMediaRe = this.joinWithMediaRetryInfo, isRetry = _this$joinWithMediaRe.isRetry, prevJoinResponse = _this$joinWithMediaRe.prevJoinResponse;
5858
6018
  if (mediaOptions !== null && mediaOptions !== void 0 && mediaOptions.allowMediaInLobby) {
5859
- _context14.next = 1;
6019
+ _context16.next = 1;
5860
6020
  break;
5861
6021
  }
5862
- return _context14.abrupt("return", _promise.default.reject(new _parameter.default('joinWithMedia() can only be used with allowMediaInLobby set to true')));
6022
+ return _context16.abrupt("return", _promise.default.reject(new _parameter.default('joinWithMedia() can only be used with allowMediaInLobby set to true')));
5863
6023
  case 1:
5864
6024
  this.allowMediaInLobby = true;
5865
6025
  _loggerProxy.default.logger.info('Meeting:index#joinWithMedia called');
5866
6026
  joined = false;
5867
6027
  joinResponse = prevJoinResponse;
5868
- _context14.prev = 2;
6028
+ /* Before we do anything, check if RTCPeerConnection is available. Normally this is checked
6029
+ by addMediaInternal() itself when creating the media connection, but since joinWithMedia()
6030
+ is a convenience method that does both join() and addMedia(), we want to fail fast here
6031
+ in case WebRTC is not available at all.
6032
+ */
6033
+ if (!(_webCapabilities.WebCapabilities.supportsRTCPeerConnection() === _webCapabilities.CapabilityState.NOT_CAPABLE)) {
6034
+ _context16.next = 2;
6035
+ break;
6036
+ }
6037
+ throw new _internalMediaCore.Errors.WebrtcApiNotAvailableError('RTCPeerConnection API is not available in this environment');
6038
+ case 2:
6039
+ _context16.prev = 2;
5869
6040
  forceTurnDiscovery = false;
5870
6041
  if (joinResponse) {
5871
- _context14.next = 7;
6042
+ _context16.next = 7;
5872
6043
  break;
5873
6044
  }
5874
- _context14.next = 3;
6045
+ _context16.next = 3;
5875
6046
  return this.roap.generateTurnDiscoveryRequestMessage(this, true);
5876
6047
  case 3:
5877
- turnDiscoveryRequest = _context14.sent;
6048
+ turnDiscoveryRequest = _context16.sent;
5878
6049
  turnDiscoverySkippedReason = turnDiscoveryRequest.turnDiscoverySkippedReason;
5879
6050
  joinOptions.roapMessage = turnDiscoveryRequest.roapMessage;
5880
6051
  _loggerProxy.default.logger.info('Meeting:index#joinWithMedia ---> calling join with joinOptions, ', joinOptions);
5881
- _context14.next = 4;
6052
+ _context16.next = 4;
5882
6053
  return this.join(joinOptions);
5883
6054
  case 4:
5884
- joinResponse = _context14.sent;
6055
+ joinResponse = _context16.sent;
5885
6056
  joined = true;
5886
6057
 
5887
6058
  // if we sent out TURN discovery Roap message with join, process the TURN discovery response
5888
6059
  if (!joinOptions.roapMessage) {
5889
- _context14.next = 6;
6060
+ _context16.next = 6;
5890
6061
  break;
5891
6062
  }
5892
- _context14.next = 5;
6063
+ _context16.next = 5;
5893
6064
  return this.roap.handleTurnDiscoveryHttpResponse(this, joinResponse);
5894
6065
  case 5:
5895
- _yield$this$roap$hand = _context14.sent;
6066
+ _yield$this$roap$hand = _context16.sent;
5896
6067
  turnServerInfo = _yield$this$roap$hand.turnServerInfo;
5897
6068
  turnDiscoverySkippedReason = _yield$this$roap$hand.turnDiscoverySkippedReason;
5898
6069
  this.turnDiscoverySkippedReason = turnDiscoverySkippedReason;
@@ -5901,7 +6072,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5901
6072
  this.roap.abortTurnDiscovery();
5902
6073
  }
5903
6074
  case 6:
5904
- _context14.next = 8;
6075
+ _context16.next = 8;
5905
6076
  break;
5906
6077
  case 7:
5907
6078
  // This is a retry, when join succeeded but addMedia failed, so we'll just call addMedia() again,
@@ -5909,43 +6080,43 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5909
6080
  forceTurnDiscovery = true;
5910
6081
  joined = true;
5911
6082
  case 8:
5912
- _context14.next = 9;
6083
+ _context16.next = 9;
5913
6084
  return this.addMediaInternal(function () {
5914
6085
  return _this30.joinWithMediaRetryInfo.isRetry ? 'JOIN_MEETING_FINAL' : 'JOIN_MEETING_RETRY';
5915
6086
  }, turnServerInfo, forceTurnDiscovery, mediaOptions);
5916
6087
  case 9:
5917
- mediaResponse = _context14.sent;
6088
+ mediaResponse = _context16.sent;
5918
6089
  this.joinWithMediaRetryInfo = {
5919
6090
  isRetry: false,
5920
6091
  prevJoinResponse: undefined
5921
6092
  };
5922
- return _context14.abrupt("return", {
6093
+ return _context16.abrupt("return", {
5923
6094
  join: joinResponse,
5924
6095
  media: mediaResponse,
5925
6096
  multistreamEnabled: this.isMultistream
5926
6097
  });
5927
6098
  case 10:
5928
- _context14.prev = 10;
5929
- _t9 = _context14["catch"](2);
5930
- _loggerProxy.default.logger.error('Meeting:index#joinWithMedia --> ', _t9);
6099
+ _context16.prev = 10;
6100
+ _t0 = _context16["catch"](2);
6101
+ _loggerProxy.default.logger.error('Meeting:index#joinWithMedia --> ', _t0);
5931
6102
  this.roap.abortTurnDiscovery();
5932
6103
 
5933
6104
  // if this was the first attempt, let's do a retry
5934
6105
  shouldRetry = !isRetry;
5935
- if (_internalPluginMetrics.CallDiagnosticUtils.isSdpOfferCreationError(_t9)) {
6106
+ if (_internalPluginMetrics.CallDiagnosticUtils.isSdpOfferCreationError(_t0) || _internalPluginMetrics.CallDiagnosticUtils.isWebrtcApiNotAvailableError(_t0)) {
5936
6107
  // errors related to offer creation (for example missing H264 codec) will happen again no matter how many times we try,
5937
6108
  // so there is no point doing a retry
5938
6109
  shouldRetry = false;
5939
6110
  }
5940
- if (_internalPluginMetrics.CallDiagnosticUtils.isBrowserMediaError(_t9)) {
6111
+ if (_internalPluginMetrics.CallDiagnosticUtils.isBrowserMediaError(_t0)) {
5941
6112
  shouldRetry = false;
5942
6113
  // eslint-disable-next-line no-ex-assign
5943
- _t9 = (0, _lodash.merge)({
6114
+ _t0 = (0, _lodash.merge)({
5944
6115
  error: {
5945
6116
  body: {
5946
- errorCode: _internalPluginMetrics.CallDiagnosticUtils.getBrowserMediaErrorCode(_t9),
5947
- message: (_error2 = _t9) === null || _error2 === void 0 ? void 0 : _error2.message,
5948
- name: (_error3 = _t9) === null || _error3 === void 0 ? void 0 : _error3.name
6117
+ errorCode: _internalPluginMetrics.CallDiagnosticUtils.getBrowserMediaErrorCode(_t0),
6118
+ message: (_error2 = _t0) === null || _error2 === void 0 ? void 0 : _error2.message,
6119
+ name: (_error3 = _t0) === null || _error3 === void 0 ? void 0 : _error3.name
5949
6120
  }
5950
6121
  }
5951
6122
  });
@@ -5953,54 +6124,54 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5953
6124
 
5954
6125
  // we only want to call leave if join was successful and this was a retry or we won't be doing any more retries
5955
6126
  if (!(joined && (isRetry || !shouldRetry))) {
5956
- _context14.next = 14;
6127
+ _context16.next = 14;
5957
6128
  break;
5958
6129
  }
5959
- _context14.prev = 11;
5960
- _context14.next = 12;
6130
+ _context16.prev = 11;
6131
+ _context16.next = 12;
5961
6132
  return this.leave({
5962
6133
  resourceId: joinOptions === null || joinOptions === void 0 ? void 0 : joinOptions.resourceId,
5963
6134
  reason: 'joinWithMedia failure'
5964
6135
  });
5965
6136
  case 12:
5966
- _context14.next = 14;
6137
+ _context16.next = 14;
5967
6138
  break;
5968
6139
  case 13:
5969
- _context14.prev = 13;
5970
- _t0 = _context14["catch"](11);
5971
- _loggerProxy.default.logger.error('Meeting:index#joinWithMedia --> leave error', _t0);
5972
- leaveError = _t0;
6140
+ _context16.prev = 13;
6141
+ _t1 = _context16["catch"](11);
6142
+ _loggerProxy.default.logger.error('Meeting:index#joinWithMedia --> leave error', _t1);
6143
+ leaveError = _t1;
5973
6144
  case 14:
5974
6145
  _metrics.default.sendBehavioralMetric(_constants2.default.JOIN_WITH_MEDIA_FAILURE, {
5975
6146
  correlation_id: this.correlationId,
5976
6147
  locus_id: (_this$locusUrl = this.locusUrl) === null || _this$locusUrl === void 0 ? void 0 : _this$locusUrl.split('/').pop(),
5977
6148
  // if join fails, we may end up with no locusUrl
5978
- reason: _t9.message,
5979
- stack: _t9.stack,
6149
+ reason: _t0.message,
6150
+ stack: _t0.stack,
5980
6151
  leaveErrorReason: (_leaveError = leaveError) === null || _leaveError === void 0 ? void 0 : _leaveError.message,
5981
6152
  isRetry: isRetry
5982
6153
  }, {
5983
- type: _t9.name
6154
+ type: _t0.name
5984
6155
  });
5985
6156
  if (!shouldRetry) {
5986
- _context14.next = 15;
6157
+ _context16.next = 15;
5987
6158
  break;
5988
6159
  }
5989
6160
  _loggerProxy.default.logger.warn('Meeting:index#joinWithMedia --> retrying call to joinWithMedia');
5990
6161
  this.joinWithMediaRetryInfo.isRetry = true;
5991
6162
  this.joinWithMediaRetryInfo.prevJoinResponse = joinResponse;
5992
- return _context14.abrupt("return", this.joinWithMedia(options));
6163
+ return _context16.abrupt("return", this.joinWithMedia(options));
5993
6164
  case 15:
5994
6165
  this.joinWithMediaRetryInfo = {
5995
6166
  isRetry: false,
5996
6167
  prevJoinResponse: undefined
5997
6168
  };
5998
- throw _t9;
6169
+ throw _t0;
5999
6170
  case 16:
6000
6171
  case "end":
6001
- return _context14.stop();
6172
+ return _context16.stop();
6002
6173
  }
6003
- }, _callee14, this, [[2, 10], [11, 13]]);
6174
+ }, _callee16, this, [[2, 10], [11, 13]]);
6004
6175
  }));
6005
6176
  function joinWithMedia() {
6006
6177
  return _joinWithMedia.apply(this, arguments);
@@ -6030,20 +6201,20 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6030
6201
  return _promise.default.reject(new _parameter.default('Cannot reconnect, Media has not established to reconnect'));
6031
6202
  }
6032
6203
  this.cleanUpBeforeReconnection();
6033
- return this.reconnectionManager.reconnect(options, /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee15() {
6034
- return _regenerator.default.wrap(function (_context15) {
6035
- while (1) switch (_context15.prev = _context15.next) {
6204
+ return this.reconnectionManager.reconnect(options, /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee17() {
6205
+ return _regenerator.default.wrap(function (_context17) {
6206
+ while (1) switch (_context17.prev = _context17.next) {
6036
6207
  case 0:
6037
- _context15.next = 1;
6208
+ _context17.next = 1;
6038
6209
  return _this31.waitForRemoteSDPAnswer();
6039
6210
  case 1:
6040
- _context15.next = 2;
6211
+ _context17.next = 2;
6041
6212
  return _this31.waitForMediaConnectionConnected();
6042
6213
  case 2:
6043
6214
  case "end":
6044
- return _context15.stop();
6215
+ return _context17.stop();
6045
6216
  }
6046
- }, _callee15);
6217
+ }, _callee17);
6047
6218
  }))).then(function () {
6048
6219
  _loggerProxy.default.logger.log('Meeting:index#reconnect --> Meeting reconnect success');
6049
6220
  }).catch(function (error) {
@@ -6083,8 +6254,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6083
6254
  }, {
6084
6255
  key: "isReactionsSupported",
6085
6256
  value: function isReactionsSupported() {
6086
- var _this$locusInfo5, _this$locusInfo5$cont;
6087
- if ((_this$locusInfo5 = this.locusInfo) !== null && _this$locusInfo5 !== void 0 && (_this$locusInfo5$cont = _this$locusInfo5.controls) !== null && _this$locusInfo5$cont !== void 0 && _this$locusInfo5$cont.reactions.enabled) {
6257
+ var _this$locusInfo6, _this$locusInfo6$cont;
6258
+ if ((_this$locusInfo6 = this.locusInfo) !== null && _this$locusInfo6 !== void 0 && (_this$locusInfo6$cont = _this$locusInfo6.controls) !== null && _this$locusInfo6$cont !== void 0 && _this$locusInfo6$cont.reactions.enabled) {
6088
6259
  return true;
6089
6260
  }
6090
6261
  _loggerProxy.default.logger.error('Meeting:index#isReactionsSupported --> Reactions is not supported');
@@ -6184,47 +6355,47 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6184
6355
  }, {
6185
6356
  key: "startTranscription",
6186
6357
  value: (function () {
6187
- var _startTranscription = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee16(options) {
6188
- var _t1;
6189
- return _regenerator.default.wrap(function (_context16) {
6190
- while (1) switch (_context16.prev = _context16.next) {
6358
+ var _startTranscription = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee18(options) {
6359
+ var _t10;
6360
+ return _regenerator.default.wrap(function (_context18) {
6361
+ while (1) switch (_context18.prev = _context18.next) {
6191
6362
  case 0:
6192
6363
  if (!this.isJoined()) {
6193
- _context16.next = 5;
6364
+ _context18.next = 5;
6194
6365
  break;
6195
6366
  }
6196
6367
  _loggerProxy.default.logger.info('Meeting:index#startTranscription --> Attempting to enable transcription!');
6197
- _context16.prev = 1;
6368
+ _context18.prev = 1;
6198
6369
  if (!this.areVoiceaEventsSetup) {
6199
6370
  this.setUpVoiceaListeners();
6200
6371
  }
6201
6372
 
6202
6373
  // @ts-ignore
6203
- _context16.next = 2;
6374
+ _context18.next = 2;
6204
6375
  return this.webex.internal.voicea.turnOnCaptions(options === null || options === void 0 ? void 0 : options.spokenLanguage);
6205
6376
  case 2:
6206
- _context16.next = 4;
6377
+ _context18.next = 4;
6207
6378
  break;
6208
6379
  case 3:
6209
- _context16.prev = 3;
6210
- _t1 = _context16["catch"](1);
6211
- _loggerProxy.default.logger.error("Meeting:index#startTranscription --> ".concat(_t1));
6380
+ _context18.prev = 3;
6381
+ _t10 = _context18["catch"](1);
6382
+ _loggerProxy.default.logger.error("Meeting:index#startTranscription --> ".concat(_t10));
6212
6383
  _metrics.default.sendBehavioralMetric(_constants2.default.RECEIVE_TRANSCRIPTION_FAILURE, {
6213
6384
  correlation_id: this.correlationId,
6214
- reason: _t1.message,
6215
- stack: _t1.stack
6385
+ reason: _t10.message,
6386
+ stack: _t10.stack
6216
6387
  });
6217
6388
  case 4:
6218
- _context16.next = 6;
6389
+ _context18.next = 6;
6219
6390
  break;
6220
6391
  case 5:
6221
6392
  _loggerProxy.default.logger.error("Meeting:index#startTranscription --> meeting joined : ".concat(this.isJoined()));
6222
6393
  throw new Error('Meeting is not joined');
6223
6394
  case 6:
6224
6395
  case "end":
6225
- return _context16.stop();
6396
+ return _context18.stop();
6226
6397
  }
6227
- }, _callee16, this, [[1, 3]]);
6398
+ }, _callee18, this, [[1, 3]]);
6228
6399
  }));
6229
6400
  function startTranscription(_x14) {
6230
6401
  return _startTranscription.apply(this, arguments);
@@ -6239,24 +6410,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6239
6410
  * @returns {void}
6240
6411
  */
6241
6412
  function stopTranscription() {
6242
- if (this.transcription) {
6243
- // @ts-ignore
6244
- this.webex.internal.voicea.off(_internalPluginVoicea.EVENT_TRIGGERS.VOICEA_ANNOUNCEMENT, this.voiceaListenerCallbacks[_internalPluginVoicea.EVENT_TRIGGERS.VOICEA_ANNOUNCEMENT]);
6413
+ // @ts-ignore
6414
+ this.webex.internal.voicea.off(_internalPluginVoicea.EVENT_TRIGGERS.VOICEA_ANNOUNCEMENT, this.voiceaListenerCallbacks[_internalPluginVoicea.EVENT_TRIGGERS.VOICEA_ANNOUNCEMENT]);
6245
6415
 
6246
- // @ts-ignore
6247
- this.webex.internal.voicea.off(_internalPluginVoicea.EVENT_TRIGGERS.CAPTIONS_TURNED_ON, this.voiceaListenerCallbacks[_internalPluginVoicea.EVENT_TRIGGERS.CAPTIONS_TURNED_ON]);
6416
+ // @ts-ignore
6417
+ this.webex.internal.voicea.off(_internalPluginVoicea.EVENT_TRIGGERS.CAPTIONS_TURNED_ON, this.voiceaListenerCallbacks[_internalPluginVoicea.EVENT_TRIGGERS.CAPTIONS_TURNED_ON]);
6248
6418
 
6249
- // @ts-ignore
6250
- this.webex.internal.voicea.off(_internalPluginVoicea.EVENT_TRIGGERS.EVA_COMMAND, this.voiceaListenerCallbacks[_internalPluginVoicea.EVENT_TRIGGERS.EVA_COMMAND]);
6419
+ // @ts-ignore
6420
+ this.webex.internal.voicea.off(_internalPluginVoicea.EVENT_TRIGGERS.EVA_COMMAND, this.voiceaListenerCallbacks[_internalPluginVoicea.EVENT_TRIGGERS.EVA_COMMAND]);
6251
6421
 
6252
- // @ts-ignore
6253
- this.webex.internal.voicea.off(_internalPluginVoicea.EVENT_TRIGGERS.NEW_CAPTION, this.voiceaListenerCallbacks[_internalPluginVoicea.EVENT_TRIGGERS.NEW_CAPTION]);
6422
+ // @ts-ignore
6423
+ this.webex.internal.voicea.off(_internalPluginVoicea.EVENT_TRIGGERS.NEW_CAPTION, this.voiceaListenerCallbacks[_internalPluginVoicea.EVENT_TRIGGERS.NEW_CAPTION]);
6254
6424
 
6255
- // @ts-ignore
6256
- this.webex.internal.voicea.deregisterEvents();
6257
- this.areVoiceaEventsSetup = false;
6258
- this.triggerStopReceivingTranscriptionEvent();
6259
- }
6425
+ // @ts-ignore
6426
+ this.webex.internal.voicea.deregisterEvents();
6427
+ this.areVoiceaEventsSetup = false;
6428
+ this.triggerStopReceivingTranscriptionEvent();
6260
6429
  }
6261
6430
 
6262
6431
  /**
@@ -6290,7 +6459,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6290
6459
  * Scenario D: Joining any other way (sip, pstn, conversationUrl, link just need to specify resourceId)
6291
6460
  */
6292
6461
  function () {
6293
- var _join = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee17() {
6462
+ var _join = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee19() {
6294
6463
  var _this34 = this;
6295
6464
  var options,
6296
6465
  errorMessage,
@@ -6301,26 +6470,26 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6301
6470
  _error4,
6302
6471
  _errorMessage3,
6303
6472
  _error5,
6304
- _args17 = arguments,
6305
- _t10;
6306
- return _regenerator.default.wrap(function (_context17) {
6307
- while (1) switch (_context17.prev = _context17.next) {
6473
+ _args19 = arguments,
6474
+ _t11;
6475
+ return _regenerator.default.wrap(function (_context19) {
6476
+ while (1) switch (_context19.prev = _context19.next) {
6308
6477
  case 0:
6309
- options = _args17.length > 0 && _args17[0] !== undefined ? _args17[0] : {};
6478
+ options = _args19.length > 0 && _args19[0] !== undefined ? _args19[0] : {};
6310
6479
  if (this.webex.meetings.registered) {
6311
- _context17.next = 1;
6480
+ _context19.next = 1;
6312
6481
  break;
6313
6482
  }
6314
6483
  errorMessage = 'Meeting:index#join --> Device not registered';
6315
6484
  error = new Error(errorMessage);
6316
6485
  _loggerProxy.default.logger.error(errorMessage);
6317
- return _context17.abrupt("return", _promise.default.reject(error));
6486
+ return _context19.abrupt("return", _promise.default.reject(error));
6318
6487
  case 1:
6319
6488
  if (!this.deferJoin) {
6320
- _context17.next = 2;
6489
+ _context19.next = 2;
6321
6490
  break;
6322
6491
  }
6323
- return _context17.abrupt("return", this.deferJoin);
6492
+ return _context19.abrupt("return", this.deferJoin);
6324
6493
  case 2:
6325
6494
  // Create a deferred promise for a consistent resolve value from utils.
6326
6495
  // This also prevents redundant API calls.
@@ -6372,15 +6541,15 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6372
6541
  this.wirelessShare = true;
6373
6542
  }
6374
6543
  if (!options.meetingQuality) {
6375
- _context17.next = 6;
6544
+ _context19.next = 6;
6376
6545
  break;
6377
6546
  }
6378
6547
  if (!(typeof options.meetingQuality === 'string')) {
6379
- _context17.next = 4;
6548
+ _context19.next = 4;
6380
6549
  break;
6381
6550
  }
6382
6551
  if (_constants.QUALITY_LEVELS[options.meetingQuality]) {
6383
- _context17.next = 3;
6552
+ _context19.next = 3;
6384
6553
  break;
6385
6554
  }
6386
6555
  _errorMessage2 = "Meeting:index#join --> ".concat(options.meetingQuality, " not defined");
@@ -6388,16 +6557,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6388
6557
  _loggerProxy.default.logger.error(_errorMessage2);
6389
6558
  joinFailed(_error4);
6390
6559
  this.deferJoin = undefined;
6391
- return _context17.abrupt("return", _promise.default.reject(_error4));
6560
+ return _context19.abrupt("return", _promise.default.reject(_error4));
6392
6561
  case 3:
6393
6562
  this.mediaProperties.setRemoteQualityLevel(options.meetingQuality);
6394
6563
  case 4:
6395
6564
  if (!((0, _typeof2.default)(options.meetingQuality) === 'object')) {
6396
- _context17.next = 6;
6565
+ _context19.next = 6;
6397
6566
  break;
6398
6567
  }
6399
6568
  if (_constants.QUALITY_LEVELS[options.meetingQuality.remote]) {
6400
- _context17.next = 5;
6569
+ _context19.next = 5;
6401
6570
  break;
6402
6571
  }
6403
6572
  _errorMessage3 = "Meeting:index#join --> ".concat(options.meetingQuality.remote, " not defined");
@@ -6405,42 +6574,42 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6405
6574
  _error5 = new Error(_errorMessage3);
6406
6575
  joinFailed(_error5);
6407
6576
  this.deferJoin = undefined;
6408
- return _context17.abrupt("return", _promise.default.reject(new Error(_errorMessage3)));
6577
+ return _context19.abrupt("return", _promise.default.reject(new Error(_errorMessage3)));
6409
6578
  case 5:
6410
6579
  if (options.meetingQuality.remote) {
6411
6580
  this.mediaProperties.setRemoteQualityLevel(options.meetingQuality.remote);
6412
6581
  }
6413
6582
  case 6:
6414
6583
  this.isMultistream = !!options.enableMultistream;
6415
- _context17.prev = 7;
6416
- _context17.next = 8;
6584
+ _context19.prev = 7;
6585
+ _context19.next = 8;
6417
6586
  return this.checkAndRefreshPermissionToken(_constants.MEETING_PERMISSION_TOKEN_REFRESH_THRESHOLD_IN_SEC, _constants.MEETING_PERMISSION_TOKEN_REFRESH_REASON);
6418
6587
  case 8:
6419
- _context17.next = 10;
6588
+ _context19.next = 10;
6420
6589
  break;
6421
6590
  case 9:
6422
- _context17.prev = 9;
6423
- _t10 = _context17["catch"](7);
6424
- _loggerProxy.default.logger.error('Meeting:index#join --> Failed to refresh permission token:', _t10);
6425
- if (!(_t10 instanceof _captchaError.default || _t10 instanceof _passwordError.default || _t10 instanceof _permission.default)) {
6426
- _context17.next = 10;
6591
+ _context19.prev = 9;
6592
+ _t11 = _context19["catch"](7);
6593
+ _loggerProxy.default.logger.error('Meeting:index#join --> Failed to refresh permission token:', _t11);
6594
+ if (!(_t11 instanceof _captchaError.default || _t11 instanceof _passwordError.default || _t11 instanceof _permission.default)) {
6595
+ _context19.next = 10;
6427
6596
  break;
6428
6597
  }
6429
- this.meetingFiniteStateMachine.fail(_t10);
6598
+ this.meetingFiniteStateMachine.fail(_t11);
6430
6599
 
6431
6600
  // Upload logs on refreshpermissionToken refresh Failure
6432
6601
  _triggerProxy.default.trigger(this, {
6433
6602
  file: 'meeting/index',
6434
6603
  function: 'join'
6435
6604
  }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, this);
6436
- joinFailed(_t10);
6605
+ joinFailed(_t11);
6437
6606
  this.deferJoin = undefined;
6438
6607
 
6439
6608
  // if refresh permission token requires captcha, password or permission, we are throwing the errors
6440
6609
  // and bubble it up to client
6441
- return _context17.abrupt("return", _promise.default.reject(_t10));
6610
+ return _context19.abrupt("return", _promise.default.reject(_t11));
6442
6611
  case 10:
6443
- return _context17.abrupt("return", _util2.default.joinMeetingOptions(this, options).then(function (join) {
6612
+ return _context19.abrupt("return", _util2.default.joinMeetingOptions(this, options).then(function (join) {
6444
6613
  _this34.meetingFiniteStateMachine.join();
6445
6614
  _this34.setupLocusMediaRequest();
6446
6615
 
@@ -6474,6 +6643,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6474
6643
  _this34.deferJoin = undefined;
6475
6644
  return _promise.default.reject(error);
6476
6645
  }).then(function (join) {
6646
+ _this34.saveDataChannelToken(join);
6477
6647
  // @ts-ignore - config coming from registerPlugin
6478
6648
  if (_this34.config.enableAutomaticLLM) {
6479
6649
  // @ts-ignore
@@ -6493,9 +6663,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6493
6663
  }));
6494
6664
  case 11:
6495
6665
  case "end":
6496
- return _context17.stop();
6666
+ return _context19.stop();
6497
6667
  }
6498
- }, _callee17, this, [[7, 9]]);
6668
+ }, _callee19, this, [[7, 9]]);
6499
6669
  }));
6500
6670
  function join() {
6501
6671
  return _join.apply(this, arguments);
@@ -6544,28 +6714,62 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6544
6714
  this.llmHealthCheckTimer = undefined;
6545
6715
  }
6546
6716
  }
6717
+ }, {
6718
+ key: "clearDataChannelToken",
6719
+ value:
6720
+ /**
6721
+ * Clears all data channel tokens stored in LLM.
6722
+ * Called during meeting cleanup to ensure stale tokens are not reused.
6723
+ * @returns {void}
6724
+ */
6725
+ function clearDataChannelToken() {
6726
+ // @ts-ignore
6727
+ this.webex.internal.llm.resetDatachannelTokens();
6728
+ }
6729
+
6730
+ /**
6731
+ * Saves the data channel tokens from the join response into LLM so that
6732
+ * updateLLMConnection / updatePSDataChannel don't need to fetch them from locusInfo.
6733
+ * @param {Object} join - The parsed join response (from MeetingUtil.parseLocusJoin)
6734
+ * @returns {void}
6735
+ */
6736
+ }, {
6737
+ key: "saveDataChannelToken",
6738
+ value: function saveDataChannelToken(join) {
6739
+ var _join$locus, _join$locus$self, _join$locus2, _join$locus2$self;
6740
+ var datachannelToken = join === null || join === void 0 ? void 0 : (_join$locus = join.locus) === null || _join$locus === void 0 ? void 0 : (_join$locus$self = _join$locus.self) === null || _join$locus$self === void 0 ? void 0 : _join$locus$self.datachannelToken;
6741
+ var practiceSessionDatachannelToken = join === null || join === void 0 ? void 0 : (_join$locus2 = join.locus) === null || _join$locus2 === void 0 ? void 0 : (_join$locus2$self = _join$locus2.self) === null || _join$locus2$self === void 0 ? void 0 : _join$locus2$self.practiceSessionDatachannelToken;
6742
+ if (datachannelToken) {
6743
+ // @ts-ignore
6744
+ this.webex.internal.llm.setDatachannelToken(datachannelToken, _internalPluginLlm.DataChannelTokenType.Default);
6745
+ }
6746
+ if (practiceSessionDatachannelToken) {
6747
+ // @ts-ignore
6748
+ this.webex.internal.llm.setDatachannelToken(practiceSessionDatachannelToken, _internalPluginLlm.DataChannelTokenType.PracticeSession);
6749
+ }
6750
+ }
6547
6751
 
6548
6752
  /**
6549
6753
  * Connects to low latency mercury and reconnects if the address has changed
6550
6754
  * It will also disconnect if called when the meeting has ended
6551
- * @param {String} datachannelUrl
6552
6755
  * @returns {Promise}
6553
6756
  */
6554
6757
  }, {
6555
6758
  key: "updateLLMConnection",
6556
6759
  value: (function () {
6557
- var _updateLLMConnection = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee18() {
6760
+ var _updateLLMConnection = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee20() {
6558
6761
  var _this36 = this;
6559
- var _this$locusInfo6, url, _this$locusInfo6$info, _this$locusInfo6$info2, datachannelUrl, practiceSessionDatachannelUrl, isJoined, dataChannelUrl;
6560
- return _regenerator.default.wrap(function (_context18) {
6561
- while (1) switch (_context18.prev = _context18.next) {
6762
+ var _ref40, _ref40$url, url, _ref40$info, _ref40$info2, _ref40$info2$datachan, datachannelUrl, isJoined, datachannelToken, dataChannelUrl;
6763
+ return _regenerator.default.wrap(function (_context20) {
6764
+ while (1) switch (_context20.prev = _context20.next) {
6562
6765
  case 0:
6563
6766
  // @ts-ignore - Fix type
6564
- _this$locusInfo6 = this.locusInfo, url = _this$locusInfo6.url, _this$locusInfo6$info = _this$locusInfo6.info, _this$locusInfo6$info2 = _this$locusInfo6$info === void 0 ? {} : _this$locusInfo6$info, datachannelUrl = _this$locusInfo6$info2.datachannelUrl, practiceSessionDatachannelUrl = _this$locusInfo6$info2.practiceSessionDatachannelUrl;
6565
- isJoined = this.isJoined(); // webinar panelist should use new data channel in practice session
6566
- dataChannelUrl = this.webinar.isJoinPracticeSessionDataChannel() && practiceSessionDatachannelUrl ? practiceSessionDatachannelUrl : datachannelUrl; // @ts-ignore - Fix type
6767
+ _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;
6768
+ isJoined = this.isJoined(); // @ts-ignore
6769
+ datachannelToken = this.webex.internal.llm.getDatachannelToken(_internalPluginLlm.DataChannelTokenType.Default);
6770
+ dataChannelUrl = datachannelUrl; // @ts-ignore - Fix type
6567
6771
  if (!this.webex.internal.llm.isConnected()) {
6568
- _context18.next = 3;
6772
+ _context20.next = 2;
6569
6773
  break;
6570
6774
  }
6571
6775
  if (!(
@@ -6573,30 +6777,23 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6573
6777
  url === this.webex.internal.llm.getLocusUrl() &&
6574
6778
  // @ts-ignore - Fix type
6575
6779
  dataChannelUrl === this.webex.internal.llm.getDatachannelUrl() && isJoined)) {
6576
- _context18.next = 1;
6780
+ _context20.next = 1;
6577
6781
  break;
6578
6782
  }
6579
- return _context18.abrupt("return", undefined);
6783
+ return _context20.abrupt("return", undefined);
6580
6784
  case 1:
6581
- _context18.next = 2;
6582
- return this.webex.internal.llm.disconnectLLM(isJoined ? {
6583
- code: 3050,
6584
- reason: 'done (permanent)'
6585
- } : undefined);
6785
+ _context20.next = 2;
6786
+ return this.cleanupLLMConneciton({
6787
+ removeOnlineListener: false
6788
+ });
6586
6789
  case 2:
6587
- // @ts-ignore - Fix type
6588
- this.webex.internal.llm.off('event:relay.event', this.processRelayEvent);
6589
- // @ts-ignore - Fix type
6590
- this.webex.internal.llm.off(_constants.LOCUS_LLM_EVENT, this.processLocusLLMEvent);
6591
- this.clearLLMHealthCheckTimer();
6592
- case 3:
6593
6790
  if (isJoined) {
6594
- _context18.next = 4;
6791
+ _context20.next = 3;
6595
6792
  break;
6596
6793
  }
6597
- return _context18.abrupt("return", undefined);
6598
- case 4:
6599
- return _context18.abrupt("return", this.webex.internal.llm.registerAndConnect(url, dataChannelUrl).then(function (registerAndConnectResult) {
6794
+ return _context20.abrupt("return", undefined);
6795
+ case 3:
6796
+ return _context20.abrupt("return", this.webex.internal.llm.registerAndConnect(url, dataChannelUrl, datachannelToken).then(function (registerAndConnectResult) {
6600
6797
  // @ts-ignore - Fix type
6601
6798
  _this36.webex.internal.llm.off('event:relay.event', _this36.processRelayEvent);
6602
6799
  // @ts-ignore - Fix type
@@ -6609,11 +6806,11 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6609
6806
  _this36.startLLMHealthCheckTimer();
6610
6807
  return _promise.default.resolve(registerAndConnectResult);
6611
6808
  }));
6612
- case 5:
6809
+ case 4:
6613
6810
  case "end":
6614
- return _context18.stop();
6811
+ return _context20.stop();
6615
6812
  }
6616
- }, _callee18, this);
6813
+ }, _callee20, this);
6617
6814
  }));
6618
6815
  function updateLLMConnection() {
6619
6816
  return _updateLLMConnection.apply(this, arguments);
@@ -6799,17 +6996,17 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6799
6996
  meetingId: this.id
6800
6997
  }
6801
6998
  });
6802
- this.locusInfo.once(_constants.LOCUSINFO.EVENTS.SELF_OBSERVING, /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee19() {
6803
- var mediaSettings, _t11;
6804
- return _regenerator.default.wrap(function (_context19) {
6805
- while (1) switch (_context19.prev = _context19.next) {
6999
+ this.locusInfo.once(_constants.LOCUSINFO.EVENTS.SELF_OBSERVING, /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee21() {
7000
+ var mediaSettings, _t12;
7001
+ return _regenerator.default.wrap(function (_context21) {
7002
+ while (1) switch (_context21.prev = _context21.next) {
6806
7003
  case 0:
6807
- _context19.prev = 0;
7004
+ _context21.prev = 0;
6808
7005
  if (!(_this40.screenShareFloorState === ScreenShareFloorStatus.GRANTED)) {
6809
- _context19.next = 1;
7006
+ _context21.next = 1;
6810
7007
  break;
6811
7008
  }
6812
- _context19.next = 1;
7009
+ _context21.next = 1;
6813
7010
  return _this40.releaseScreenShareFloor();
6814
7011
  case 1:
6815
7012
  mediaSettings = {
@@ -6828,23 +7025,23 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6828
7025
  // when a move to is intiated by the client , Locus delets the existing media node from the server as soon the device answers the meeting
6829
7026
  // once the device answers we close the old connection and create new media server connection with only share enabled
6830
7027
  if (!_this40.statsAnalyzer) {
6831
- _context19.next = 2;
7028
+ _context21.next = 2;
6832
7029
  break;
6833
7030
  }
6834
- _context19.next = 2;
7031
+ _context21.next = 2;
6835
7032
  return _this40.statsAnalyzer.stopAnalyzer();
6836
7033
  case 2:
6837
- _context19.next = 3;
7034
+ _context21.next = 3;
6838
7035
  return _this40.closeRemoteStreams();
6839
7036
  case 3:
6840
- _context19.next = 4;
7037
+ _context21.next = 4;
6841
7038
  return _this40.closePeerConnections();
6842
7039
  case 4:
6843
7040
  _this40.cleanupLocalStreams();
6844
7041
  _this40.unsetRemoteStreams();
6845
7042
  _this40.unsetPeerConnections();
6846
7043
  _this40.reconnectionManager.cleanUp();
6847
- _context19.next = 5;
7044
+ _context21.next = 5;
6848
7045
  return _this40.addMedia({
6849
7046
  audioEnabled: false,
6850
7047
  videoEnabled: false,
@@ -6853,24 +7050,24 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6853
7050
  case 5:
6854
7051
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_TO_SUCCESS);
6855
7052
  _this40.isMoveToInProgress = false;
6856
- _context19.next = 7;
7053
+ _context21.next = 7;
6857
7054
  break;
6858
7055
  case 6:
6859
- _context19.prev = 6;
6860
- _t11 = _context19["catch"](0);
6861
- _loggerProxy.default.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId', _t11);
7056
+ _context21.prev = 6;
7057
+ _t12 = _context21["catch"](0);
7058
+ _loggerProxy.default.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId', _t12);
6862
7059
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_TO_FAILURE, {
6863
7060
  correlation_id: _this40.correlationId,
6864
7061
  locus_id: _this40.locusUrl.split('/').pop(),
6865
- reason: _t11.message,
6866
- stack: _t11.stack
7062
+ reason: _t12.message,
7063
+ stack: _t12.stack
6867
7064
  });
6868
7065
  _this40.isMoveToInProgress = false;
6869
7066
  case 7:
6870
7067
  case "end":
6871
- return _context19.stop();
7068
+ return _context21.stop();
6872
7069
  }
6873
- }, _callee19, null, [[0, 6]]);
7070
+ }, _callee21, null, [[0, 6]]);
6874
7071
  })));
6875
7072
  _loggerProxy.default.logger.info('Meeting:index#moveTo --> Initated moved to using resourceId', resourceId);
6876
7073
 
@@ -6958,10 +7155,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6958
7155
  }, {
6959
7156
  key: "createMediaConnection",
6960
7157
  value: (function () {
6961
- var _createMediaConnection = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee20(turnServerInfo, bundlePolicy) {
7158
+ var _createMediaConnection = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee22(turnServerInfo, bundlePolicy) {
6962
7159
  var mc, audioEnabled, videoEnabled, shareEnabled;
6963
- return _regenerator.default.wrap(function (_context20) {
6964
- while (1) switch (_context20.prev = _context20.next) {
7160
+ return _regenerator.default.wrap(function (_context22) {
7161
+ while (1) switch (_context22.prev = _context22.next) {
6965
7162
  case 0:
6966
7163
  this.rtcMetrics = this.isMultistream ?
6967
7164
  // @ts-ignore
@@ -7003,40 +7200,40 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7003
7200
 
7004
7201
  // publish the streams
7005
7202
  if (!this.mediaProperties.audioStream) {
7006
- _context20.next = 1;
7203
+ _context22.next = 1;
7007
7204
  break;
7008
7205
  }
7009
7206
  this.setSendNamedMediaGroup(_internalMediaCore.MediaType.AudioMain);
7010
- _context20.next = 1;
7207
+ _context22.next = 1;
7011
7208
  return this.publishStream(_internalMediaCore.MediaType.AudioMain, this.mediaProperties.audioStream);
7012
7209
  case 1:
7013
7210
  if (!this.mediaProperties.videoStream) {
7014
- _context20.next = 2;
7211
+ _context22.next = 2;
7015
7212
  break;
7016
7213
  }
7017
- _context20.next = 2;
7214
+ _context22.next = 2;
7018
7215
  return this.publishStream(_internalMediaCore.MediaType.VideoMain, this.mediaProperties.videoStream);
7019
7216
  case 2:
7020
7217
  if (!this.mediaProperties.shareVideoStream) {
7021
- _context20.next = 3;
7218
+ _context22.next = 3;
7022
7219
  break;
7023
7220
  }
7024
- _context20.next = 3;
7221
+ _context22.next = 3;
7025
7222
  return this.publishStream(_internalMediaCore.MediaType.VideoSlides, this.mediaProperties.shareVideoStream);
7026
7223
  case 3:
7027
7224
  if (!(this.isMultistream && this.mediaProperties.shareAudioStream)) {
7028
- _context20.next = 4;
7225
+ _context22.next = 4;
7029
7226
  break;
7030
7227
  }
7031
- _context20.next = 4;
7228
+ _context22.next = 4;
7032
7229
  return this.publishStream(_internalMediaCore.MediaType.AudioSlides, this.mediaProperties.shareAudioStream);
7033
7230
  case 4:
7034
- return _context20.abrupt("return", mc);
7231
+ return _context22.abrupt("return", mc);
7035
7232
  case 5:
7036
7233
  case "end":
7037
- return _context20.stop();
7234
+ return _context22.stop();
7038
7235
  }
7039
- }, _callee20, this);
7236
+ }, _callee22, this);
7040
7237
  }));
7041
7238
  function createMediaConnection(_x15, _x16) {
7042
7239
  return _createMediaConnection.apply(this, arguments);
@@ -7076,11 +7273,11 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7076
7273
  }, {
7077
7274
  key: "setUpLocalStreamReferences",
7078
7275
  value: (function () {
7079
- var _setUpLocalStreamReferences = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee21(localStreams) {
7276
+ var _setUpLocalStreamReferences = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee23(localStreams) {
7080
7277
  var _localStreams$microph, _localStreams$camera, _localStreams$screenS, _localStreams$screenS2, _localStreams$screenS3, _localStreams$screenS4, _localStreams$screenS5, _localStreams$screenS6;
7081
- var setUpStreamPromises, _t12;
7082
- return _regenerator.default.wrap(function (_context21) {
7083
- while (1) switch (_context21.prev = _context21.next) {
7278
+ var setUpStreamPromises, _t13;
7279
+ return _regenerator.default.wrap(function (_context23) {
7280
+ while (1) switch (_context23.prev = _context23.next) {
7084
7281
  case 0:
7085
7282
  setUpStreamPromises = [];
7086
7283
  if (localStreams !== null && localStreams !== void 0 && localStreams.microphone && (localStreams === null || localStreams === void 0 ? void 0 : (_localStreams$microph = localStreams.microphone) === null || _localStreams$microph === void 0 ? void 0 : _localStreams$microph.readyState) !== 'ended') {
@@ -7095,22 +7292,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7095
7292
  if (localStreams !== null && localStreams !== void 0 && (_localStreams$screenS4 = localStreams.screenShare) !== null && _localStreams$screenS4 !== void 0 && _localStreams$screenS4.audio && (localStreams === null || localStreams === void 0 ? void 0 : (_localStreams$screenS5 = localStreams.screenShare) === null || _localStreams$screenS5 === void 0 ? void 0 : (_localStreams$screenS6 = _localStreams$screenS5.audio) === null || _localStreams$screenS6 === void 0 ? void 0 : _localStreams$screenS6.readyState) !== 'ended') {
7096
7293
  setUpStreamPromises.push(this.setLocalShareAudioStream(localStreams.screenShare.audio));
7097
7294
  }
7098
- _context21.prev = 1;
7099
- _context21.next = 2;
7295
+ _context23.prev = 1;
7296
+ _context23.next = 2;
7100
7297
  return _promise.default.all(setUpStreamPromises);
7101
7298
  case 2:
7102
- _context21.next = 4;
7299
+ _context23.next = 4;
7103
7300
  break;
7104
7301
  case 3:
7105
- _context21.prev = 3;
7106
- _t12 = _context21["catch"](1);
7107
- _loggerProxy.default.logger.error("Meeting:index#addMedia():setUpLocalStreamReferences --> Error , ", _t12);
7108
- throw _t12;
7302
+ _context23.prev = 3;
7303
+ _t13 = _context23["catch"](1);
7304
+ _loggerProxy.default.logger.error("Meeting:index#addMedia():setUpLocalStreamReferences --> Error , ", _t13);
7305
+ throw _t13;
7109
7306
  case 4:
7110
7307
  case "end":
7111
- return _context21.stop();
7308
+ return _context23.stop();
7112
7309
  }
7113
- }, _callee21, this, [[1, 3]]);
7310
+ }, _callee23, this, [[1, 3]]);
7114
7311
  }));
7115
7312
  function setUpLocalStreamReferences(_x17) {
7116
7313
  return _setUpLocalStreamReferences.apply(this, arguments);
@@ -7127,72 +7324,72 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7127
7324
  }, {
7128
7325
  key: "waitForMediaConnectionConnected",
7129
7326
  value: (function () {
7130
- var _waitForMediaConnectionConnected = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee22() {
7131
- var iceConnected, _this$mediaProperties8, _this$mediaProperties9, _this$mediaProperties0, _this$mediaProperties1, _this$mediaProperties10, _this$mediaProperties11, _this$mediaProperties12, timedOutError, _t13, _t14, _t15, _t16, _t17, _t18, _t19, _t20, _t21, _t22, _t23, _t24, _t25, _t26, _t27;
7132
- return _regenerator.default.wrap(function (_context22) {
7133
- while (1) switch (_context22.prev = _context22.next) {
7327
+ var _waitForMediaConnectionConnected = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee24() {
7328
+ 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;
7329
+ return _regenerator.default.wrap(function (_context24) {
7330
+ while (1) switch (_context24.prev = _context24.next) {
7134
7331
  case 0:
7135
- _context22.prev = 0;
7136
- _context22.next = 1;
7137
- return this.mediaProperties.waitForMediaConnectionConnected();
7332
+ _context24.prev = 0;
7333
+ _context24.next = 1;
7334
+ return this.mediaProperties.waitForMediaConnectionConnected(this.correlationId);
7138
7335
  case 1:
7139
- _context22.next = 5;
7336
+ _context24.next = 5;
7140
7337
  break;
7141
7338
  case 2:
7142
- _context22.prev = 2;
7143
- _t13 = _context22["catch"](0);
7144
- iceConnected = _t13.iceConnected;
7339
+ _context24.prev = 2;
7340
+ _t14 = _context24["catch"](0);
7341
+ iceConnected = _t14.iceConnected;
7145
7342
  if (this.hasMediaConnectionConnectedAtLeastOnce) {
7146
- _context22.next = 4;
7343
+ _context24.next = 4;
7147
7344
  break;
7148
7345
  }
7149
- _t14 = this.webex.internal.newMetrics;
7150
- _t15 = !this.turnServerUsed;
7151
- _t16 = this.addMediaData.icePhaseCallback();
7152
- _t17 = this.webex.internal.newMetrics.callDiagnosticMetrics;
7153
- _t18 = _internalPluginMetrics.CallDiagnosticUtils;
7154
- _t19 = ((_this$mediaProperties8 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties8 === void 0 ? void 0 : (_this$mediaProperties9 = _this$mediaProperties8.multistreamConnection) === null || _this$mediaProperties9 === void 0 ? void 0 : (_this$mediaProperties0 = _this$mediaProperties9.pc) === null || _this$mediaProperties0 === void 0 ? void 0 : (_this$mediaProperties1 = _this$mediaProperties0.pc) === null || _this$mediaProperties1 === void 0 ? void 0 : _this$mediaProperties1.signalingState) || ((_this$mediaProperties10 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties10 === void 0 ? void 0 : (_this$mediaProperties11 = _this$mediaProperties10.mediaConnection) === null || _this$mediaProperties11 === void 0 ? void 0 : (_this$mediaProperties12 = _this$mediaProperties11.pc) === null || _this$mediaProperties12 === void 0 ? void 0 : _this$mediaProperties12.signalingState) || 'unknown';
7155
- _t20 = iceConnected;
7156
- _t21 = this.turnServerUsed;
7157
- _context22.next = 3;
7346
+ _t15 = this.webex.internal.newMetrics;
7347
+ _t16 = !this.turnServerUsed;
7348
+ _t17 = this.addMediaData.icePhaseCallback();
7349
+ _t18 = this.webex.internal.newMetrics.callDiagnosticMetrics;
7350
+ _t19 = _internalPluginMetrics.CallDiagnosticUtils;
7351
+ _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';
7352
+ _t21 = iceConnected;
7353
+ _t22 = this.turnServerUsed;
7354
+ _context24.next = 3;
7158
7355
  return this.webex.meetings.reachability.isWebexMediaBackendUnreachable().catch(function () {
7159
7356
  return false;
7160
7357
  });
7161
7358
  case 3:
7162
- _t22 = _context22.sent;
7163
- _t23 = _t18.generateClientErrorCodeForIceFailure.call(_t18, {
7164
- signalingState: _t19,
7165
- iceConnected: _t20,
7166
- turnServerUsed: _t21,
7167
- unreachable: _t22
7359
+ _t23 = _context24.sent;
7360
+ _t24 = _t19.generateClientErrorCodeForIceFailure.call(_t19, {
7361
+ signalingState: _t20,
7362
+ iceConnected: _t21,
7363
+ turnServerUsed: _t22,
7364
+ unreachable: _t23
7168
7365
  });
7169
- _t24 = _t17.getErrorPayloadForClientErrorCode.call(_t17, {
7170
- clientErrorCode: _t23
7366
+ _t25 = _t18.getErrorPayloadForClientErrorCode.call(_t18, {
7367
+ clientErrorCode: _t24
7171
7368
  });
7172
- _t25 = [_t24];
7173
- _t26 = {
7174
- canProceed: _t15,
7175
- icePhase: _t16,
7176
- errors: _t25
7177
- };
7369
+ _t26 = [_t25];
7178
7370
  _t27 = {
7371
+ canProceed: _t16,
7372
+ icePhase: _t17,
7373
+ errors: _t26
7374
+ };
7375
+ _t28 = {
7179
7376
  meetingId: this.id,
7180
- rawError: _t13
7377
+ rawError: _t14
7181
7378
  };
7182
- _t14.submitClientEvent.call(_t14, {
7379
+ _t15.submitClientEvent.call(_t15, {
7183
7380
  name: 'client.ice.end',
7184
- payload: _t26,
7185
- options: _t27
7381
+ payload: _t27,
7382
+ options: _t28
7186
7383
  });
7187
7384
  case 4:
7188
7385
  timedOutError = new Error("Timed out waiting for media connection to be connected, correlationId=".concat(this.correlationId));
7189
- timedOutError.cause = _t13;
7386
+ timedOutError.cause = _t14;
7190
7387
  throw timedOutError;
7191
7388
  case 5:
7192
7389
  case "end":
7193
- return _context22.stop();
7390
+ return _context24.stop();
7194
7391
  }
7195
- }, _callee22, this, [[0, 2]]);
7392
+ }, _callee24, this, [[0, 2]]);
7196
7393
  }));
7197
7394
  function waitForMediaConnectionConnected() {
7198
7395
  return _waitForMediaConnectionConnected.apply(this, arguments);
@@ -7259,19 +7456,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7259
7456
  }, {
7260
7457
  key: "waitForRemoteSDPAnswer",
7261
7458
  value: (function () {
7262
- var _waitForRemoteSDPAnswer = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee23() {
7459
+ var _waitForRemoteSDPAnswer = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee25() {
7263
7460
  var _this44 = this;
7264
7461
  var LOG_HEADER, deferSDPAnswer;
7265
- return _regenerator.default.wrap(function (_context23) {
7266
- while (1) switch (_context23.prev = _context23.next) {
7462
+ return _regenerator.default.wrap(function (_context25) {
7463
+ while (1) switch (_context25.prev = _context25.next) {
7267
7464
  case 0:
7268
7465
  LOG_HEADER = 'Meeting:index#addMedia():waitForRemoteSDPAnswer -->';
7269
7466
  if (this.deferSDPAnswer) {
7270
- _context23.next = 1;
7467
+ _context25.next = 1;
7271
7468
  break;
7272
7469
  }
7273
7470
  _loggerProxy.default.logger.warn("".concat(LOG_HEADER, " offer not created yet"));
7274
- return _context23.abrupt("return", _promise.default.reject(new Error('waitForRemoteSDPAnswer() called before local sdp offer created')));
7471
+ return _context25.abrupt("return", _promise.default.reject(new Error('waitForRemoteSDPAnswer() called before local sdp offer created')));
7275
7472
  case 1:
7276
7473
  deferSDPAnswer = this.deferSDPAnswer;
7277
7474
  this.sdpResponseTimer = setTimeout(function () {
@@ -7297,12 +7494,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7297
7494
  deferSDPAnswer.reject(error);
7298
7495
  }, _constants.ROAP_OFFER_ANSWER_EXCHANGE_TIMEOUT);
7299
7496
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " waiting for REMOTE SDP ANSWER..."));
7300
- return _context23.abrupt("return", deferSDPAnswer.promise);
7497
+ return _context25.abrupt("return", deferSDPAnswer.promise);
7301
7498
  case 2:
7302
7499
  case "end":
7303
- return _context23.stop();
7500
+ return _context25.stop();
7304
7501
  }
7305
- }, _callee23, this);
7502
+ }, _callee25, this);
7306
7503
  }));
7307
7504
  function waitForRemoteSDPAnswer() {
7308
7505
  return _waitForRemoteSDPAnswer.apply(this, arguments);
@@ -7321,28 +7518,28 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7321
7518
  }, {
7322
7519
  key: "retryEstablishMediaConnectionWithForcedTurnDiscovery",
7323
7520
  value: (function () {
7324
- var _retryEstablishMediaConnectionWithForcedTurnDiscovery = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee24(remoteMediaManagerConfig, bundlePolicy) {
7325
- var LOG_HEADER, _t28;
7326
- return _regenerator.default.wrap(function (_context24) {
7327
- while (1) switch (_context24.prev = _context24.next) {
7521
+ var _retryEstablishMediaConnectionWithForcedTurnDiscovery = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee26(remoteMediaManagerConfig, bundlePolicy) {
7522
+ var LOG_HEADER, _t29;
7523
+ return _regenerator.default.wrap(function (_context26) {
7524
+ while (1) switch (_context26.prev = _context26.next) {
7328
7525
  case 0:
7329
7526
  LOG_HEADER = 'Meeting:index#addMedia():retryEstablishMediaConnectionWithForcedTurnDiscovery -->';
7330
- _context24.prev = 1;
7331
- _context24.next = 2;
7527
+ _context26.prev = 1;
7528
+ _context26.next = 2;
7332
7529
  return this.establishMediaConnection(remoteMediaManagerConfig, bundlePolicy, true);
7333
7530
  case 2:
7334
- _context24.next = 4;
7531
+ _context26.next = 4;
7335
7532
  break;
7336
7533
  case 3:
7337
- _context24.prev = 3;
7338
- _t28 = _context24["catch"](1);
7339
- _loggerProxy.default.logger.error("".concat(LOG_HEADER, " retry with TURN-TLS failed, media connection unable to connect, "), _t28);
7340
- throw _t28;
7534
+ _context26.prev = 3;
7535
+ _t29 = _context26["catch"](1);
7536
+ _loggerProxy.default.logger.error("".concat(LOG_HEADER, " retry with TURN-TLS failed, media connection unable to connect, "), _t29);
7537
+ throw _t29;
7341
7538
  case 4:
7342
7539
  case "end":
7343
- return _context24.stop();
7540
+ return _context26.stop();
7344
7541
  }
7345
- }, _callee24, this, [[1, 3]]);
7542
+ }, _callee26, this, [[1, 3]]);
7346
7543
  }));
7347
7544
  function retryEstablishMediaConnectionWithForcedTurnDiscovery(_x18, _x19) {
7348
7545
  return _retryEstablishMediaConnectionWithForcedTurnDiscovery.apply(this, arguments);
@@ -7362,14 +7559,14 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7362
7559
  }, {
7363
7560
  key: "retryWithForcedTurnDiscovery",
7364
7561
  value: (function () {
7365
- var _retryWithForcedTurnDiscovery = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee25(remoteMediaManagerConfig, bundlePolicy) {
7562
+ var _retryWithForcedTurnDiscovery = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee27(remoteMediaManagerConfig, bundlePolicy) {
7366
7563
  var LOG_HEADER;
7367
- return _regenerator.default.wrap(function (_context25) {
7368
- while (1) switch (_context25.prev = _context25.next) {
7564
+ return _regenerator.default.wrap(function (_context27) {
7565
+ while (1) switch (_context27.prev = _context27.next) {
7369
7566
  case 0:
7370
7567
  this.addMediaData.retriedWithTurnServer = true;
7371
7568
  LOG_HEADER = 'Meeting:index#addMedia():retryWithForcedTurnDiscovery -->';
7372
- _context25.next = 1;
7569
+ _context27.next = 1;
7373
7570
  return this.cleanUpBeforeRetryWithTurnServer();
7374
7571
  case 1:
7375
7572
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_MEDIA_RETRY, {
@@ -7379,22 +7576,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7379
7576
  reason: 'forcingTurnTls'
7380
7577
  });
7381
7578
  if (!(this.state === _constants.MEETING_STATE.STATES.LEFT)) {
7382
- _context25.next = 2;
7579
+ _context27.next = 2;
7383
7580
  break;
7384
7581
  }
7385
7582
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " meeting state was LEFT after first attempt to establish media connection. Attempting to rejoin. "));
7386
- _context25.next = 2;
7583
+ _context27.next = 2;
7387
7584
  return this.join({
7388
7585
  rejoin: true
7389
7586
  });
7390
7587
  case 2:
7391
- _context25.next = 3;
7588
+ _context27.next = 3;
7392
7589
  return this.retryEstablishMediaConnectionWithForcedTurnDiscovery(remoteMediaManagerConfig, bundlePolicy);
7393
7590
  case 3:
7394
7591
  case "end":
7395
- return _context25.stop();
7592
+ return _context27.stop();
7396
7593
  }
7397
- }, _callee25, this);
7594
+ }, _callee27, this);
7398
7595
  }));
7399
7596
  function retryWithForcedTurnDiscovery(_x20, _x21) {
7400
7597
  return _retryWithForcedTurnDiscovery.apply(this, arguments);
@@ -7416,30 +7613,30 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7416
7613
  }, {
7417
7614
  key: "handleWaitForMediaConnectionConnectedError",
7418
7615
  value: (function () {
7419
- var _handleWaitForMediaConnectionConnectedError = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee26(error, remoteMediaManagerConfig, bundlePolicy) {
7616
+ var _handleWaitForMediaConnectionConnectedError = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee28(error, remoteMediaManagerConfig, bundlePolicy) {
7420
7617
  var LOG_HEADER;
7421
- return _regenerator.default.wrap(function (_context26) {
7422
- while (1) switch (_context26.prev = _context26.next) {
7618
+ return _regenerator.default.wrap(function (_context28) {
7619
+ while (1) switch (_context28.prev = _context28.next) {
7423
7620
  case 0:
7424
7621
  LOG_HEADER = 'Meeting:index#addMedia():handleWaitForMediaConnectionConnectedError -->'; // @ts-ignore - config coming from registerPlugin
7425
7622
  if (this.turnServerUsed) {
7426
- _context26.next = 2;
7623
+ _context28.next = 2;
7427
7624
  break;
7428
7625
  }
7429
7626
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " error waiting for media to connect on UDP, TCP, retrying using TURN-TLS, "), error);
7430
- _context26.next = 1;
7627
+ _context28.next = 1;
7431
7628
  return this.retryWithForcedTurnDiscovery(remoteMediaManagerConfig, bundlePolicy);
7432
7629
  case 1:
7433
- _context26.next = 3;
7630
+ _context28.next = 3;
7434
7631
  break;
7435
7632
  case 2:
7436
7633
  _loggerProxy.default.logger.error("".concat(LOG_HEADER, " error waiting for media to connect using UDP, TCP and TURN-TLS"), error);
7437
7634
  throw new _webexErrors.AddMediaFailed(error);
7438
7635
  case 3:
7439
7636
  case "end":
7440
- return _context26.stop();
7637
+ return _context28.stop();
7441
7638
  }
7442
- }, _callee26, this);
7639
+ }, _callee28, this);
7443
7640
  }));
7444
7641
  function handleWaitForMediaConnectionConnectedError(_x22, _x23, _x24) {
7445
7642
  return _handleWaitForMediaConnectionConnectedError.apply(this, arguments);
@@ -7457,20 +7654,20 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7457
7654
  }, {
7458
7655
  key: "doTurnDiscovery",
7459
7656
  value: (function () {
7460
- var _doTurnDiscovery = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee27(isReconnecting, isForced) {
7657
+ var _doTurnDiscovery = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee29(isReconnecting, isForced) {
7461
7658
  var cdl, turnDiscoveryResult;
7462
- return _regenerator.default.wrap(function (_context27) {
7463
- while (1) switch (_context27.prev = _context27.next) {
7659
+ return _regenerator.default.wrap(function (_context29) {
7660
+ while (1) switch (_context29.prev = _context29.next) {
7464
7661
  case 0:
7465
7662
  // @ts-ignore
7466
7663
  cdl = this.webex.internal.newMetrics.callDiagnosticLatencies; // @ts-ignore
7467
7664
  this.webex.internal.newMetrics.submitInternalEvent({
7468
7665
  name: 'internal.client.add-media.turn-discovery.start'
7469
7666
  });
7470
- _context27.next = 1;
7667
+ _context29.next = 1;
7471
7668
  return this.roap.doTurnDiscovery(this, isReconnecting, isForced);
7472
7669
  case 1:
7473
- turnDiscoveryResult = _context27.sent;
7670
+ turnDiscoveryResult = _context29.sent;
7474
7671
  this.turnDiscoverySkippedReason = turnDiscoveryResult === null || turnDiscoveryResult === void 0 ? void 0 : turnDiscoveryResult.turnDiscoverySkippedReason;
7475
7672
  this.turnServerUsed = !this.turnDiscoverySkippedReason;
7476
7673
 
@@ -7486,12 +7683,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7486
7683
  retriedWithTurnServer: this.addMediaData.retriedWithTurnServer
7487
7684
  });
7488
7685
  }
7489
- return _context27.abrupt("return", turnDiscoveryResult);
7686
+ return _context29.abrupt("return", turnDiscoveryResult);
7490
7687
  case 2:
7491
7688
  case "end":
7492
- return _context27.stop();
7689
+ return _context29.stop();
7493
7690
  }
7494
- }, _callee27, this);
7691
+ }, _callee29, this);
7495
7692
  }));
7496
7693
  function doTurnDiscovery(_x25, _x26) {
7497
7694
  return _doTurnDiscovery.apply(this, arguments);
@@ -7512,35 +7709,35 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7512
7709
  }, {
7513
7710
  key: "establishMediaConnection",
7514
7711
  value: (function () {
7515
- var _establishMediaConnection = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee28(remoteMediaManagerConfig, bundlePolicy, isForced, turnServerInfo) {
7712
+ var _establishMediaConnection = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee30(remoteMediaManagerConfig, bundlePolicy, isForced, turnServerInfo) {
7516
7713
  var _this$locusMediaReque;
7517
- var LOG_HEADER, isReconnecting, _yield$this$doTurnDis, mc, _t29, _t30;
7518
- return _regenerator.default.wrap(function (_context28) {
7519
- while (1) switch (_context28.prev = _context28.next) {
7714
+ var LOG_HEADER, isReconnecting, _yield$this$doTurnDis, mc, _t30, _t31;
7715
+ return _regenerator.default.wrap(function (_context30) {
7716
+ while (1) switch (_context30.prev = _context30.next) {
7520
7717
  case 0:
7521
7718
  LOG_HEADER = 'Meeting:index#addMedia():establishMediaConnection -->';
7522
7719
  isReconnecting = this.isMoveToInProgress || !!((_this$locusMediaReque = this.locusMediaRequest) !== null && _this$locusMediaReque !== void 0 && _this$locusMediaReque.isConfluenceCreated()); // We are forcing turn discovery if the case is moveTo and a turn server was used already
7523
7720
  if (this.isMoveToInProgress && this.turnServerUsed) {
7524
7721
  isForced = true;
7525
7722
  }
7526
- _context28.prev = 1;
7723
+ _context30.prev = 1;
7527
7724
  if (turnServerInfo) {
7528
- _context28.next = 3;
7725
+ _context30.next = 3;
7529
7726
  break;
7530
7727
  }
7531
- _context28.next = 2;
7728
+ _context30.next = 2;
7532
7729
  return this.doTurnDiscovery(isReconnecting, isForced);
7533
7730
  case 2:
7534
- _yield$this$doTurnDis = _context28.sent;
7731
+ _yield$this$doTurnDis = _context30.sent;
7535
7732
  turnServerInfo = _yield$this$doTurnDis.turnServerInfo;
7536
7733
  case 3:
7537
- _context28.next = 4;
7734
+ _context30.next = 4;
7538
7735
  return this.createMediaConnection(turnServerInfo, bundlePolicy);
7539
7736
  case 4:
7540
- mc = _context28.sent;
7737
+ mc = _context30.sent;
7541
7738
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " media connection created this.isMultistream=").concat(this.isMultistream));
7542
7739
  if (!this.isMultistream) {
7543
- _context28.next = 5;
7740
+ _context30.next = 5;
7544
7741
  break;
7545
7742
  }
7546
7743
  this.remoteMediaManager = new _remoteMediaManager.RemoteMediaManager(this.receiveSlotManager, this.mediaRequestManagers, remoteMediaManagerConfig);
@@ -7548,40 +7745,40 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7548
7745
  this.forwardEvent(this.remoteMediaManager, _remoteMediaManager.Event.InterpretationAudioCreated, _constants.EVENT_TRIGGERS.REMOTE_MEDIA_INTERPRETATION_AUDIO_CREATED);
7549
7746
  this.forwardEvent(this.remoteMediaManager, _remoteMediaManager.Event.ScreenShareAudioCreated, _constants.EVENT_TRIGGERS.REMOTE_MEDIA_SCREEN_SHARE_AUDIO_CREATED);
7550
7747
  this.forwardEvent(this.remoteMediaManager, _remoteMediaManager.Event.VideoLayoutChanged, _constants.EVENT_TRIGGERS.REMOTE_MEDIA_VIDEO_LAYOUT_CHANGED);
7551
- _context28.next = 5;
7748
+ _context30.next = 5;
7552
7749
  return this.remoteMediaManager.start();
7553
7750
  case 5:
7554
- _context28.next = 6;
7751
+ _context30.next = 6;
7555
7752
  return mc.initiateOffer();
7556
7753
  case 6:
7557
- _context28.next = 7;
7754
+ _context30.next = 7;
7558
7755
  return this.waitForRemoteSDPAnswer();
7559
7756
  case 7:
7560
7757
  this.handleMediaLogging(this.mediaProperties);
7561
- _context28.next = 9;
7758
+ _context30.next = 9;
7562
7759
  break;
7563
7760
  case 8:
7564
- _context28.prev = 8;
7565
- _t29 = _context28["catch"](1);
7566
- _loggerProxy.default.logger.error("".concat(LOG_HEADER, " error establishing media connection, "), _t29);
7567
- throw _t29;
7761
+ _context30.prev = 8;
7762
+ _t30 = _context30["catch"](1);
7763
+ _loggerProxy.default.logger.error("".concat(LOG_HEADER, " error establishing media connection, "), _t30);
7764
+ throw _t30;
7568
7765
  case 9:
7569
- _context28.prev = 9;
7570
- _context28.next = 10;
7766
+ _context30.prev = 9;
7767
+ _context30.next = 10;
7571
7768
  return this.waitForMediaConnectionConnected();
7572
7769
  case 10:
7573
- _context28.next = 12;
7770
+ _context30.next = 12;
7574
7771
  break;
7575
7772
  case 11:
7576
- _context28.prev = 11;
7577
- _t30 = _context28["catch"](9);
7578
- _context28.next = 12;
7579
- return this.handleWaitForMediaConnectionConnectedError(_t30, remoteMediaManagerConfig, bundlePolicy);
7773
+ _context30.prev = 11;
7774
+ _t31 = _context30["catch"](9);
7775
+ _context30.next = 12;
7776
+ return this.handleWaitForMediaConnectionConnectedError(_t31, remoteMediaManagerConfig, bundlePolicy);
7580
7777
  case 12:
7581
7778
  case "end":
7582
- return _context28.stop();
7779
+ return _context30.stop();
7583
7780
  }
7584
- }, _callee28, this, [[1, 8], [9, 11]]);
7781
+ }, _callee30, this, [[1, 8], [9, 11]]);
7585
7782
  }));
7586
7783
  function establishMediaConnection(_x27, _x28, _x29, _x30) {
7587
7784
  return _establishMediaConnection.apply(this, arguments);
@@ -7598,16 +7795,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7598
7795
  }, {
7599
7796
  key: "cleanUpOnAddMediaFailure",
7600
7797
  value: (function () {
7601
- var _cleanUpOnAddMediaFailure = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee29() {
7798
+ var _cleanUpOnAddMediaFailure = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee31() {
7602
7799
  var _this$networkQualityM, _this$statsMonitor;
7603
- return _regenerator.default.wrap(function (_context29) {
7604
- while (1) switch (_context29.prev = _context29.next) {
7800
+ return _regenerator.default.wrap(function (_context31) {
7801
+ while (1) switch (_context31.prev = _context31.next) {
7605
7802
  case 0:
7606
7803
  if (!this.statsAnalyzer) {
7607
- _context29.next = 1;
7804
+ _context31.next = 1;
7608
7805
  break;
7609
7806
  }
7610
- _context29.next = 1;
7807
+ _context31.next = 1;
7611
7808
  return this.statsAnalyzer.stopAnalyzer();
7612
7809
  case 1:
7613
7810
  this.statsAnalyzer = null;
@@ -7618,7 +7815,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7618
7815
 
7619
7816
  // when media fails, we want to upload a webrtc dump to see whats going on
7620
7817
  // this function is async, but returns once the stats have been gathered
7621
- _context29.next = 2;
7818
+ _context31.next = 2;
7622
7819
  return this.forceSendStatsReport({
7623
7820
  callFrom: 'addMedia'
7624
7821
  });
@@ -7629,9 +7826,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7629
7826
  }
7630
7827
  case 3:
7631
7828
  case "end":
7632
- return _context29.stop();
7829
+ return _context31.stop();
7633
7830
  }
7634
- }, _callee29, this);
7831
+ }, _callee31, this);
7635
7832
  }));
7636
7833
  function cleanUpOnAddMediaFailure() {
7637
7834
  return _cleanUpOnAddMediaFailure.apply(this, arguments);
@@ -7649,16 +7846,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7649
7846
  }, {
7650
7847
  key: "downgradeFromMultistreamToTranscoded",
7651
7848
  value: (function () {
7652
- var _downgradeFromMultistreamToTranscoded = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee30() {
7849
+ var _downgradeFromMultistreamToTranscoded = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee32() {
7653
7850
  var _this$networkQualityM2, _this$statsMonitor2, _this$locusMediaReque2;
7654
- return _regenerator.default.wrap(function (_context30) {
7655
- while (1) switch (_context30.prev = _context30.next) {
7851
+ return _regenerator.default.wrap(function (_context32) {
7852
+ while (1) switch (_context32.prev = _context32.next) {
7656
7853
  case 0:
7657
7854
  if (!this.statsAnalyzer) {
7658
- _context30.next = 1;
7855
+ _context32.next = 1;
7659
7856
  break;
7660
7857
  }
7661
- _context30.next = 1;
7858
+ _context32.next = 1;
7662
7859
  return this.statsAnalyzer.stopAnalyzer();
7663
7860
  case 1:
7664
7861
  this.statsAnalyzer = null;
@@ -7676,9 +7873,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7676
7873
  this.createStatsAnalyzer();
7677
7874
  case 2:
7678
7875
  case "end":
7679
- return _context30.stop();
7876
+ return _context32.stop();
7680
7877
  }
7681
- }, _callee30, this);
7878
+ }, _callee32, this);
7682
7879
  }));
7683
7880
  function downgradeFromMultistreamToTranscoded() {
7684
7881
  return _downgradeFromMultistreamToTranscoded.apply(this, arguments);
@@ -7696,11 +7893,11 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7696
7893
  }, {
7697
7894
  key: "cleanUpBeforeRetryWithTurnServer",
7698
7895
  value: (function () {
7699
- var _cleanUpBeforeRetryWithTurnServer = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee31() {
7700
- return _regenerator.default.wrap(function (_context31) {
7701
- while (1) switch (_context31.prev = _context31.next) {
7896
+ var _cleanUpBeforeRetryWithTurnServer = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee33() {
7897
+ return _regenerator.default.wrap(function (_context33) {
7898
+ while (1) switch (_context33.prev = _context33.next) {
7702
7899
  case 0:
7703
- _context31.next = 1;
7900
+ _context33.next = 1;
7704
7901
  return this.forceSendStatsReport({
7705
7902
  callFrom: 'cleanUpBeforeRetryWithTurnServer'
7706
7903
  });
@@ -7720,9 +7917,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7720
7917
  }
7721
7918
  case 2:
7722
7919
  case "end":
7723
- return _context31.stop();
7920
+ return _context33.stop();
7724
7921
  }
7725
- }, _callee31, this);
7922
+ }, _callee33, this);
7726
7923
  }));
7727
7924
  function cleanUpBeforeRetryWithTurnServer() {
7728
7925
  return _cleanUpBeforeRetryWithTurnServer.apply(this, arguments);
@@ -7732,35 +7929,35 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7732
7929
  }, {
7733
7930
  key: "cleanUpBeforeReconnection",
7734
7931
  value: function () {
7735
- var _cleanUpBeforeReconnection = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee32() {
7736
- var _t31;
7737
- return _regenerator.default.wrap(function (_context32) {
7738
- while (1) switch (_context32.prev = _context32.next) {
7932
+ var _cleanUpBeforeReconnection = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee34() {
7933
+ var _t32;
7934
+ return _regenerator.default.wrap(function (_context34) {
7935
+ while (1) switch (_context34.prev = _context34.next) {
7739
7936
  case 0:
7740
- _context32.prev = 0;
7741
- _context32.next = 1;
7937
+ _context34.prev = 0;
7938
+ _context34.next = 1;
7742
7939
  return this.forceSendStatsReport({
7743
7940
  callFrom: 'cleanUpBeforeReconnection'
7744
7941
  });
7745
7942
  case 1:
7746
7943
  if (!this.statsAnalyzer) {
7747
- _context32.next = 2;
7944
+ _context34.next = 2;
7748
7945
  break;
7749
7946
  }
7750
- _context32.next = 2;
7947
+ _context34.next = 2;
7751
7948
  return this.statsAnalyzer.stopAnalyzer();
7752
7949
  case 2:
7753
- _context32.next = 4;
7950
+ _context34.next = 4;
7754
7951
  break;
7755
7952
  case 3:
7756
- _context32.prev = 3;
7757
- _t31 = _context32["catch"](0);
7758
- _loggerProxy.default.logger.error('Meeting:index#cleanUpBeforeReconnection --> Error during cleanup: ', _t31);
7953
+ _context34.prev = 3;
7954
+ _t32 = _context34["catch"](0);
7955
+ _loggerProxy.default.logger.error('Meeting:index#cleanUpBeforeReconnection --> Error during cleanup: ', _t32);
7759
7956
  case 4:
7760
7957
  case "end":
7761
- return _context32.stop();
7958
+ return _context34.stop();
7762
7959
  }
7763
- }, _callee32, this, [[0, 3]]);
7960
+ }, _callee34, this, [[0, 3]]);
7764
7961
  }));
7765
7962
  function cleanUpBeforeReconnection() {
7766
7963
  return _cleanUpBeforeReconnection.apply(this, arguments);
@@ -7828,7 +8025,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7828
8025
  }, {
7829
8026
  key: "addMediaInternal",
7830
8027
  value: (function () {
7831
- var _addMediaInternal = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee33(icePhaseCallback, turnServerInfo, forceTurnDiscovery) {
8028
+ var _addMediaInternal = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee35(icePhaseCallback, turnServerInfo, forceTurnDiscovery) {
7832
8029
  var options,
7833
8030
  LOG_HEADER,
7834
8031
  localStreams,
@@ -7845,6 +8042,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7845
8042
  bundlePolicy,
7846
8043
  _options$additionalMe,
7847
8044
  additionalMediaOptions,
8045
+ _options$allowPublish,
8046
+ allowPublishMediaInLobby,
7848
8047
  rawSendVideo,
7849
8048
  rawReceiveVideo,
7850
8049
  rawSendAudio,
@@ -7862,7 +8061,6 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7862
8061
  numTransports,
7863
8062
  iceCandidateErrors,
7864
8063
  reachabilityMetrics,
7865
- _this$mediaProperties13,
7866
8064
  _this$mediaProperties14,
7867
8065
  _this$mediaProperties15,
7868
8066
  _this$mediaProperties16,
@@ -7883,36 +8081,37 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7883
8081
  _this$mediaProperties31,
7884
8082
  _this$mediaProperties32,
7885
8083
  _this$mediaProperties33,
8084
+ _this$mediaProperties34,
7886
8085
  _reachabilityMetrics,
7887
8086
  _yield$this$mediaProp2,
7888
8087
  _selectedCandidatePairChanges,
7889
8088
  _numTransports,
7890
8089
  _iceCandidateErrors,
7891
- _args33 = arguments,
7892
- _t32,
7893
- _t33;
7894
- return _regenerator.default.wrap(function (_context33) {
7895
- while (1) switch (_context33.prev = _context33.next) {
8090
+ _args35 = arguments,
8091
+ _t33,
8092
+ _t34;
8093
+ return _regenerator.default.wrap(function (_context35) {
8094
+ while (1) switch (_context35.prev = _context35.next) {
7896
8095
  case 0:
7897
- options = _args33.length > 3 && _args33[3] !== undefined ? _args33[3] : {};
8096
+ options = _args35.length > 3 && _args35[3] !== undefined ? _args35[3] : {};
7898
8097
  this.addMediaData.retriedWithTurnServer = false;
7899
8098
  this.addMediaData.icePhaseCallback = icePhaseCallback;
7900
8099
  this.hasMediaConnectionConnectedAtLeastOnce = false;
7901
8100
  LOG_HEADER = 'Meeting:index#addMedia -->';
7902
8101
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " called with: options=").concat((0, _stringify.default)(options), ", turnServerInfo=").concat((0, _stringify.default)(turnServerInfo), ", forceTurnDiscovery=").concat(forceTurnDiscovery));
7903
8102
  if (!(options.allowMediaInLobby !== true && this.meetingState !== _constants.FULL_STATE.ACTIVE)) {
7904
- _context33.next = 1;
8103
+ _context35.next = 1;
7905
8104
  break;
7906
8105
  }
7907
8106
  throw new _webexErrors.MeetingNotActiveError();
7908
8107
  case 1:
7909
8108
  if (!_util2.default.isUserInLeftState(this.locusInfo)) {
7910
- _context33.next = 2;
8109
+ _context35.next = 2;
7911
8110
  break;
7912
8111
  }
7913
8112
  throw new _webexErrors.UserNotJoinedError();
7914
8113
  case 2:
7915
- localStreams = options.localStreams, _options$audioEnabled = options.audioEnabled, audioEnabled = _options$audioEnabled === void 0 ? true : _options$audioEnabled, _options$videoEnabled = options.videoEnabled, videoEnabled = _options$videoEnabled === void 0 ? true : _options$videoEnabled, _options$shareAudioEn = options.shareAudioEnabled, shareAudioEnabled = _options$shareAudioEn === void 0 ? true : _options$shareAudioEn, _options$shareVideoEn = options.shareVideoEnabled, shareVideoEnabled = _options$shareVideoEn === void 0 ? true : _options$shareVideoEn, remoteMediaManagerConfig = options.remoteMediaManagerConfig, _options$bundlePolicy = options.bundlePolicy, bundlePolicy = _options$bundlePolicy === void 0 ? 'max-bundle' : _options$bundlePolicy, _options$additionalMe = options.additionalMediaOptions, additionalMediaOptions = _options$additionalMe === void 0 ? {} : _options$additionalMe;
8114
+ localStreams = options.localStreams, _options$audioEnabled = options.audioEnabled, audioEnabled = _options$audioEnabled === void 0 ? true : _options$audioEnabled, _options$videoEnabled = options.videoEnabled, videoEnabled = _options$videoEnabled === void 0 ? true : _options$videoEnabled, _options$shareAudioEn = options.shareAudioEnabled, shareAudioEnabled = _options$shareAudioEn === void 0 ? true : _options$shareAudioEn, _options$shareVideoEn = options.shareVideoEnabled, shareVideoEnabled = _options$shareVideoEn === void 0 ? true : _options$shareVideoEn, remoteMediaManagerConfig = options.remoteMediaManagerConfig, _options$bundlePolicy = options.bundlePolicy, bundlePolicy = _options$bundlePolicy === void 0 ? 'max-bundle' : _options$bundlePolicy, _options$additionalMe = options.additionalMediaOptions, additionalMediaOptions = _options$additionalMe === void 0 ? {} : _options$additionalMe, _options$allowPublish = options.allowPublishMediaInLobby, allowPublishMediaInLobby = _options$allowPublish === void 0 ? false : _options$allowPublish;
7916
8115
  rawSendVideo = additionalMediaOptions.sendVideo, rawReceiveVideo = additionalMediaOptions.receiveVideo, rawSendAudio = additionalMediaOptions.sendAudio, rawReceiveAudio = additionalMediaOptions.receiveAudio;
7917
8116
  sendVideo = videoEnabled && (rawSendVideo !== null && rawSendVideo !== void 0 ? rawSendVideo : true);
7918
8117
  receiveVideo = videoEnabled && (rawReceiveVideo !== null && rawReceiveVideo !== void 0 ? rawReceiveVideo : true);
@@ -7923,9 +8122,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7923
8122
  // @ts-ignore
7924
8123
  ipver = _util2.default.getIpVersion(this.webex); // used just for metrics
7925
8124
  // If the user is unjoined or guest waiting in lobby dont allow the user to addMedia
7926
- // @ts-ignore - isUserUnadmitted coming from SelfUtil
7927
8125
  if (!(this.isUserUnadmitted && !this.wirelessShare && !this.allowMediaInLobby)) {
7928
- _context33.next = 3;
8126
+ _context35.next = 3;
7929
8127
  break;
7930
8128
  }
7931
8129
  throw new _webexErrors.UserInLobbyError();
@@ -7969,58 +8167,62 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7969
8167
  this.audio = (0, _muteState.createMuteState)(_constants.AUDIO, this, audioEnabled);
7970
8168
  this.video = (0, _muteState.createMuteState)(_constants.VIDEO, this, videoEnabled);
7971
8169
  this.brbState = (0, _brbState.createBrbState)(this, false);
7972
- _context33.prev = 4;
7973
- _context33.next = 5;
8170
+ _context35.prev = 4;
8171
+ if (!(allowPublishMediaInLobby || !this.isUserUnadmitted)) {
8172
+ _context35.next = 5;
8173
+ break;
8174
+ }
8175
+ _context35.next = 5;
7974
8176
  return this.setUpLocalStreamReferences(localStreams);
7975
8177
  case 5:
7976
8178
  this.setMercuryListener();
7977
8179
  this.createStatsAnalyzer();
7978
- _context33.prev = 6;
7979
- _context33.next = 7;
8180
+ _context35.prev = 6;
8181
+ _context35.next = 7;
7980
8182
  return this.establishMediaConnection(remoteMediaManagerConfig, bundlePolicy, forceTurnDiscovery, turnServerInfo);
7981
8183
  case 7:
7982
- _context33.next = 12;
8184
+ _context35.next = 12;
7983
8185
  break;
7984
8186
  case 8:
7985
- _context33.prev = 8;
7986
- _t32 = _context33["catch"](6);
7987
- if (!(_t32 instanceof _multistreamNotSupportedError.default)) {
7988
- _context33.next = 11;
8187
+ _context35.prev = 8;
8188
+ _t33 = _context35["catch"](6);
8189
+ if (!(_t33 instanceof _multistreamNotSupportedError.default)) {
8190
+ _context35.next = 11;
7989
8191
  break;
7990
8192
  }
7991
8193
  _loggerProxy.default.logger.warn("".concat(LOG_HEADER, " we asked for multistream backend (Homer), but got transcoded backend, recreating media connection..."));
7992
- _context33.next = 9;
8194
+ _context35.next = 9;
7993
8195
  return this.downgradeFromMultistreamToTranscoded();
7994
8196
  case 9:
7995
- _context33.next = 10;
8197
+ _context35.next = 10;
7996
8198
  return this.establishMediaConnection(remoteMediaManagerConfig, bundlePolicy, true, undefined);
7997
8199
  case 10:
7998
- _context33.next = 12;
8200
+ _context35.next = 12;
7999
8201
  break;
8000
8202
  case 11:
8001
- throw _t32;
8203
+ throw _t33;
8002
8204
  case 12:
8003
8205
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " media connected, finalizing..."));
8004
8206
  if (!this.mediaProperties.hasLocalShareStream()) {
8005
- _context33.next = 13;
8207
+ _context35.next = 13;
8006
8208
  break;
8007
8209
  }
8008
- _context33.next = 13;
8210
+ _context35.next = 13;
8009
8211
  return this.enqueueScreenShareFloorRequest();
8010
8212
  case 13:
8011
- _context33.next = 14;
8213
+ _context35.next = 14;
8012
8214
  return this.mediaProperties.getCurrentConnectionInfo();
8013
8215
  case 14:
8014
- _yield$this$mediaProp = _context33.sent;
8216
+ _yield$this$mediaProp = _context35.sent;
8015
8217
  connectionType = _yield$this$mediaProp.connectionType;
8016
8218
  ipVersion = _yield$this$mediaProp.ipVersion;
8017
8219
  selectedCandidatePairChanges = _yield$this$mediaProp.selectedCandidatePairChanges;
8018
8220
  numTransports = _yield$this$mediaProp.numTransports;
8019
8221
  iceCandidateErrors = Object.fromEntries(this.iceCandidateErrors);
8020
- _context33.next = 15;
8222
+ _context35.next = 15;
8021
8223
  return this.getMediaReachabilityMetricFields();
8022
8224
  case 15:
8023
- reachabilityMetrics = _context33.sent;
8225
+ reachabilityMetrics = _context35.sent;
8024
8226
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_MEDIA_SUCCESS, _objectSpread(_objectSpread(_objectSpread({
8025
8227
  correlation_id: this.correlationId,
8026
8228
  locus_id: this.locusUrl.split('/').pop(),
@@ -8050,31 +8252,31 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8050
8252
  // We can log ReceiveSlot SSRCs only after the SDP exchange, so doing it here:
8051
8253
  (_this$remoteMediaMana = this.remoteMediaManager) === null || _this$remoteMediaMana === void 0 ? void 0 : _this$remoteMediaMana.logAllReceiveSlots();
8052
8254
  this.startPeriodicLogUpload();
8053
- _context33.next = 20;
8255
+ _context35.next = 20;
8054
8256
  break;
8055
8257
  case 16:
8056
- _context33.prev = 16;
8057
- _t33 = _context33["catch"](4);
8058
- _loggerProxy.default.logger.error("".concat(LOG_HEADER, " failed to establish media connection: "), _t33);
8258
+ _context35.prev = 16;
8259
+ _t34 = _context35["catch"](4);
8260
+ _loggerProxy.default.logger.error("".concat(LOG_HEADER, " failed to establish media connection: "), _t34);
8059
8261
 
8060
8262
  // @ts-ignore
8061
- _context33.next = 17;
8263
+ _context35.next = 17;
8062
8264
  return this.getMediaReachabilityMetricFields();
8063
8265
  case 17:
8064
- _reachabilityMetrics = _context33.sent;
8065
- _context33.next = 18;
8266
+ _reachabilityMetrics = _context35.sent;
8267
+ _context35.next = 18;
8066
8268
  return this.mediaProperties.getCurrentConnectionInfo();
8067
8269
  case 18:
8068
- _yield$this$mediaProp2 = _context33.sent;
8270
+ _yield$this$mediaProp2 = _context35.sent;
8069
8271
  _selectedCandidatePairChanges = _yield$this$mediaProp2.selectedCandidatePairChanges;
8070
8272
  _numTransports = _yield$this$mediaProp2.numTransports;
8071
8273
  _iceCandidateErrors = Object.fromEntries(this.iceCandidateErrors);
8072
8274
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_MEDIA_FAILURE, _objectSpread(_objectSpread(_objectSpread({
8073
8275
  correlation_id: this.correlationId,
8074
8276
  locus_id: this.locusUrl.split('/').pop(),
8075
- reason: _t33.message,
8076
- stack: _t33.stack,
8077
- code: _t33.code,
8277
+ reason: _t34.message,
8278
+ stack: _t34.stack,
8279
+ code: _t34.code,
8078
8280
  selectedCandidatePairChanges: _selectedCandidatePairChanges,
8079
8281
  numTransports: _numTransports,
8080
8282
  turnDiscoverySkippedReason: this.turnDiscoverySkippedReason,
@@ -8082,14 +8284,14 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8082
8284
  retriedWithTurnServer: this.addMediaData.retriedWithTurnServer,
8083
8285
  isMultistream: this.isMultistream,
8084
8286
  isJoinWithMediaRetry: this.joinWithMediaRetryInfo.isRetry,
8085
- signalingState: ((_this$mediaProperties13 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties13 === void 0 ? void 0 : (_this$mediaProperties14 = _this$mediaProperties13.multistreamConnection) === null || _this$mediaProperties14 === void 0 ? void 0 : (_this$mediaProperties15 = _this$mediaProperties14.pc) === null || _this$mediaProperties15 === void 0 ? void 0 : (_this$mediaProperties16 = _this$mediaProperties15.pc) === null || _this$mediaProperties16 === void 0 ? void 0 : _this$mediaProperties16.signalingState) || ((_this$mediaProperties17 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties17 === void 0 ? void 0 : (_this$mediaProperties18 = _this$mediaProperties17.mediaConnection) === null || _this$mediaProperties18 === void 0 ? void 0 : (_this$mediaProperties19 = _this$mediaProperties18.pc) === null || _this$mediaProperties19 === void 0 ? void 0 : _this$mediaProperties19.signalingState) || 'unknown',
8086
- connectionState: ((_this$mediaProperties20 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties20 === void 0 ? void 0 : (_this$mediaProperties21 = _this$mediaProperties20.multistreamConnection) === null || _this$mediaProperties21 === void 0 ? void 0 : (_this$mediaProperties22 = _this$mediaProperties21.pc) === null || _this$mediaProperties22 === void 0 ? void 0 : (_this$mediaProperties23 = _this$mediaProperties22.pc) === null || _this$mediaProperties23 === void 0 ? void 0 : _this$mediaProperties23.connectionState) || ((_this$mediaProperties24 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties24 === void 0 ? void 0 : (_this$mediaProperties25 = _this$mediaProperties24.mediaConnection) === null || _this$mediaProperties25 === void 0 ? void 0 : (_this$mediaProperties26 = _this$mediaProperties25.pc) === null || _this$mediaProperties26 === void 0 ? void 0 : _this$mediaProperties26.connectionState) || 'unknown',
8087
- iceConnectionState: ((_this$mediaProperties27 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties27 === void 0 ? void 0 : (_this$mediaProperties28 = _this$mediaProperties27.multistreamConnection) === null || _this$mediaProperties28 === void 0 ? void 0 : (_this$mediaProperties29 = _this$mediaProperties28.pc) === null || _this$mediaProperties29 === void 0 ? void 0 : (_this$mediaProperties30 = _this$mediaProperties29.pc) === null || _this$mediaProperties30 === void 0 ? void 0 : _this$mediaProperties30.iceConnectionState) || ((_this$mediaProperties31 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties31 === void 0 ? void 0 : (_this$mediaProperties32 = _this$mediaProperties31.mediaConnection) === null || _this$mediaProperties32 === void 0 ? void 0 : (_this$mediaProperties33 = _this$mediaProperties32.pc) === null || _this$mediaProperties33 === void 0 ? void 0 : _this$mediaProperties33.iceConnectionState) || 'unknown'
8287
+ 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',
8288
+ 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',
8289
+ iceConnectionState: ((_this$mediaProperties28 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties28 === void 0 ? void 0 : (_this$mediaProperties29 = _this$mediaProperties28.multistreamConnection) === null || _this$mediaProperties29 === void 0 ? void 0 : (_this$mediaProperties30 = _this$mediaProperties29.pc) === null || _this$mediaProperties30 === void 0 ? void 0 : (_this$mediaProperties31 = _this$mediaProperties30.pc) === null || _this$mediaProperties31 === void 0 ? void 0 : _this$mediaProperties31.iceConnectionState) || ((_this$mediaProperties32 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties32 === void 0 ? void 0 : (_this$mediaProperties33 = _this$mediaProperties32.mediaConnection) === null || _this$mediaProperties33 === void 0 ? void 0 : (_this$mediaProperties34 = _this$mediaProperties33.pc) === null || _this$mediaProperties34 === void 0 ? void 0 : _this$mediaProperties34.iceConnectionState) || 'unknown'
8088
8290
  }, _reachabilityMetrics), _iceCandidateErrors), {}, {
8089
8291
  iceCandidatesCount: this.iceCandidatesCount,
8090
8292
  ipver: ipver
8091
8293
  }));
8092
- _context33.next = 19;
8294
+ _context35.next = 19;
8093
8295
  return this.cleanUpOnAddMediaFailure();
8094
8296
  case 19:
8095
8297
  // Upload logs on error while adding media
@@ -8097,21 +8299,21 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8097
8299
  file: 'meeting/index',
8098
8300
  function: 'addMedia'
8099
8301
  }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, this);
8100
- if (_t33 instanceof _internalMediaCore.Errors.SdpError) {
8302
+ if (_t34 instanceof _internalMediaCore.Errors.SdpError) {
8101
8303
  this.leave({
8102
8304
  reason: _constants.MEETING_REMOVED_REASON.MEETING_CONNECTION_FAILED
8103
8305
  });
8104
8306
  }
8105
- throw _t33;
8307
+ throw _t34;
8106
8308
  case 20:
8107
- _context33.prev = 20;
8309
+ _context35.prev = 20;
8108
8310
  this.addMediaData.icePhaseCallback = DEFAULT_ICE_PHASE_CALLBACK;
8109
- return _context33.finish(20);
8311
+ return _context35.finish(20);
8110
8312
  case 21:
8111
8313
  case "end":
8112
- return _context33.stop();
8314
+ return _context35.stop();
8113
8315
  }
8114
- }, _callee33, this, [[4, 16, 20, 21], [6, 8]]);
8316
+ }, _callee35, this, [[4, 16, 20, 21], [6, 8]]);
8115
8317
  }));
8116
8318
  function addMediaInternal(_x31, _x32, _x33) {
8117
8319
  return _addMediaInternal.apply(this, arguments);
@@ -8179,35 +8381,35 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8179
8381
  * @memberof Meeting
8180
8382
  */
8181
8383
  function () {
8182
- var _updateMedia = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee34(options) {
8384
+ var _updateMedia = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee36(options) {
8183
8385
  var audioEnabled, videoEnabled, shareAudioEnabled, shareVideoEnabled, _this$audio3, _this$video3;
8184
- return _regenerator.default.wrap(function (_context34) {
8185
- while (1) switch (_context34.prev = _context34.next) {
8386
+ return _regenerator.default.wrap(function (_context36) {
8387
+ while (1) switch (_context36.prev = _context36.next) {
8186
8388
  case 0:
8187
8389
  this.checkMediaConnection();
8188
8390
  audioEnabled = options.audioEnabled, videoEnabled = options.videoEnabled, shareAudioEnabled = options.shareAudioEnabled, shareVideoEnabled = options.shareVideoEnabled;
8189
8391
  _loggerProxy.default.logger.log("Meeting:index#updateMedia --> called with options=".concat((0, _stringify.default)(options)));
8190
8392
  if (this.canUpdateMedia()) {
8191
- _context34.next = 1;
8393
+ _context36.next = 1;
8192
8394
  break;
8193
8395
  }
8194
- return _context34.abrupt("return", this.enqueueMediaUpdate(MEDIA_UPDATE_TYPE.UPDATE_MEDIA, options));
8396
+ return _context36.abrupt("return", this.enqueueMediaUpdate(MEDIA_UPDATE_TYPE.UPDATE_MEDIA, options));
8195
8397
  case 1:
8196
8398
  if (!this.isMultistream) {
8197
- _context34.next = 3;
8399
+ _context36.next = 3;
8198
8400
  break;
8199
8401
  }
8200
8402
  if (!(shareAudioEnabled !== undefined || shareVideoEnabled !== undefined)) {
8201
- _context34.next = 2;
8403
+ _context36.next = 2;
8202
8404
  break;
8203
8405
  }
8204
8406
  throw new Error('toggling shareAudioEnabled or shareVideoEnabled in a multistream meeting is not supported, to control receiving screen share call meeting.remoteMediaManager.setLayout() with appropriate layout');
8205
8407
  case 2:
8206
- _context34.next = 4;
8408
+ _context36.next = 4;
8207
8409
  break;
8208
8410
  case 3:
8209
8411
  if (!(shareAudioEnabled !== undefined)) {
8210
- _context34.next = 4;
8412
+ _context36.next = 4;
8211
8413
  break;
8212
8414
  }
8213
8415
  throw new Error('toggling shareAudioEnabled in a transcoded meeting is not supported as of now');
@@ -8232,18 +8434,18 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8232
8434
  this.mediaProperties.mediaDirection.receiveShare = !!(shareAudioEnabled || shareVideoEnabled);
8233
8435
  }
8234
8436
  if (this.isMultistream) {
8235
- _context34.next = 5;
8437
+ _context36.next = 5;
8236
8438
  break;
8237
8439
  }
8238
- _context34.next = 5;
8440
+ _context36.next = 5;
8239
8441
  return this.updateTranscodedMediaConnection();
8240
8442
  case 5:
8241
- return _context34.abrupt("return", undefined);
8443
+ return _context36.abrupt("return", undefined);
8242
8444
  case 6:
8243
8445
  case "end":
8244
- return _context34.stop();
8446
+ return _context36.stop();
8245
8447
  }
8246
- }, _callee34, this);
8448
+ }, _callee36, this);
8247
8449
  }));
8248
8450
  function updateMedia(_x34) {
8249
8451
  return _updateMedia.apply(this, arguments);
@@ -8385,32 +8587,46 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8385
8587
  );
8386
8588
  };
8387
8589
  _loggerProxy.default.logger.log('Meeting:index#leave --> Leaving a meeting');
8388
- return _util2.default.leaveMeeting(this, options).then(function (leave) {
8389
- // CA team recommends submitting this *after* locus /leave
8390
- submitLeaveMetric();
8391
- _this49.meetingFiniteStateMachine.leave();
8392
- _this49.clearMeetingData();
8393
-
8394
- // upload logs on leave irrespective of meeting delete
8395
- _triggerProxy.default.trigger(_this49, {
8396
- file: 'meeting/index',
8397
- function: 'leave'
8398
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this49);
8590
+ return _util2.default.leaveMeeting(this, options).then(/*#__PURE__*/function () {
8591
+ var _ref42 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee37(leave) {
8592
+ return _regenerator.default.wrap(function (_context37) {
8593
+ while (1) switch (_context37.prev = _context37.next) {
8594
+ case 0:
8595
+ // CA team recommends submitting this *after* locus /leave
8596
+ submitLeaveMetric();
8597
+ _this49.meetingFiniteStateMachine.leave();
8598
+ _context37.next = 1;
8599
+ return _this49.clearMeetingData();
8600
+ case 1:
8601
+ // upload logs on leave irrespective of meeting delete
8602
+ _triggerProxy.default.trigger(_this49, {
8603
+ file: 'meeting/index',
8604
+ function: 'leave'
8605
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this49);
8399
8606
 
8400
- // TODO: more testing before we remove this code, we are not sure the scenarios for destroy here
8401
- if (_this49.wirelessShare || _this49.guest) {
8402
- // If screen sharing clean the meeting object
8403
- _triggerProxy.default.trigger(_this49, {
8404
- file: 'meeting/index',
8405
- function: 'leave'
8406
- }, _constants.EVENTS.DESTROY_MEETING, {
8407
- reason: options.reason,
8408
- meetingId: _this49.id
8409
- });
8410
- }
8411
- _loggerProxy.default.logger.log('Meeting:index#leave --> LEAVE REASON ', leaveReason);
8412
- return leave;
8413
- }).catch(function (error) {
8607
+ // TODO: more testing before we remove this code, we are not sure the scenarios for destroy here
8608
+ if (_this49.wirelessShare || _this49.guest) {
8609
+ // If screen sharing clean the meeting object
8610
+ _triggerProxy.default.trigger(_this49, {
8611
+ file: 'meeting/index',
8612
+ function: 'leave'
8613
+ }, _constants.EVENTS.DESTROY_MEETING, {
8614
+ reason: options.reason,
8615
+ meetingId: _this49.id
8616
+ });
8617
+ }
8618
+ _loggerProxy.default.logger.log('Meeting:index#leave --> LEAVE REASON ', leaveReason);
8619
+ return _context37.abrupt("return", leave);
8620
+ case 2:
8621
+ case "end":
8622
+ return _context37.stop();
8623
+ }
8624
+ }, _callee37);
8625
+ }));
8626
+ return function (_x35) {
8627
+ return _ref42.apply(this, arguments);
8628
+ };
8629
+ }()).catch(function (error) {
8414
8630
  // CA team recommends submitting this *after* locus /leave
8415
8631
  submitLeaveMetric({
8416
8632
  errors: [{
@@ -8889,10 +9105,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8889
9105
  var renderInfo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
8890
9106
  var main = renderInfo.main,
8891
9107
  content = renderInfo.content;
8892
- var _this$mediaProperties34 = this.mediaProperties,
8893
- mediaDirection = _this$mediaProperties34.mediaDirection,
8894
- remoteShareStream = _this$mediaProperties34.remoteShareStream,
8895
- remoteVideoStream = _this$mediaProperties34.remoteVideoStream;
9108
+ var _this$mediaProperties35 = this.mediaProperties,
9109
+ mediaDirection = _this$mediaProperties35.mediaDirection,
9110
+ remoteShareStream = _this$mediaProperties35.remoteShareStream,
9111
+ remoteVideoStream = _this$mediaProperties35.remoteVideoStream;
8896
9112
  var layoutInfo = (0, _lodash.cloneDeep)(this.lastVideoLayoutInfo);
8897
9113
 
8898
9114
  // TODO: We need a real time value for Audio, Video and Share send indicator
@@ -9072,16 +9288,31 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9072
9288
  correlation_id: this.correlationId,
9073
9289
  locus_id: this.locusId
9074
9290
  });
9075
- return _util2.default.endMeetingForAll(this).then(function (end) {
9076
- _this56.meetingFiniteStateMachine.end();
9077
- _this56.clearMeetingData();
9078
- // upload logs on leave irrespective of meeting delete
9079
- _triggerProxy.default.trigger(_this56, {
9080
- file: 'meeting/index',
9081
- function: 'endMeetingForAll'
9082
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this56);
9083
- return end;
9084
- }).catch(function (error) {
9291
+ return _util2.default.endMeetingForAll(this).then(/*#__PURE__*/function () {
9292
+ var _ref43 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee38(end) {
9293
+ return _regenerator.default.wrap(function (_context38) {
9294
+ while (1) switch (_context38.prev = _context38.next) {
9295
+ case 0:
9296
+ _this56.meetingFiniteStateMachine.end();
9297
+ _context38.next = 1;
9298
+ return _this56.clearMeetingData();
9299
+ case 1:
9300
+ // upload logs on leave irrespective of meeting delete
9301
+ _triggerProxy.default.trigger(_this56, {
9302
+ file: 'meeting/index',
9303
+ function: 'endMeetingForAll'
9304
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this56);
9305
+ return _context38.abrupt("return", end);
9306
+ case 2:
9307
+ case "end":
9308
+ return _context38.stop();
9309
+ }
9310
+ }, _callee38);
9311
+ }));
9312
+ return function (_x36) {
9313
+ return _ref43.apply(this, arguments);
9314
+ };
9315
+ }()).catch(function (error) {
9085
9316
  _this56.meetingFiniteStateMachine.fail(error);
9086
9317
  _loggerProxy.default.logger.error('Meeting:index#endMeetingForAll --> Failed to end meeting ', error);
9087
9318
  // upload logs on leave irrespective of meeting delete
@@ -9143,12 +9374,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9143
9374
  */
9144
9375
  }, {
9145
9376
  key: "extendMeeting",
9146
- value: function extendMeeting(_ref37) {
9147
- var meetingPolicyUrl = _ref37.meetingPolicyUrl,
9148
- meetingInstanceId = _ref37.meetingInstanceId,
9149
- participantId = _ref37.participantId,
9150
- _ref37$extensionMinut = _ref37.extensionMinutes,
9151
- extensionMinutes = _ref37$extensionMinut === void 0 ? 30 : _ref37$extensionMinut;
9377
+ value: function extendMeeting(_ref44) {
9378
+ var meetingPolicyUrl = _ref44.meetingPolicyUrl,
9379
+ meetingInstanceId = _ref44.meetingInstanceId,
9380
+ participantId = _ref44.participantId,
9381
+ _ref44$extensionMinut = _ref44.extensionMinutes,
9382
+ extensionMinutes = _ref44$extensionMinut === void 0 ? 30 : _ref44$extensionMinut;
9152
9383
  if (!meetingInstanceId || !participantId) {
9153
9384
  return _promise.default.reject(new Error('Missing meetingInstanceId or participantId'));
9154
9385
  }
@@ -9213,8 +9444,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9213
9444
  }, {
9214
9445
  key: "checkMediaConnection",
9215
9446
  value: function checkMediaConnection() {
9216
- var _this$mediaProperties35;
9217
- if ((_this$mediaProperties35 = this.mediaProperties) !== null && _this$mediaProperties35 !== void 0 && _this$mediaProperties35.webrtcMediaConnection) {
9447
+ var _this$mediaProperties36;
9448
+ if ((_this$mediaProperties36 = this.mediaProperties) !== null && _this$mediaProperties36 !== void 0 && _this$mediaProperties36.webrtcMediaConnection) {
9218
9449
  return;
9219
9450
  }
9220
9451
  throw new _webexErrors.NoMediaEstablishedYetError();
@@ -9229,39 +9460,39 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9229
9460
  }, {
9230
9461
  key: "enableMusicMode",
9231
9462
  value: (function () {
9232
- var _enableMusicMode = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee35(shouldEnableMusicMode) {
9233
- return _regenerator.default.wrap(function (_context35) {
9234
- while (1) switch (_context35.prev = _context35.next) {
9463
+ var _enableMusicMode = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee39(shouldEnableMusicMode) {
9464
+ return _regenerator.default.wrap(function (_context39) {
9465
+ while (1) switch (_context39.prev = _context39.next) {
9235
9466
  case 0:
9236
9467
  this.checkMediaConnection();
9237
9468
  if (this.isMultistream) {
9238
- _context35.next = 1;
9469
+ _context39.next = 1;
9239
9470
  break;
9240
9471
  }
9241
9472
  throw new Error('enableMusicMode() only supported with multistream');
9242
9473
  case 1:
9243
9474
  if (!shouldEnableMusicMode) {
9244
- _context35.next = 3;
9475
+ _context39.next = 3;
9245
9476
  break;
9246
9477
  }
9247
- _context35.next = 2;
9478
+ _context39.next = 2;
9248
9479
  return this.sendSlotManager.setCodecParameters(_internalMediaCore.MediaType.AudioMain, {
9249
9480
  maxaveragebitrate: '64000',
9250
9481
  maxplaybackrate: '48000'
9251
9482
  });
9252
9483
  case 2:
9253
- _context35.next = 4;
9484
+ _context39.next = 4;
9254
9485
  break;
9255
9486
  case 3:
9256
- _context35.next = 4;
9487
+ _context39.next = 4;
9257
9488
  return this.sendSlotManager.deleteCodecParameters(_internalMediaCore.MediaType.AudioMain, ['maxaveragebitrate', 'maxplaybackrate']);
9258
9489
  case 4:
9259
9490
  case "end":
9260
- return _context35.stop();
9491
+ return _context39.stop();
9261
9492
  }
9262
- }, _callee35, this);
9493
+ }, _callee39, this);
9263
9494
  }));
9264
- function enableMusicMode(_x35) {
9495
+ function enableMusicMode(_x37) {
9265
9496
  return _enableMusicMode.apply(this, arguments);
9266
9497
  }
9267
9498
  return enableMusicMode;
@@ -9274,14 +9505,14 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9274
9505
  }, {
9275
9506
  key: "updateTranscodedMediaConnection",
9276
9507
  value: function updateTranscodedMediaConnection() {
9277
- var _this$mediaProperties36,
9278
- _this$mediaProperties37,
9508
+ var _this$mediaProperties37,
9279
9509
  _this$mediaProperties38,
9280
9510
  _this$mediaProperties39,
9281
9511
  _this$mediaProperties40,
9282
9512
  _this$mediaProperties41,
9283
9513
  _this$mediaProperties42,
9284
9514
  _this$mediaProperties43,
9515
+ _this$mediaProperties44,
9285
9516
  _this57 = this;
9286
9517
  var LOG_HEADER = 'Meeting:index#updateTranscodedMediaConnection -->';
9287
9518
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " starting"));
@@ -9291,10 +9522,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9291
9522
  return this.mediaProperties.webrtcMediaConnection.update({
9292
9523
  // TODO: RoapMediaConnection is not ready to use stream classes yet, so we pass the raw MediaStreamTrack for now
9293
9524
  localTracks: {
9294
- audio: ((_this$mediaProperties36 = this.mediaProperties.audioStream) === null || _this$mediaProperties36 === void 0 ? void 0 : (_this$mediaProperties37 = _this$mediaProperties36.outputStream) === null || _this$mediaProperties37 === void 0 ? void 0 : _this$mediaProperties37.getTracks()[0]) || null,
9295
- video: ((_this$mediaProperties38 = this.mediaProperties.videoStream) === null || _this$mediaProperties38 === void 0 ? void 0 : (_this$mediaProperties39 = _this$mediaProperties38.outputStream) === null || _this$mediaProperties39 === void 0 ? void 0 : _this$mediaProperties39.getTracks()[0]) || null,
9296
- screenShareVideo: ((_this$mediaProperties40 = this.mediaProperties.shareVideoStream) === null || _this$mediaProperties40 === void 0 ? void 0 : (_this$mediaProperties41 = _this$mediaProperties40.outputStream) === null || _this$mediaProperties41 === void 0 ? void 0 : _this$mediaProperties41.getTracks()[0]) || null,
9297
- screenShareAudio: ((_this$mediaProperties42 = this.mediaProperties.shareAudioStream) === null || _this$mediaProperties42 === void 0 ? void 0 : (_this$mediaProperties43 = _this$mediaProperties42.outputStream) === null || _this$mediaProperties43 === void 0 ? void 0 : _this$mediaProperties43.getTracks()[0]) || null
9525
+ 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,
9526
+ 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,
9527
+ 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,
9528
+ screenShareAudio: ((_this$mediaProperties43 = this.mediaProperties.shareAudioStream) === null || _this$mediaProperties43 === void 0 ? void 0 : (_this$mediaProperties44 = _this$mediaProperties43.outputStream) === null || _this$mediaProperties44 === void 0 ? void 0 : _this$mediaProperties44.getTracks()[0]) || null
9298
9529
  },
9299
9530
  direction: {
9300
9531
  audio: _media.default.getDirection(true, this.mediaProperties.mediaDirection.receiveAudio, this.mediaProperties.mediaDirection.sendAudio),
@@ -9352,25 +9583,25 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9352
9583
  }, {
9353
9584
  key: "publishStream",
9354
9585
  value: (function () {
9355
- var _publishStream = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee36(mediaType, stream) {
9356
- return _regenerator.default.wrap(function (_context36) {
9357
- while (1) switch (_context36.prev = _context36.next) {
9586
+ var _publishStream = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee40(mediaType, stream) {
9587
+ return _regenerator.default.wrap(function (_context40) {
9588
+ while (1) switch (_context40.prev = _context40.next) {
9358
9589
  case 0:
9359
9590
  if (stream) {
9360
- _context36.next = 1;
9591
+ _context40.next = 1;
9361
9592
  break;
9362
9593
  }
9363
- return _context36.abrupt("return");
9594
+ return _context40.abrupt("return");
9364
9595
  case 1:
9365
9596
  if (!this.mediaProperties.webrtcMediaConnection) {
9366
- _context36.next = 3;
9597
+ _context40.next = 3;
9367
9598
  break;
9368
9599
  }
9369
9600
  if (!(this.isMultistream && this.mediaProperties.webrtcMediaConnection)) {
9370
- _context36.next = 2;
9601
+ _context40.next = 2;
9371
9602
  break;
9372
9603
  }
9373
- _context36.next = 2;
9604
+ _context40.next = 2;
9374
9605
  return this.sendSlotManager.publishStream(mediaType, stream);
9375
9606
  case 2:
9376
9607
  this.emitPublishStateChangeEvent({
@@ -9381,11 +9612,11 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9381
9612
  });
9382
9613
  case 3:
9383
9614
  case "end":
9384
- return _context36.stop();
9615
+ return _context40.stop();
9385
9616
  }
9386
- }, _callee36, this);
9617
+ }, _callee40, this);
9387
9618
  }));
9388
- function publishStream(_x36, _x37) {
9619
+ function publishStream(_x38, _x39) {
9389
9620
  return _publishStream.apply(this, arguments);
9390
9621
  }
9391
9622
  return publishStream;
@@ -9401,21 +9632,21 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9401
9632
  }, {
9402
9633
  key: "unpublishStream",
9403
9634
  value: (function () {
9404
- var _unpublishStream = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee37(mediaType, stream) {
9405
- return _regenerator.default.wrap(function (_context37) {
9406
- while (1) switch (_context37.prev = _context37.next) {
9635
+ var _unpublishStream = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee41(mediaType, stream) {
9636
+ return _regenerator.default.wrap(function (_context41) {
9637
+ while (1) switch (_context41.prev = _context41.next) {
9407
9638
  case 0:
9408
9639
  if (stream) {
9409
- _context37.next = 1;
9640
+ _context41.next = 1;
9410
9641
  break;
9411
9642
  }
9412
- return _context37.abrupt("return");
9643
+ return _context41.abrupt("return");
9413
9644
  case 1:
9414
9645
  if (!(this.isMultistream && this.mediaProperties.webrtcMediaConnection)) {
9415
- _context37.next = 2;
9646
+ _context41.next = 2;
9416
9647
  break;
9417
9648
  }
9418
- _context37.next = 2;
9649
+ _context41.next = 2;
9419
9650
  return this.sendSlotManager.unpublishStream(mediaType);
9420
9651
  case 2:
9421
9652
  this.emitPublishStateChangeEvent({
@@ -9426,11 +9657,11 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9426
9657
  });
9427
9658
  case 3:
9428
9659
  case "end":
9429
- return _context37.stop();
9660
+ return _context41.stop();
9430
9661
  }
9431
- }, _callee37, this);
9662
+ }, _callee41, this);
9432
9663
  }));
9433
- function unpublishStream(_x38, _x39) {
9664
+ function unpublishStream(_x40, _x41) {
9434
9665
  return _unpublishStream.apply(this, arguments);
9435
9666
  }
9436
9667
  return unpublishStream;
@@ -9445,19 +9676,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9445
9676
  }, {
9446
9677
  key: "publishStreams",
9447
9678
  value: (function () {
9448
- var _publishStreams = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee38(streams) {
9679
+ var _publishStreams = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee42(streams) {
9449
9680
  var _streams$screenShare, _streams$screenShare2, _streams$screenShare3, _streams$screenShare4, _streams$screenShare5, _streams$screenShare6;
9450
9681
  var streamChecks, _i, _streamChecks, _streamChecks$_i, stream, name, floorRequestNeeded, _streams$screenShare7;
9451
- return _regenerator.default.wrap(function (_context38) {
9452
- while (1) switch (_context38.prev = _context38.next) {
9682
+ return _regenerator.default.wrap(function (_context42) {
9683
+ while (1) switch (_context42.prev = _context42.next) {
9453
9684
  case 0:
9454
9685
  _loggerProxy.default.logger.info("Meeting:index#publishStreams --> called with: ".concat((0, _stringify.default)(streams)));
9455
9686
  this.checkMediaConnection();
9456
9687
  if (!(!streams.microphone && !streams.camera && !((_streams$screenShare = streams.screenShare) !== null && _streams$screenShare !== void 0 && _streams$screenShare.audio) && !((_streams$screenShare2 = streams.screenShare) !== null && _streams$screenShare2 !== void 0 && _streams$screenShare2.video))) {
9457
- _context38.next = 1;
9688
+ _context42.next = 1;
9458
9689
  break;
9459
9690
  }
9460
- return _context38.abrupt("return");
9691
+ return _context42.abrupt("return");
9461
9692
  case 1:
9462
9693
  streamChecks = [{
9463
9694
  stream: streams === null || streams === void 0 ? void 0 : streams.microphone,
@@ -9475,62 +9706,62 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9475
9706
  _i = 0, _streamChecks = streamChecks;
9476
9707
  case 2:
9477
9708
  if (!(_i < _streamChecks.length)) {
9478
- _context38.next = 4;
9709
+ _context42.next = 4;
9479
9710
  break;
9480
9711
  }
9481
9712
  _streamChecks$_i = _streamChecks[_i], stream = _streamChecks$_i.stream, name = _streamChecks$_i.name;
9482
9713
  if (!((stream === null || stream === void 0 ? void 0 : stream.readyState) === 'ended')) {
9483
- _context38.next = 3;
9714
+ _context42.next = 3;
9484
9715
  break;
9485
9716
  }
9486
9717
  throw new Error("Attempted to publish ".concat(name, " stream with ended readyState, correlationId=").concat(this.correlationId));
9487
9718
  case 3:
9488
9719
  _i++;
9489
- _context38.next = 2;
9720
+ _context42.next = 2;
9490
9721
  break;
9491
9722
  case 4:
9492
9723
  floorRequestNeeded = false; // Screenshare Audio is supported only in multi stream. So we check for screenshare audio presence only if it's a multi stream meeting
9493
9724
  if (!(this.isMultistream && (_streams$screenShare5 = streams.screenShare) !== null && _streams$screenShare5 !== void 0 && _streams$screenShare5.audio)) {
9494
- _context38.next = 6;
9725
+ _context42.next = 6;
9495
9726
  break;
9496
9727
  }
9497
- _context38.next = 5;
9728
+ _context42.next = 5;
9498
9729
  return this.setLocalShareAudioStream(streams.screenShare.audio);
9499
9730
  case 5:
9500
9731
  floorRequestNeeded = this.screenShareFloorState === ScreenShareFloorStatus.RELEASED;
9501
9732
  case 6:
9502
9733
  if (!((_streams$screenShare6 = streams.screenShare) !== null && _streams$screenShare6 !== void 0 && _streams$screenShare6.video)) {
9503
- _context38.next = 8;
9734
+ _context42.next = 8;
9504
9735
  break;
9505
9736
  }
9506
- _context38.next = 7;
9737
+ _context42.next = 7;
9507
9738
  return this.setLocalShareVideoStream((_streams$screenShare7 = streams.screenShare) === null || _streams$screenShare7 === void 0 ? void 0 : _streams$screenShare7.video);
9508
9739
  case 7:
9509
9740
  floorRequestNeeded = this.screenShareFloorState === ScreenShareFloorStatus.RELEASED;
9510
9741
  case 8:
9511
9742
  if (!streams.microphone) {
9512
- _context38.next = 9;
9743
+ _context42.next = 9;
9513
9744
  break;
9514
9745
  }
9515
- _context38.next = 9;
9746
+ _context42.next = 9;
9516
9747
  return this.setLocalAudioStream(streams.microphone);
9517
9748
  case 9:
9518
9749
  if (!streams.camera) {
9519
- _context38.next = 10;
9750
+ _context42.next = 10;
9520
9751
  break;
9521
9752
  }
9522
- _context38.next = 10;
9753
+ _context42.next = 10;
9523
9754
  return this.setLocalVideoStream(streams.camera);
9524
9755
  case 10:
9525
9756
  if (this.isMultistream) {
9526
- _context38.next = 11;
9757
+ _context42.next = 11;
9527
9758
  break;
9528
9759
  }
9529
- _context38.next = 11;
9760
+ _context42.next = 11;
9530
9761
  return this.updateTranscodedMediaConnection();
9531
9762
  case 11:
9532
9763
  if (!floorRequestNeeded) {
9533
- _context38.next = 12;
9764
+ _context42.next = 12;
9534
9765
  break;
9535
9766
  }
9536
9767
  this.localShareInstanceId = _uuid.default.v4();
@@ -9561,15 +9792,15 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9561
9792
  // we're sending the http request to Locus to request the screen share floor
9562
9793
  // only after the SDP update, because that's how it's always been done for transcoded meetings
9563
9794
  // and also if sharing from the start, we need confluence to have been created
9564
- _context38.next = 12;
9795
+ _context42.next = 12;
9565
9796
  return this.enqueueScreenShareFloorRequest();
9566
9797
  case 12:
9567
9798
  case "end":
9568
- return _context38.stop();
9799
+ return _context42.stop();
9569
9800
  }
9570
- }, _callee38, this);
9801
+ }, _callee42, this);
9571
9802
  }));
9572
- function publishStreams(_x40) {
9803
+ function publishStreams(_x42) {
9573
9804
  return _publishStreams.apply(this, arguments);
9574
9805
  }
9575
9806
  return publishStreams;
@@ -9584,10 +9815,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9584
9815
  }, {
9585
9816
  key: "unpublishStreams",
9586
9817
  value: (function () {
9587
- var _unpublishStreams = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee39(streams) {
9818
+ var _unpublishStreams = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee43(streams) {
9588
9819
  var promises, _iterator, _step, stream;
9589
- return _regenerator.default.wrap(function (_context39) {
9590
- while (1) switch (_context39.prev = _context39.next) {
9820
+ return _regenerator.default.wrap(function (_context43) {
9821
+ while (1) switch (_context43.prev = _context43.next) {
9591
9822
  case 0:
9592
9823
  _loggerProxy.default.logger.info("Meeting:index#unpublishStreams --> called with: ".concat((0, _stringify.default)(streams)));
9593
9824
  this.checkMediaConnection();
@@ -9619,7 +9850,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9619
9850
  if (!this.isMultistream) {
9620
9851
  promises.push(this.updateTranscodedMediaConnection());
9621
9852
  }
9622
- _context39.next = 1;
9853
+ _context43.next = 1;
9623
9854
  return _promise.default.all(promises);
9624
9855
  case 1:
9625
9856
  // we're allowing for the SDK to support just audio share as well
@@ -9640,11 +9871,11 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9640
9871
  }
9641
9872
  case 2:
9642
9873
  case "end":
9643
- return _context39.stop();
9874
+ return _context43.stop();
9644
9875
  }
9645
- }, _callee39, this);
9876
+ }, _callee43, this);
9646
9877
  }));
9647
- function unpublishStreams(_x41) {
9878
+ function unpublishStreams(_x43) {
9648
9879
  return _unpublishStreams.apply(this, arguments);
9649
9880
  }
9650
9881
  return unpublishStreams;
@@ -9710,16 +9941,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9710
9941
  }, {
9711
9942
  key: "getMediaReachabilityMetricFields",
9712
9943
  value: (function () {
9713
- var _getMediaReachabilityMetricFields = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee40() {
9944
+ var _getMediaReachabilityMetricFields = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee44() {
9714
9945
  var _this$mediaServerIp, _this$mediaConnection, _this$mediaConnection2, _this$mediaConnection3;
9715
9946
  var reachabilityMetrics, successKeys, totalSuccessCases, selectedSubnetFirstOctet, isSubnetReachable, selectedCluster;
9716
- return _regenerator.default.wrap(function (_context40) {
9717
- while (1) switch (_context40.prev = _context40.next) {
9947
+ return _regenerator.default.wrap(function (_context44) {
9948
+ while (1) switch (_context44.prev = _context44.next) {
9718
9949
  case 0:
9719
- _context40.next = 1;
9950
+ _context44.next = 1;
9720
9951
  return this.webex.meetings.reachability.getReachabilityMetrics();
9721
9952
  case 1:
9722
- reachabilityMetrics = _context40.sent;
9953
+ reachabilityMetrics = _context44.sent;
9723
9954
  successKeys = ['reachability_public_udp_success', 'reachability_public_tcp_success', 'reachability_public_xtls_success', 'reachability_vmn_udp_success', 'reachability_vmn_tcp_success', 'reachability_vmn_xtls_success'];
9724
9955
  totalSuccessCases = successKeys.reduce(function (total, key) {
9725
9956
  var value = reachabilityMetrics[key];
@@ -9736,16 +9967,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9736
9967
  this.webex.meetings.reachability.isSubnetReachable(selectedSubnetFirstOctet);
9737
9968
  }
9738
9969
  selectedCluster = (_this$mediaConnection = (_this$mediaConnection2 = this.mediaConnections) === null || _this$mediaConnection2 === void 0 ? void 0 : (_this$mediaConnection3 = _this$mediaConnection2[0]) === null || _this$mediaConnection3 === void 0 ? void 0 : _this$mediaConnection3.mediaAgentCluster) !== null && _this$mediaConnection !== void 0 ? _this$mediaConnection : null;
9739
- return _context40.abrupt("return", _objectSpread(_objectSpread({}, reachabilityMetrics), {}, {
9970
+ return _context44.abrupt("return", _objectSpread(_objectSpread({}, reachabilityMetrics), {}, {
9740
9971
  subnet_reachable: isSubnetReachable,
9741
9972
  selected_cluster: selectedCluster,
9742
9973
  selected_subnet: selectedSubnetFirstOctet ? "".concat(selectedSubnetFirstOctet, ".X.X.X") : null
9743
9974
  }));
9744
9975
  case 2:
9745
9976
  case "end":
9746
- return _context40.stop();
9977
+ return _context44.stop();
9747
9978
  }
9748
- }, _callee40, this);
9979
+ }, _callee44, this);
9749
9980
  }));
9750
9981
  function getMediaReachabilityMetricFields() {
9751
9982
  return _getMediaReachabilityMetricFields.apply(this, arguments);
@@ -9762,17 +9993,17 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9762
9993
  }, {
9763
9994
  key: "setStage",
9764
9995
  value: function setStage() {
9765
- var _ref38 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
9766
- _ref38$activeSpeakerP = _ref38.activeSpeakerProportion,
9767
- activeSpeakerProportion = _ref38$activeSpeakerP === void 0 ? 0.5 : _ref38$activeSpeakerP,
9768
- customBackground = _ref38.customBackground,
9769
- customLogo = _ref38.customLogo,
9770
- customNameLabel = _ref38.customNameLabel,
9771
- importantParticipants = _ref38.importantParticipants,
9772
- _ref38$lockAttendeeVi = _ref38.lockAttendeeViewOnStage,
9773
- lockAttendeeViewOnStage = _ref38$lockAttendeeVi === void 0 ? false : _ref38$lockAttendeeVi,
9774
- _ref38$showActiveSpea = _ref38.showActiveSpeaker,
9775
- showActiveSpeaker = _ref38$showActiveSpea === void 0 ? false : _ref38$showActiveSpea;
9996
+ var _ref45 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
9997
+ _ref45$activeSpeakerP = _ref45.activeSpeakerProportion,
9998
+ activeSpeakerProportion = _ref45$activeSpeakerP === void 0 ? 0.5 : _ref45$activeSpeakerP,
9999
+ customBackground = _ref45.customBackground,
10000
+ customLogo = _ref45.customLogo,
10001
+ customNameLabel = _ref45.customNameLabel,
10002
+ importantParticipants = _ref45.importantParticipants,
10003
+ _ref45$lockAttendeeVi = _ref45.lockAttendeeViewOnStage,
10004
+ lockAttendeeViewOnStage = _ref45$lockAttendeeVi === void 0 ? false : _ref45$lockAttendeeVi,
10005
+ _ref45$showActiveSpea = _ref45.showActiveSpeaker,
10006
+ showActiveSpeaker = _ref45$showActiveSpea === void 0 ? false : _ref45$showActiveSpea;
9776
10007
  var videoLayout = {
9777
10008
  overrideDefault: true,
9778
10009
  lockAttendeeViewOnStageOnly: lockAttendeeViewOnStage,
@@ -9868,6 +10099,71 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9868
10099
  value: function cancelSipCallOut(participantId) {
9869
10100
  return this.meetingRequest.cancelSipCallOut(participantId);
9870
10101
  }
10102
+
10103
+ /**
10104
+ * Method to get new data
10105
+ * @returns {Promise}
10106
+ */
10107
+ }, {
10108
+ key: "refreshDataChannelToken",
10109
+ value: (function () {
10110
+ var _refreshDataChannelToken = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee45() {
10111
+ var isPracticeSession, dataChannelTokenType, res, msg, _t35;
10112
+ return _regenerator.default.wrap(function (_context45) {
10113
+ while (1) switch (_context45.prev = _context45.next) {
10114
+ case 0:
10115
+ isPracticeSession = this.webinar.isJoinPracticeSessionDataChannel();
10116
+ dataChannelTokenType = this.getDataChannelTokenType();
10117
+ _context45.prev = 1;
10118
+ _context45.next = 2;
10119
+ return this.meetingRequest.fetchDatachannelToken({
10120
+ locusUrl: this.locusUrl,
10121
+ requestingParticipantId: this.members.selfId,
10122
+ isPracticeSession: isPracticeSession
10123
+ });
10124
+ case 2:
10125
+ res = _context45.sent;
10126
+ return _context45.abrupt("return", {
10127
+ body: {
10128
+ datachannelToken: res.body.datachannelToken,
10129
+ dataChannelTokenType: dataChannelTokenType
10130
+ }
10131
+ });
10132
+ case 3:
10133
+ _context45.prev = 3;
10134
+ _t35 = _context45["catch"](1);
10135
+ msg = (_t35 === null || _t35 === void 0 ? void 0 : _t35.message) || String(_t35);
10136
+ _loggerProxy.default.logger.warn("Meeting:index#refreshDataChannelToken --> DataChannel token refresh failed (likely locus changed or participant left): ".concat(msg), {
10137
+ statusCode: _t35 === null || _t35 === void 0 ? void 0 : _t35.statusCode
10138
+ });
10139
+ return _context45.abrupt("return", null);
10140
+ case 4:
10141
+ case "end":
10142
+ return _context45.stop();
10143
+ }
10144
+ }, _callee45, this, [[1, 3]]);
10145
+ }));
10146
+ function refreshDataChannelToken() {
10147
+ return _refreshDataChannelToken.apply(this, arguments);
10148
+ }
10149
+ return refreshDataChannelToken;
10150
+ }()
10151
+ /**
10152
+ * Determines the current data channel token type based on the meeting state.
10153
+ *
10154
+ * variant should be used when connecting to the LLM data channel.
10155
+ *
10156
+ * @returns {DataChannelTokenType} The token type representing the current session mode.
10157
+ */
10158
+ )
10159
+ }, {
10160
+ key: "getDataChannelTokenType",
10161
+ value: function getDataChannelTokenType() {
10162
+ if (this.webinar.isJoinPracticeSessionDataChannel()) {
10163
+ return _internalPluginLlm.DataChannelTokenType.PracticeSession;
10164
+ }
10165
+ return _internalPluginLlm.DataChannelTokenType.Default;
10166
+ }
9871
10167
  }]);
9872
10168
  }(_webexCore.StatelessWebexPlugin);
9873
10169
  //# sourceMappingURL=index.js.map