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

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