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

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