@webex/plugin-meetings 3.6.0 → 3.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (277) hide show
  1. package/README.md +2 -1
  2. package/dist/breakouts/breakout.js +1 -1
  3. package/dist/breakouts/index.js +1 -1
  4. package/dist/common/errors/webinar-registration-error.js +50 -0
  5. package/dist/common/errors/webinar-registration-error.js.map +1 -0
  6. package/dist/config.js +3 -1
  7. package/dist/config.js.map +1 -1
  8. package/dist/constants.js +31 -2
  9. package/dist/constants.js.map +1 -1
  10. package/dist/controls-options-manager/enums.js +1 -0
  11. package/dist/controls-options-manager/enums.js.map +1 -1
  12. package/dist/controls-options-manager/index.js +10 -3
  13. package/dist/controls-options-manager/index.js.map +1 -1
  14. package/dist/controls-options-manager/types.js.map +1 -1
  15. package/dist/controls-options-manager/util.js +12 -0
  16. package/dist/controls-options-manager/util.js.map +1 -1
  17. package/dist/index.js +7 -0
  18. package/dist/index.js.map +1 -1
  19. package/dist/interpretation/index.js +1 -1
  20. package/dist/interpretation/siLanguage.js +1 -1
  21. package/dist/locus-info/controlsUtils.js +28 -4
  22. package/dist/locus-info/controlsUtils.js.map +1 -1
  23. package/dist/locus-info/fullState.js +2 -1
  24. package/dist/locus-info/fullState.js.map +1 -1
  25. package/dist/locus-info/index.js +61 -3
  26. package/dist/locus-info/index.js.map +1 -1
  27. package/dist/locus-info/parser.js +5 -1
  28. package/dist/locus-info/parser.js.map +1 -1
  29. package/dist/meeting/in-meeting-actions.js +19 -1
  30. package/dist/meeting/in-meeting-actions.js.map +1 -1
  31. package/dist/meeting/index.js +664 -490
  32. package/dist/meeting/index.js.map +1 -1
  33. package/dist/meeting/muteState.js +5 -2
  34. package/dist/meeting/muteState.js.map +1 -1
  35. package/dist/meeting/util.js +3 -2
  36. package/dist/meeting/util.js.map +1 -1
  37. package/dist/meeting-info/meeting-info-v2.js +68 -17
  38. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  39. package/dist/meetings/index.js +25 -1
  40. package/dist/meetings/index.js.map +1 -1
  41. package/dist/members/index.js +3 -2
  42. package/dist/members/index.js.map +1 -1
  43. package/dist/members/util.js +9 -5
  44. package/dist/members/util.js.map +1 -1
  45. package/dist/metrics/constants.js +2 -1
  46. package/dist/metrics/constants.js.map +1 -1
  47. package/dist/multistream/remoteMedia.js +4 -0
  48. package/dist/multistream/remoteMedia.js.map +1 -1
  49. package/dist/networkQualityMonitor/index.js +19 -13
  50. package/dist/networkQualityMonitor/index.js.map +1 -1
  51. package/dist/reachability/index.js +3 -3
  52. package/dist/reachability/index.js.map +1 -1
  53. package/dist/reachability/request.js +2 -1
  54. package/dist/reachability/request.js.map +1 -1
  55. package/dist/roap/request.js +1 -1
  56. package/dist/roap/request.js.map +1 -1
  57. package/dist/{common/errors/parameter.d.ts → types/common/errors/webinar-registration-error.d.ts} +4 -5
  58. package/dist/types/config.d.ts +2 -0
  59. package/dist/types/constants.d.ts +25 -0
  60. package/dist/types/controls-options-manager/enums.d.ts +2 -1
  61. package/dist/types/controls-options-manager/index.d.ts +2 -1
  62. package/dist/types/controls-options-manager/types.d.ts +2 -0
  63. package/dist/types/index.d.ts +2 -1
  64. package/dist/types/locus-info/index.d.ts +9 -0
  65. package/dist/types/meeting/in-meeting-actions.d.ts +18 -0
  66. package/dist/types/meeting/index.d.ts +12 -1
  67. package/dist/types/meeting/muteState.d.ts +2 -1
  68. package/dist/types/meeting-info/meeting-info-v2.d.ts +23 -0
  69. package/dist/types/meetings/index.d.ts +9 -0
  70. package/dist/types/members/index.d.ts +2 -1
  71. package/dist/types/members/util.d.ts +3 -1
  72. package/dist/types/metrics/constants.d.ts +1 -0
  73. package/dist/types/multistream/remoteMedia.d.ts +1 -0
  74. package/dist/webinar/index.js +32 -19
  75. package/dist/webinar/index.js.map +1 -1
  76. package/package.json +22 -22
  77. package/src/common/errors/webinar-registration-error.ts +27 -0
  78. package/src/config.ts +2 -0
  79. package/src/constants.ts +31 -0
  80. package/src/controls-options-manager/enums.ts +1 -0
  81. package/src/controls-options-manager/index.ts +19 -2
  82. package/src/controls-options-manager/types.ts +2 -0
  83. package/src/controls-options-manager/util.ts +12 -0
  84. package/src/index.ts +2 -0
  85. package/src/locus-info/controlsUtils.ts +46 -2
  86. package/src/locus-info/fullState.ts +1 -0
  87. package/src/locus-info/index.ts +60 -0
  88. package/src/locus-info/parser.ts +8 -1
  89. package/src/meeting/in-meeting-actions.ts +37 -0
  90. package/src/meeting/index.ts +154 -20
  91. package/src/meeting/muteState.ts +6 -2
  92. package/src/meeting/util.ts +6 -2
  93. package/src/meeting-info/meeting-info-v2.ts +51 -0
  94. package/src/meetings/index.ts +68 -40
  95. package/src/members/index.ts +4 -2
  96. package/src/members/util.ts +3 -1
  97. package/src/metrics/constants.ts +1 -0
  98. package/src/multistream/remoteMedia.ts +5 -0
  99. package/src/reachability/index.ts +3 -3
  100. package/src/reachability/request.ts +1 -0
  101. package/src/roap/request.ts +3 -1
  102. package/src/webinar/index.ts +31 -17
  103. package/test/unit/spec/controls-options-manager/index.js +56 -32
  104. package/test/unit/spec/controls-options-manager/util.js +44 -0
  105. package/test/unit/spec/locus-info/controlsUtils.js +80 -4
  106. package/test/unit/spec/locus-info/index.js +88 -2
  107. package/test/unit/spec/meeting/in-meeting-actions.ts +18 -0
  108. package/test/unit/spec/meeting/index.js +263 -64
  109. package/test/unit/spec/meeting/muteState.js +8 -4
  110. package/test/unit/spec/meeting/utils.js +16 -1
  111. package/test/unit/spec/meeting-info/meetinginfov2.js +37 -0
  112. package/test/unit/spec/meetings/index.js +32 -1
  113. package/test/unit/spec/members/index.js +25 -2
  114. package/test/unit/spec/members/request.js +37 -3
  115. package/test/unit/spec/members/utils.js +15 -1
  116. package/test/unit/spec/multistream/remoteMedia.ts +16 -2
  117. package/test/unit/spec/reachability/index.ts +1 -1
  118. package/test/unit/spec/reachability/request.js +13 -8
  119. package/test/unit/spec/webinar/index.ts +82 -16
  120. package/dist/annotation/annotation.types.d.ts +0 -42
  121. package/dist/annotation/constants.d.ts +0 -31
  122. package/dist/annotation/index.d.ts +0 -117
  123. package/dist/breakouts/breakout.d.ts +0 -8
  124. package/dist/breakouts/collection.d.ts +0 -5
  125. package/dist/breakouts/edit-lock-error.d.ts +0 -15
  126. package/dist/breakouts/events.d.ts +0 -8
  127. package/dist/breakouts/index.d.ts +0 -5
  128. package/dist/breakouts/request.d.ts +0 -22
  129. package/dist/breakouts/utils.d.ts +0 -15
  130. package/dist/common/browser-detection.d.ts +0 -9
  131. package/dist/common/collection.d.ts +0 -48
  132. package/dist/common/config.d.ts +0 -2
  133. package/dist/common/errors/captcha-error.d.ts +0 -15
  134. package/dist/common/errors/intent-to-join.d.ts +0 -16
  135. package/dist/common/errors/join-meeting.d.ts +0 -17
  136. package/dist/common/errors/media.d.ts +0 -15
  137. package/dist/common/errors/no-meeting-info.d.ts +0 -14
  138. package/dist/common/errors/password-error.d.ts +0 -15
  139. package/dist/common/errors/permission.d.ts +0 -14
  140. package/dist/common/errors/reclaim-host-role-error.js +0 -149
  141. package/dist/common/errors/reclaim-host-role-error.js.map +0 -1
  142. package/dist/common/errors/reclaim-host-role-errors.d.ts +0 -60
  143. package/dist/common/errors/reconnection-in-progress.d.ts +0 -9
  144. package/dist/common/errors/reconnection-in-progress.js +0 -33
  145. package/dist/common/errors/reconnection-in-progress.js.map +0 -1
  146. package/dist/common/errors/reconnection.d.ts +0 -15
  147. package/dist/common/errors/stats.d.ts +0 -15
  148. package/dist/common/errors/webex-errors.d.ts +0 -93
  149. package/dist/common/errors/webex-meetings-error.d.ts +0 -20
  150. package/dist/common/events/events-scope.d.ts +0 -17
  151. package/dist/common/events/events.d.ts +0 -12
  152. package/dist/common/events/trigger-proxy.d.ts +0 -2
  153. package/dist/common/events/util.d.ts +0 -2
  154. package/dist/common/logs/logger-config.d.ts +0 -2
  155. package/dist/common/logs/logger-proxy.d.ts +0 -2
  156. package/dist/common/logs/request.d.ts +0 -36
  157. package/dist/common/queue.d.ts +0 -34
  158. package/dist/config.d.ts +0 -72
  159. package/dist/constants.d.ts +0 -1088
  160. package/dist/controls-options-manager/constants.d.ts +0 -4
  161. package/dist/controls-options-manager/enums.d.ts +0 -15
  162. package/dist/controls-options-manager/index.d.ts +0 -136
  163. package/dist/controls-options-manager/types.d.ts +0 -43
  164. package/dist/controls-options-manager/util.d.ts +0 -1
  165. package/dist/index.d.ts +0 -7
  166. package/dist/interceptors/index.d.ts +0 -2
  167. package/dist/interceptors/locusRetry.d.ts +0 -27
  168. package/dist/interpretation/collection.d.ts +0 -5
  169. package/dist/interpretation/index.d.ts +0 -5
  170. package/dist/interpretation/siLanguage.d.ts +0 -5
  171. package/dist/locus-info/controlsUtils.d.ts +0 -2
  172. package/dist/locus-info/embeddedAppsUtils.d.ts +0 -2
  173. package/dist/locus-info/fullState.d.ts +0 -2
  174. package/dist/locus-info/hostUtils.d.ts +0 -2
  175. package/dist/locus-info/index.d.ts +0 -322
  176. package/dist/locus-info/infoUtils.d.ts +0 -2
  177. package/dist/locus-info/mediaSharesUtils.d.ts +0 -2
  178. package/dist/locus-info/parser.d.ts +0 -272
  179. package/dist/locus-info/selfUtils.d.ts +0 -2
  180. package/dist/media/index.d.ts +0 -34
  181. package/dist/media/properties.d.ts +0 -93
  182. package/dist/media/util.d.ts +0 -2
  183. package/dist/mediaQualityMetrics/config.d.ts +0 -241
  184. package/dist/mediaQualityMetrics/config.js +0 -502
  185. package/dist/mediaQualityMetrics/config.js.map +0 -1
  186. package/dist/meeting/effectsState.js +0 -260
  187. package/dist/meeting/effectsState.js.map +0 -1
  188. package/dist/meeting/in-meeting-actions.d.ts +0 -167
  189. package/dist/meeting/index.d.ts +0 -1825
  190. package/dist/meeting/locusMediaRequest.d.ts +0 -74
  191. package/dist/meeting/muteState.d.ts +0 -178
  192. package/dist/meeting/request.d.ts +0 -295
  193. package/dist/meeting/request.type.d.ts +0 -11
  194. package/dist/meeting/state.d.ts +0 -9
  195. package/dist/meeting/util.d.ts +0 -119
  196. package/dist/meeting/voicea-meeting.d.ts +0 -16
  197. package/dist/meeting-info/collection.d.ts +0 -20
  198. package/dist/meeting-info/index.d.ts +0 -69
  199. package/dist/meeting-info/meeting-info-v2.d.ts +0 -123
  200. package/dist/meeting-info/request.d.ts +0 -22
  201. package/dist/meeting-info/util.d.ts +0 -2
  202. package/dist/meeting-info/utilv2.d.ts +0 -2
  203. package/dist/meetings/collection.d.ts +0 -40
  204. package/dist/meetings/index.d.ts +0 -390
  205. package/dist/meetings/meetings.types.d.ts +0 -4
  206. package/dist/meetings/request.d.ts +0 -27
  207. package/dist/meetings/util.d.ts +0 -18
  208. package/dist/member/index.d.ts +0 -160
  209. package/dist/member/member.types.js +0 -17
  210. package/dist/member/member.types.js.map +0 -1
  211. package/dist/member/types.d.ts +0 -32
  212. package/dist/member/util.d.ts +0 -2
  213. package/dist/members/collection.d.ts +0 -29
  214. package/dist/members/index.d.ts +0 -353
  215. package/dist/members/request.d.ts +0 -114
  216. package/dist/members/types.d.ts +0 -25
  217. package/dist/members/util.d.ts +0 -215
  218. package/dist/metrics/config.js +0 -276
  219. package/dist/metrics/config.js.map +0 -1
  220. package/dist/metrics/constants.d.ts +0 -70
  221. package/dist/metrics/index.d.ts +0 -45
  222. package/dist/multistream/mediaRequestManager.d.ts +0 -119
  223. package/dist/multistream/receiveSlot.d.ts +0 -68
  224. package/dist/multistream/receiveSlotManager.d.ts +0 -56
  225. package/dist/multistream/remoteMedia.d.ts +0 -72
  226. package/dist/multistream/remoteMediaGroup.d.ts +0 -49
  227. package/dist/multistream/remoteMediaManager.d.ts +0 -300
  228. package/dist/multistream/sendSlotManager.d.ts +0 -69
  229. package/dist/networkQualityMonitor/index.d.ts +0 -70
  230. package/dist/peer-connection-manager/index.js +0 -671
  231. package/dist/peer-connection-manager/index.js.map +0 -1
  232. package/dist/peer-connection-manager/util.js +0 -109
  233. package/dist/peer-connection-manager/util.js.map +0 -1
  234. package/dist/personal-meeting-room/index.d.ts +0 -47
  235. package/dist/personal-meeting-room/request.d.ts +0 -14
  236. package/dist/personal-meeting-room/util.d.ts +0 -2
  237. package/dist/reachability/clusterReachability.d.ts +0 -109
  238. package/dist/reachability/index.d.ts +0 -105
  239. package/dist/reachability/request.d.ts +0 -39
  240. package/dist/reachability/util.d.ts +0 -8
  241. package/dist/reactions/constants.d.ts +0 -3
  242. package/dist/reactions/reactions.d.ts +0 -4
  243. package/dist/reactions/reactions.type.d.ts +0 -52
  244. package/dist/reconnection-manager/index.d.ts +0 -136
  245. package/dist/recording-controller/enums.d.ts +0 -7
  246. package/dist/recording-controller/index.d.ts +0 -207
  247. package/dist/recording-controller/util.d.ts +0 -14
  248. package/dist/roap/collection.js +0 -62
  249. package/dist/roap/collection.js.map +0 -1
  250. package/dist/roap/handler.js +0 -275
  251. package/dist/roap/handler.js.map +0 -1
  252. package/dist/roap/index.d.ts +0 -86
  253. package/dist/roap/request.d.ts +0 -39
  254. package/dist/roap/state.js +0 -126
  255. package/dist/roap/state.js.map +0 -1
  256. package/dist/roap/turnDiscovery.d.ts +0 -155
  257. package/dist/roap/util.js +0 -75
  258. package/dist/roap/util.js.map +0 -1
  259. package/dist/rtcMetrics/constants.d.ts +0 -4
  260. package/dist/rtcMetrics/index.d.ts +0 -61
  261. package/dist/statsAnalyzer/global.d.ts +0 -36
  262. package/dist/statsAnalyzer/global.js +0 -126
  263. package/dist/statsAnalyzer/global.js.map +0 -1
  264. package/dist/statsAnalyzer/index.d.ts +0 -217
  265. package/dist/statsAnalyzer/index.js +0 -1013
  266. package/dist/statsAnalyzer/index.js.map +0 -1
  267. package/dist/statsAnalyzer/mqaUtil.d.ts +0 -48
  268. package/dist/statsAnalyzer/mqaUtil.js +0 -179
  269. package/dist/statsAnalyzer/mqaUtil.js.map +0 -1
  270. package/dist/transcription/index.d.ts +0 -64
  271. package/dist/types/common/errors/reconnection-in-progress.d.ts +0 -9
  272. package/dist/types/mediaQualityMetrics/config.d.ts +0 -241
  273. package/dist/types/statsAnalyzer/global.d.ts +0 -36
  274. package/dist/types/statsAnalyzer/index.d.ts +0 -217
  275. package/dist/types/statsAnalyzer/mqaUtil.d.ts +0 -48
  276. package/dist/webinar/collection.d.ts +0 -16
  277. package/dist/webinar/index.d.ts +0 -5
@@ -86,6 +86,7 @@ var _controlsOptionsManager = _interopRequireDefault(require("../controls-option
86
86
  var _permission = _interopRequireDefault(require("../common/errors/permission"));
87
87
  var _locusMediaRequest = require("./locusMediaRequest");
88
88
  var _connectionStateHandler = require("./connectionStateHandler");
89
+ var _webinarRegistrationError = _interopRequireDefault(require("../common/errors/webinar-registration-error"));
89
90
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof _Symbol !== "undefined" && o[_Symbol$iterator] || o["@@iterator"]; if (!it) { if (_Array$isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, 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 normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
90
91
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return _Array$from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
91
92
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
@@ -1003,7 +1004,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
1003
1004
  });
1004
1005
  _this.iceCandidatesCount = 0;
1005
1006
  _this.mediaProperties.webrtcMediaConnection.on(_internalMediaCore.MediaConnectionEventNames.ICE_CANDIDATE, function (event) {
1006
- if (event.candidate) {
1007
+ if (event.candidate && event.candidate.candidate && event.candidate.candidate.length > 0) {
1007
1008
  _this.iceCandidatesCount += 1;
1008
1009
  }
1009
1010
  });
@@ -1218,31 +1219,35 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
1218
1219
  return _regenerator.default.wrap(function _callee2$(_context2) {
1219
1220
  while (1) switch (_context2.prev = _context2.next) {
1220
1221
  case 0:
1222
+ _loggerProxy.default.logger.info("Meeting:index#handleShareAudioStreamEnded --> audio share stream ended");
1223
+ // current share audio stream has ended, but there might be an active
1224
+ // share video stream. we only leave from wireless share if share has
1225
+ // completely ended, which means no share audio or video streams active
1221
1226
  if (!(_this.wirelessShare && !_this.mediaProperties.shareVideoStream)) {
1222
- _context2.next = 4;
1227
+ _context2.next = 5;
1223
1228
  break;
1224
1229
  }
1225
1230
  _this.leave({
1226
1231
  reason: _constants.MEETING_REMOVED_REASON.USER_ENDED_SHARE_STREAMS
1227
1232
  });
1228
- _context2.next = 12;
1233
+ _context2.next = 13;
1229
1234
  break;
1230
- case 4:
1231
- _context2.prev = 4;
1232
- _context2.next = 7;
1235
+ case 5:
1236
+ _context2.prev = 5;
1237
+ _context2.next = 8;
1233
1238
  return _this.unpublishStreams([_this.mediaProperties.shareAudioStream]);
1234
- case 7:
1235
- _context2.next = 12;
1239
+ case 8:
1240
+ _context2.next = 13;
1236
1241
  break;
1237
- case 9:
1238
- _context2.prev = 9;
1239
- _context2.t0 = _context2["catch"](4);
1242
+ case 10:
1243
+ _context2.prev = 10;
1244
+ _context2.t0 = _context2["catch"](5);
1240
1245
  _loggerProxy.default.logger.log('Meeting:index#handleShareAudioStreamEnded --> Error stopping share: ', _context2.t0);
1241
- case 12:
1246
+ case 13:
1242
1247
  case "end":
1243
1248
  return _context2.stop();
1244
1249
  }
1245
- }, _callee2, null, [[4, 9]]);
1250
+ }, _callee2, null, [[5, 10]]);
1246
1251
  })));
1247
1252
  /**
1248
1253
  * Functionality for when a share video is muted or unmuted.
@@ -1270,33 +1275,37 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
1270
1275
  return _regenerator.default.wrap(function _callee3$(_context3) {
1271
1276
  while (1) switch (_context3.prev = _context3.next) {
1272
1277
  case 0:
1278
+ _loggerProxy.default.logger.info("Meeting:index#handleShareVideoStreamEnded --> video share stream ended");
1279
+ // current share video stream has ended, but there might be an active
1280
+ // share audio stream. we only leave from wireless share if share has
1281
+ // completely ended, which means no share audio or video streams active
1273
1282
  if (!(_this.wirelessShare && !_this.mediaProperties.shareAudioStream)) {
1274
- _context3.next = 4;
1283
+ _context3.next = 5;
1275
1284
  break;
1276
1285
  }
1277
1286
  _this.leave({
1278
1287
  reason: _constants.MEETING_REMOVED_REASON.USER_ENDED_SHARE_STREAMS
1279
1288
  });
1280
- _context3.next = 12;
1289
+ _context3.next = 13;
1281
1290
  break;
1282
- case 4:
1283
- _context3.prev = 4;
1284
- _context3.next = 7;
1291
+ case 5:
1292
+ _context3.prev = 5;
1293
+ _context3.next = 8;
1285
1294
  return _this.unpublishStreams([_this.mediaProperties.shareVideoStream]);
1286
- case 7:
1287
- _context3.next = 12;
1295
+ case 8:
1296
+ _context3.next = 13;
1288
1297
  break;
1289
- case 9:
1290
- _context3.prev = 9;
1291
- _context3.t0 = _context3["catch"](4);
1298
+ case 10:
1299
+ _context3.prev = 10;
1300
+ _context3.t0 = _context3["catch"](5);
1292
1301
  _loggerProxy.default.logger.log('Meeting:index#handleShareVideoStreamEnded --> Error stopping share: ', _context3.t0);
1293
- case 12:
1294
- _this.triggerStoppedSharing();
1295
1302
  case 13:
1303
+ _this.triggerStoppedSharing();
1304
+ case 14:
1296
1305
  case "end":
1297
1306
  return _context3.stop();
1298
1307
  }
1299
- }, _callee3, null, [[4, 9]]);
1308
+ }, _callee3, null, [[5, 10]]);
1300
1309
  })));
1301
1310
  /**
1302
1311
  * Emits meeting:stoppedSharingLocal
@@ -2413,8 +2422,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2413
2422
  }
2414
2423
  throw new _permission.default();
2415
2424
  case 21:
2425
+ if (!(_context5.t0 instanceof _meetingInfoV.MeetingInfoV2WebinarRegistrationError)) {
2426
+ _context5.next = 28;
2427
+ break;
2428
+ }
2429
+ this.meetingInfoFailureReason = _constants.MEETING_INFO_FAILURE_REASON.WEBINAR_REGISTRATION;
2430
+ this.meetingInfoFailureCode = _context5.t0.wbxAppApiCode;
2431
+ if (_context5.t0.meetingInfo) {
2432
+ this.meetingInfo = _context5.t0.meetingInfo;
2433
+ }
2434
+ throw new _webinarRegistrationError.default();
2435
+ case 28:
2416
2436
  if (!(_context5.t0 instanceof _meetingInfoV.MeetingInfoV2PasswordError)) {
2417
- _context5.next = 33;
2437
+ _context5.next = 40;
2418
2438
  break;
2419
2439
  }
2420
2440
  _loggerProxy.default.logger.info( // @ts-ignore
@@ -2429,16 +2449,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2429
2449
  this.passwordStatus = _constants.PASSWORD_STATUS.REQUIRED;
2430
2450
  this.meetingInfoFailureReason = _constants.MEETING_INFO_FAILURE_REASON.WRONG_PASSWORD;
2431
2451
  if (!this.requiredCaptcha) {
2432
- _context5.next = 30;
2452
+ _context5.next = 37;
2433
2453
  break;
2434
2454
  }
2435
- _context5.next = 30;
2455
+ _context5.next = 37;
2436
2456
  return this.refreshCaptcha();
2437
- case 30:
2457
+ case 37:
2438
2458
  throw new _passwordError.default();
2439
- case 33:
2459
+ case 40:
2440
2460
  if (!(_context5.t0 instanceof _meetingInfoV.MeetingInfoV2CaptchaError)) {
2441
- _context5.next = 42;
2461
+ _context5.next = 49;
2442
2462
  break;
2443
2463
  }
2444
2464
  _loggerProxy.default.logger.info( // @ts-ignore
@@ -2450,10 +2470,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2450
2470
  }
2451
2471
  this.requiredCaptcha = _context5.t0.captchaInfo;
2452
2472
  throw new _captchaError.default();
2453
- case 42:
2473
+ case 49:
2454
2474
  this.meetingInfoFailureReason = _constants.MEETING_INFO_FAILURE_REASON.OTHER;
2455
2475
  throw _context5.t0;
2456
- case 44:
2476
+ case 51:
2457
2477
  case "end":
2458
2478
  return _context5.stop();
2459
2479
  }
@@ -2682,6 +2702,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2682
2702
  this.setUpLocusInfoSelfListener();
2683
2703
  this.setUpLocusInfoMeetingListener();
2684
2704
  this.setUpLocusServicesListener();
2705
+ this.setUpLocusResourcesListener();
2685
2706
  // members update listeners
2686
2707
  this.setUpLocusFullStateListener();
2687
2708
  this.setUpLocusUrlListener();
@@ -3198,8 +3219,44 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3198
3219
  state: state
3199
3220
  });
3200
3221
  });
3201
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_VIDEO_CHANGED, function (_ref22) {
3222
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_WEBCAST_CHANGED, function (_ref22) {
3202
3223
  var state = _ref22.state;
3224
+ _triggerProxy.default.trigger(_this13, {
3225
+ file: 'meeting/index',
3226
+ function: 'setupLocusControlsListener'
3227
+ }, _constants.EVENT_TRIGGERS.MEETING_CONTROLS_WEBCAST_UPDATED, {
3228
+ state: state
3229
+ });
3230
+ });
3231
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_FULL_CHANGED, function (_ref23) {
3232
+ var state = _ref23.state;
3233
+ _triggerProxy.default.trigger(_this13, {
3234
+ file: 'meeting/index',
3235
+ function: 'setupLocusControlsListener'
3236
+ }, _constants.EVENT_TRIGGERS.MEETING_CONTROLS_MEETING_FULL_UPDATED, {
3237
+ state: state
3238
+ });
3239
+ });
3240
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_PRACTICE_SESSION_STATUS_UPDATED, function (_ref24) {
3241
+ var state = _ref24.state;
3242
+ _triggerProxy.default.trigger(_this13, {
3243
+ file: 'meeting/index',
3244
+ function: 'setupLocusControlsListener'
3245
+ }, _constants.EVENT_TRIGGERS.MEETING_CONTROLS_PRACTICE_SESSION_STATUS_UPDATED, {
3246
+ state: state
3247
+ });
3248
+ });
3249
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_STAGE_VIEW_UPDATED, function (_ref25) {
3250
+ var state = _ref25.state;
3251
+ _triggerProxy.default.trigger(_this13, {
3252
+ file: 'meeting/index',
3253
+ function: 'setupLocusControlsListener'
3254
+ }, _constants.EVENT_TRIGGERS.MEETING_CONTROLS_STAGE_VIEW_UPDATED, {
3255
+ state: state
3256
+ });
3257
+ });
3258
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_VIDEO_CHANGED, function (_ref26) {
3259
+ var state = _ref26.state;
3203
3260
  _triggerProxy.default.trigger(_this13, {
3204
3261
  file: 'meeting/index',
3205
3262
  function: 'setupLocusControlsListener'
@@ -3246,7 +3303,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3246
3303
  var _this14 = this;
3247
3304
  // Will get triggered on local and remote share
3248
3305
  this.locusInfo.on(_constants.EVENTS.LOCUS_INFO_UPDATE_MEDIA_SHARES, /*#__PURE__*/function () {
3249
- var _ref23 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8(payload) {
3306
+ var _ref27 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8(payload) {
3250
3307
  var _payload$previous, _payload$previous2;
3251
3308
  var _payload$current, contentShare, whiteboardShare, previousContentShare, previousWhiteboardShare, newShareStatus, oldShareStatus, sendStartedSharingRemote, _this14$mediaProperti;
3252
3309
  return _regenerator.default.wrap(function _callee8$(_context8) {
@@ -3288,8 +3345,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3288
3345
  else if ((previousContentShare && contentShare.disposition === _constants.FLOOR_ACTION.RELEASED || contentShare.disposition === null) && (previousWhiteboardShare && whiteboardShare.disposition === _constants.FLOOR_ACTION.RELEASED || whiteboardShare.disposition === null)) {
3289
3346
  newShareStatus = _constants.SHARE_STATUS.NO_SHARE;
3290
3347
  }
3348
+ _loggerProxy.default.logger.info("Meeting:index#setUpLocusInfoMediaInactiveListener --> this.shareStatus=".concat(_this14.shareStatus, " newShareStatus=").concat(newShareStatus));
3291
3349
  if (!(newShareStatus !== _this14.shareStatus)) {
3292
- _context8.next = 45;
3350
+ _context8.next = 46;
3293
3351
  break;
3294
3352
  }
3295
3353
  oldShareStatus = _this14.shareStatus; // update our state before we send out any notifications
@@ -3297,37 +3355,37 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3297
3355
 
3298
3356
  // send out "stop" notifications for the old state
3299
3357
  _context8.t0 = oldShareStatus;
3300
- _context8.next = _context8.t0 === _constants.SHARE_STATUS.REMOTE_SHARE_ACTIVE ? 14 : _context8.t0 === _constants.SHARE_STATUS.LOCAL_SHARE_ACTIVE ? 16 : _context8.t0 === _constants.SHARE_STATUS.WHITEBOARD_SHARE_ACTIVE ? 18 : _context8.t0 === _constants.SHARE_STATUS.NO_SHARE ? 20 : 21;
3358
+ _context8.next = _context8.t0 === _constants.SHARE_STATUS.REMOTE_SHARE_ACTIVE ? 15 : _context8.t0 === _constants.SHARE_STATUS.LOCAL_SHARE_ACTIVE ? 17 : _context8.t0 === _constants.SHARE_STATUS.WHITEBOARD_SHARE_ACTIVE ? 19 : _context8.t0 === _constants.SHARE_STATUS.NO_SHARE ? 21 : 22;
3301
3359
  break;
3302
- case 14:
3360
+ case 15:
3303
3361
  _triggerProxy.default.trigger(_this14, {
3304
3362
  file: 'meetings/index',
3305
3363
  function: 'remoteShare'
3306
3364
  }, _constants.EVENT_TRIGGERS.MEETING_STOPPED_SHARING_REMOTE);
3307
- return _context8.abrupt("break", 22);
3308
- case 16:
3365
+ return _context8.abrupt("break", 23);
3366
+ case 17:
3309
3367
  _triggerProxy.default.trigger(_this14, {
3310
3368
  file: 'meeting/index',
3311
3369
  function: 'localShare'
3312
3370
  }, _constants.EVENT_TRIGGERS.MEETING_STOPPED_SHARING_LOCAL, {
3313
3371
  reason: _constants.SHARE_STOPPED_REASON.SELF_STOPPED
3314
3372
  });
3315
- return _context8.abrupt("break", 22);
3316
- case 18:
3373
+ return _context8.abrupt("break", 23);
3374
+ case 19:
3317
3375
  _triggerProxy.default.trigger(_this14, {
3318
3376
  file: 'meeting/index',
3319
3377
  function: 'stopWhiteboardShare'
3320
3378
  }, _constants.EVENT_TRIGGERS.MEETING_STOPPED_SHARING_WHITEBOARD);
3321
- return _context8.abrupt("break", 22);
3322
- case 20:
3323
- return _context8.abrupt("break", 22);
3379
+ return _context8.abrupt("break", 23);
3324
3380
  case 21:
3325
- return _context8.abrupt("break", 22);
3381
+ return _context8.abrupt("break", 23);
3326
3382
  case 22:
3383
+ return _context8.abrupt("break", 23);
3384
+ case 23:
3327
3385
  _context8.t1 = newShareStatus;
3328
- _context8.next = _context8.t1 === _constants.SHARE_STATUS.REMOTE_SHARE_ACTIVE ? 25 : _context8.t1 === _constants.SHARE_STATUS.LOCAL_SHARE_ACTIVE ? 34 : _context8.t1 === _constants.SHARE_STATUS.WHITEBOARD_SHARE_ACTIVE ? 37 : _context8.t1 === _constants.SHARE_STATUS.NO_SHARE ? 40 : 41;
3386
+ _context8.next = _context8.t1 === _constants.SHARE_STATUS.REMOTE_SHARE_ACTIVE ? 26 : _context8.t1 === _constants.SHARE_STATUS.LOCAL_SHARE_ACTIVE ? 35 : _context8.t1 === _constants.SHARE_STATUS.WHITEBOARD_SHARE_ACTIVE ? 38 : _context8.t1 === _constants.SHARE_STATUS.NO_SHARE ? 41 : 42;
3329
3387
  break;
3330
- case 25:
3388
+ case 26:
3331
3389
  sendStartedSharingRemote = function sendStartedSharingRemote() {
3332
3390
  _this14.remoteShareInstanceId = contentShare.shareInstanceId;
3333
3391
  _triggerProxy.default.trigger(_this14, {
@@ -3341,20 +3399,20 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3341
3399
  resourceType: contentShare.resourceType
3342
3400
  });
3343
3401
  };
3344
- _context8.prev = 26;
3402
+ _context8.prev = 27;
3345
3403
  if (!((_this14$mediaProperti = _this14.mediaProperties.mediaDirection) !== null && _this14$mediaProperti !== void 0 && _this14$mediaProperti.sendShare && oldShareStatus === _constants.SHARE_STATUS.LOCAL_SHARE_ACTIVE)) {
3346
- _context8.next = 30;
3404
+ _context8.next = 31;
3347
3405
  break;
3348
3406
  }
3349
- _context8.next = 30;
3407
+ _context8.next = 31;
3350
3408
  return _this14.unpublishStreams([_this14.mediaProperties.shareVideoStream, _this14.mediaProperties.shareAudioStream]);
3351
- case 30:
3352
- _context8.prev = 30;
3409
+ case 31:
3410
+ _context8.prev = 31;
3353
3411
  sendStartedSharingRemote();
3354
- return _context8.finish(30);
3355
- case 33:
3356
- return _context8.abrupt("break", 42);
3412
+ return _context8.finish(31);
3357
3413
  case 34:
3414
+ return _context8.abrupt("break", 43);
3415
+ case 35:
3358
3416
  _triggerProxy.default.trigger(_this14, {
3359
3417
  file: 'meeting/index',
3360
3418
  function: 'share'
@@ -3370,8 +3428,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3370
3428
  meetingId: _this14.id
3371
3429
  }
3372
3430
  });
3373
- return _context8.abrupt("break", 42);
3374
- case 37:
3431
+ return _context8.abrupt("break", 43);
3432
+ case 38:
3375
3433
  _triggerProxy.default.trigger(_this14, {
3376
3434
  file: 'meeting/index',
3377
3435
  function: 'startWhiteboardShare'
@@ -3389,16 +3447,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3389
3447
  meetingId: _this14.id
3390
3448
  }
3391
3449
  });
3392
- return _context8.abrupt("break", 42);
3393
- case 40:
3394
- return _context8.abrupt("break", 42);
3450
+ return _context8.abrupt("break", 43);
3395
3451
  case 41:
3396
- return _context8.abrupt("break", 42);
3452
+ return _context8.abrupt("break", 43);
3397
3453
  case 42:
3454
+ return _context8.abrupt("break", 43);
3455
+ case 43:
3398
3456
  _this14.members.locusMediaSharesUpdate(payload);
3399
- _context8.next = 46;
3457
+ _context8.next = 47;
3400
3458
  break;
3401
- case 45:
3459
+ case 46:
3402
3460
  if (newShareStatus === _constants.SHARE_STATUS.REMOTE_SHARE_ACTIVE) {
3403
3461
  // if we got here, then some remote participant has stolen
3404
3462
  // the presentation from another remote participant
@@ -3436,14 +3494,14 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3436
3494
  });
3437
3495
  _this14.members.locusMediaSharesUpdate(payload);
3438
3496
  }
3439
- case 46:
3497
+ case 47:
3440
3498
  case "end":
3441
3499
  return _context8.stop();
3442
3500
  }
3443
- }, _callee8, null, [[26,, 30, 33]]);
3501
+ }, _callee8, null, [[27,, 31, 34]]);
3444
3502
  }));
3445
3503
  return function (_x8) {
3446
- return _ref23.apply(this, arguments);
3504
+ return _ref27.apply(this, arguments);
3447
3505
  };
3448
3506
  }());
3449
3507
  }
@@ -3493,14 +3551,29 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3493
3551
  value: function setUpLocusServicesListener() {
3494
3552
  var _this16 = this;
3495
3553
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.LINKS_SERVICES, function (payload) {
3496
- var _payload$services, _payload$services$rec, _this16$locusInfo, _this16$locusInfo$ful, _payload$services2, _payload$services2$br, _payload$services3, _payload$services3$ap, _payload$services4, _payload$services4$ap, _payload$services5, _payload$services5$we, _payload$services6, _payload$services6$we;
3554
+ var _payload$services, _payload$services$rec, _this16$locusInfo, _this16$locusInfo$ful, _payload$services2, _payload$services2$br, _payload$services3, _payload$services3$ap, _payload$services4, _payload$services4$ap;
3497
3555
  _this16.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);
3498
3556
  _this16.recordingController.setSessionId((_this16$locusInfo = _this16.locusInfo) === null || _this16$locusInfo === void 0 ? void 0 : (_this16$locusInfo$ful = _this16$locusInfo.fullState) === null || _this16$locusInfo$ful === void 0 ? void 0 : _this16$locusInfo$ful.sessionId);
3499
3557
  _this16.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);
3500
3558
  _this16.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);
3501
3559
  _this16.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);
3502
- _this16.webinar.webcastUrlUpdate(payload === null || payload === void 0 ? void 0 : (_payload$services5 = payload.services) === null || _payload$services5 === void 0 ? void 0 : (_payload$services5$we = _payload$services5.webcast) === null || _payload$services5$we === void 0 ? void 0 : _payload$services5$we.url);
3503
- _this16.webinar.webinarAttendeesSearchingUrlUpdate(payload === null || payload === void 0 ? void 0 : (_payload$services6 = payload.services) === null || _payload$services6 === void 0 ? void 0 : (_payload$services6$we = _payload$services6.webinarAttendeesSearching) === null || _payload$services6$we === void 0 ? void 0 : _payload$services6$we.url);
3560
+ });
3561
+ }
3562
+
3563
+ /**
3564
+ * Set up the locus info resources link listener
3565
+ * update the locusInfo for webcast instance url
3566
+ * @param {Object} payload - The event payload
3567
+ * @returns {undefined}
3568
+ * @private
3569
+ * @memberof Meeting
3570
+ */
3571
+ }, {
3572
+ key: "setUpLocusResourcesListener",
3573
+ value: function setUpLocusResourcesListener() {
3574
+ var _this17 = this;
3575
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.LINKS_RESOURCES, function (payload) {
3576
+ _this17.webinar.updateWebcastUrl(payload);
3504
3577
  });
3505
3578
  }
3506
3579
 
@@ -3513,10 +3586,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3513
3586
  }, {
3514
3587
  key: "setUpLocusInfoMeetingInfoListener",
3515
3588
  value: function setUpLocusInfoMeetingInfoListener() {
3516
- var _this17 = this;
3589
+ var _this18 = this;
3517
3590
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.MEETING_LOCKED, function (payload) {
3518
3591
  if (payload) {
3519
- _triggerProxy.default.trigger(_this17, {
3592
+ _triggerProxy.default.trigger(_this18, {
3520
3593
  file: 'meeting/index',
3521
3594
  function: 'setUpLocusInfoMeetingInfoListener'
3522
3595
  }, _constants.EVENT_TRIGGERS.MEETING_LOCKED, {
@@ -3526,7 +3599,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3526
3599
  });
3527
3600
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.MEETING_UNLOCKED, function (payload) {
3528
3601
  if (payload) {
3529
- _triggerProxy.default.trigger(_this17, {
3602
+ _triggerProxy.default.trigger(_this18, {
3530
3603
  file: 'meeting/index',
3531
3604
  function: 'setUpLocusInfoMeetingInfoListener'
3532
3605
  }, _constants.EVENT_TRIGGERS.MEETING_UNLOCKED, {
@@ -3534,16 +3607,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3534
3607
  });
3535
3608
  }
3536
3609
  });
3537
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.MEETING_INFO_UPDATED, function (_ref24) {
3538
- var isInitializing = _ref24.isInitializing;
3539
- _this17.updateMeetingActions();
3540
- _this17.recordingController.setDisplayHints(_this17.userDisplayHints);
3541
- _this17.recordingController.setUserPolicy(_this17.selfUserPolicies);
3542
- _this17.controlsOptionsManager.setDisplayHints(_this17.userDisplayHints);
3543
- _this17.handleDataChannelUrlChange(_this17.datachannelUrl);
3610
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.MEETING_INFO_UPDATED, function (_ref28) {
3611
+ var isInitializing = _ref28.isInitializing;
3612
+ _this18.updateMeetingActions();
3613
+ _this18.recordingController.setDisplayHints(_this18.userDisplayHints);
3614
+ _this18.recordingController.setUserPolicy(_this18.selfUserPolicies);
3615
+ _this18.controlsOptionsManager.setDisplayHints(_this18.userDisplayHints);
3616
+ _this18.handleDataChannelUrlChange(_this18.datachannelUrl);
3544
3617
  if (!isInitializing) {
3545
3618
  // send updated trigger only if locus is not initializing the meeting
3546
- _triggerProxy.default.trigger(_this17, {
3619
+ _triggerProxy.default.trigger(_this18, {
3547
3620
  file: 'meetings',
3548
3621
  function: 'setUpLocusInfoMeetingInfoListener'
3549
3622
  }, _constants.EVENT_TRIGGERS.MEETING_INFO_UPDATED);
@@ -3574,10 +3647,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3574
3647
  }, {
3575
3648
  key: "setUpLocusEmbeddedAppsListener",
3576
3649
  value: function setUpLocusEmbeddedAppsListener() {
3577
- var _this18 = this;
3650
+ var _this19 = this;
3578
3651
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.EMBEDDED_APPS_UPDATED, function (embeddedApps) {
3579
3652
  if (embeddedApps) {
3580
- _triggerProxy.default.trigger(_this18, {
3653
+ _triggerProxy.default.trigger(_this19, {
3581
3654
  file: 'meeting/index',
3582
3655
  function: 'setUpLocusEmbeddedAppsListener'
3583
3656
  }, _constants.EVENT_TRIGGERS.MEETING_EMBEDDED_APPS_UPDATE, embeddedApps);
@@ -3594,11 +3667,11 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3594
3667
  }, {
3595
3668
  key: "setUpLocusInfoSelfListener",
3596
3669
  value: function setUpLocusInfoSelfListener() {
3597
- var _this19 = this;
3670
+ var _this20 = this;
3598
3671
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.LOCAL_UNMUTE_REQUIRED, function (payload) {
3599
- if (_this19.audio) {
3600
- _this19.audio.handleServerLocalUnmuteRequired(_this19);
3601
- _triggerProxy.default.trigger(_this19, {
3672
+ if (_this20.audio) {
3673
+ _this20.audio.handleServerLocalUnmuteRequired(_this20, payload.unmuteAllowed);
3674
+ _triggerProxy.default.trigger(_this20, {
3602
3675
  file: 'meeting/index',
3603
3676
  function: 'setUpLocusInfoSelfListener'
3604
3677
  }, _constants.EVENT_TRIGGERS.MEETING_SELF_UNMUTED_BY_OTHERS, {
@@ -3608,13 +3681,13 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3608
3681
  });
3609
3682
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED, function (payload) {
3610
3683
  if (payload) {
3611
- if (_this19.video) {
3684
+ if (_this20.video) {
3612
3685
  var _payload$muted, _payload$unmuteAllowe;
3613
- payload.muted = (_payload$muted = payload.muted) !== null && _payload$muted !== void 0 ? _payload$muted : _this19.video.isRemotelyMuted();
3614
- payload.unmuteAllowed = (_payload$unmuteAllowe = payload.unmuteAllowed) !== null && _payload$unmuteAllowe !== void 0 ? _payload$unmuteAllowe : _this19.video.isUnmuteAllowed();
3615
- _this19.video.handleServerRemoteMuteUpdate(_this19, payload.muted, payload.unmuteAllowed);
3686
+ payload.muted = (_payload$muted = payload.muted) !== null && _payload$muted !== void 0 ? _payload$muted : _this20.video.isRemotelyMuted();
3687
+ payload.unmuteAllowed = (_payload$unmuteAllowe = payload.unmuteAllowed) !== null && _payload$unmuteAllowe !== void 0 ? _payload$unmuteAllowe : _this20.video.isUnmuteAllowed();
3688
+ _this20.video.handleServerRemoteMuteUpdate(_this20, payload.muted, payload.unmuteAllowed);
3616
3689
  }
3617
- _triggerProxy.default.trigger(_this19, {
3690
+ _triggerProxy.default.trigger(_this20, {
3618
3691
  file: 'meeting/index',
3619
3692
  function: 'setUpLocusInfoSelfListener'
3620
3693
  }, payload.muted ? _constants.EVENT_TRIGGERS.MEETING_SELF_VIDEO_MUTED_BY_OTHERS : _constants.EVENT_TRIGGERS.MEETING_SELF_VIDEO_UNMUTED_BY_OTHERS, {
@@ -3624,15 +3697,15 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3624
3697
  });
3625
3698
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_REMOTE_MUTE_STATUS_UPDATED, function (payload) {
3626
3699
  if (payload) {
3627
- var _this19$audio;
3628
- if (_this19.audio) {
3629
- _this19.audio.handleServerRemoteMuteUpdate(_this19, payload.muted, payload.unmuteAllowed);
3700
+ var _this20$audio;
3701
+ if (_this20.audio) {
3702
+ _this20.audio.handleServerRemoteMuteUpdate(_this20, payload.muted, payload.unmuteAllowed);
3630
3703
  }
3631
3704
  // with "mute on entry" server will send us remote mute even if we don't have media configured,
3632
3705
  // so if being muted by others, always send the notification,
3633
3706
  // but if being unmuted, only send it if we are also locally unmuted
3634
- if (payload.muted || !((_this19$audio = _this19.audio) !== null && _this19$audio !== void 0 && _this19$audio.isMuted())) {
3635
- _triggerProxy.default.trigger(_this19, {
3707
+ if (payload.muted || !((_this20$audio = _this20.audio) !== null && _this20$audio !== void 0 && _this20$audio.isMuted())) {
3708
+ _triggerProxy.default.trigger(_this20, {
3636
3709
  file: 'meeting/index',
3637
3710
  function: 'setUpLocusInfoSelfListener'
3638
3711
  }, payload.muted ? _constants.EVENT_TRIGGERS.MEETING_SELF_MUTED_BY_OTHERS : _constants.EVENT_TRIGGERS.MEETING_SELF_UNMUTED_BY_OTHERS, {
@@ -3642,7 +3715,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3642
3715
  }
3643
3716
  });
3644
3717
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.LOCAL_UNMUTE_REQUESTED, function (payload) {
3645
- _triggerProxy.default.trigger(_this19, {
3718
+ _triggerProxy.default.trigger(_this20, {
3646
3719
  file: 'meeting/index',
3647
3720
  function: 'setUpLocusInfoSelfListener'
3648
3721
  }, _constants.EVENT_TRIGGERS.MEETING_SELF_REQUESTED_TO_UNMUTE, {
@@ -3651,8 +3724,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3651
3724
  });
3652
3725
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_UNADMITTED_GUEST, function (payload) {
3653
3726
  if (payload) {
3654
- _this19.startKeepAlive();
3655
- _triggerProxy.default.trigger(_this19, {
3727
+ _this20.startKeepAlive();
3728
+ _triggerProxy.default.trigger(_this20, {
3656
3729
  file: 'meeting/index',
3657
3730
  function: 'setUpLocusInfoSelfListener'
3658
3731
  }, _constants.EVENT_TRIGGERS.MEETING_SELF_LOBBY_WAITING, {
@@ -3660,24 +3733,24 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3660
3733
  });
3661
3734
 
3662
3735
  // @ts-ignore
3663
- _this19.webex.internal.newMetrics.submitClientEvent({
3736
+ _this20.webex.internal.newMetrics.submitClientEvent({
3664
3737
  name: 'client.lobby.entered',
3665
3738
  options: {
3666
- meetingId: _this19.id
3739
+ meetingId: _this20.id
3667
3740
  }
3668
3741
  });
3669
3742
  }
3670
- _this19.updateLLMConnection();
3743
+ _this20.updateLLMConnection();
3671
3744
  });
3672
3745
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_ADMITTED_GUEST, /*#__PURE__*/function () {
3673
- var _ref25 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9(payload) {
3674
- var _this19$rtcMetrics;
3746
+ var _ref29 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9(payload) {
3747
+ var _this20$rtcMetrics;
3675
3748
  return _regenerator.default.wrap(function _callee9$(_context9) {
3676
3749
  while (1) switch (_context9.prev = _context9.next) {
3677
3750
  case 0:
3678
- _this19.stopKeepAlive();
3751
+ _this20.stopKeepAlive();
3679
3752
  if (payload) {
3680
- _triggerProxy.default.trigger(_this19, {
3753
+ _triggerProxy.default.trigger(_this20, {
3681
3754
  file: 'meeting/index',
3682
3755
  function: 'setUpLocusInfoSelfListener'
3683
3756
  }, _constants.EVENT_TRIGGERS.MEETING_SELF_GUEST_ADMITTED, {
@@ -3685,15 +3758,15 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3685
3758
  });
3686
3759
 
3687
3760
  // @ts-ignore
3688
- _this19.webex.internal.newMetrics.submitClientEvent({
3761
+ _this20.webex.internal.newMetrics.submitClientEvent({
3689
3762
  name: 'client.lobby.exited',
3690
3763
  options: {
3691
- meetingId: _this19.id
3764
+ meetingId: _this20.id
3692
3765
  }
3693
3766
  });
3694
3767
  }
3695
- (_this19$rtcMetrics = _this19.rtcMetrics) === null || _this19$rtcMetrics === void 0 ? void 0 : _this19$rtcMetrics.sendNextMetrics();
3696
- _this19.updateLLMConnection();
3768
+ (_this20$rtcMetrics = _this20.rtcMetrics) === null || _this20$rtcMetrics === void 0 ? void 0 : _this20$rtcMetrics.sendNextMetrics();
3769
+ _this20.updateLLMConnection();
3697
3770
  case 4:
3698
3771
  case "end":
3699
3772
  return _context9.stop();
@@ -3701,42 +3774,42 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3701
3774
  }, _callee9);
3702
3775
  }));
3703
3776
  return function (_x9) {
3704
- return _ref25.apply(this, arguments);
3777
+ return _ref29.apply(this, arguments);
3705
3778
  };
3706
3779
  }());
3707
3780
 
3708
3781
  // @ts-ignore - check if MEDIA_INACTIVITY exists
3709
3782
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.MEDIA_INACTIVITY, function () {
3710
3783
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_MEDIA_INACTIVE, {
3711
- correlation_id: _this19.correlationId,
3712
- locus_id: _this19.locusId
3784
+ correlation_id: _this20.correlationId,
3785
+ locus_id: _this20.locusId
3713
3786
  });
3714
3787
  _loggerProxy.default.logger.info('Meeting:index#setUpLocusInfoSelfListener --> MEDIA_INACTIVITY received, reconnecting...');
3715
- _this19.reconnect();
3788
+ _this20.reconnect();
3716
3789
  });
3717
3790
 
3718
3791
  // There is two stats for mute one is the actual media being sent or received
3719
3792
  // The second on is if the audio is muted, we need to tell the statsAnalyzer when
3720
3793
  // the audio is muted or the user is not willing to send media
3721
3794
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.MEDIA_STATUS_CHANGE, function (status) {
3722
- if (_this19.statsAnalyzer) {
3723
- var _this19$mediaProperti, _this19$audio2, _this19$mediaProperti2, _this19$video, _this19$mediaProperti3, _this19$mediaProperti4, _this19$mediaProperti5, _this19$mediaProperti6;
3724
- _this19.statsAnalyzer.updateMediaStatus({
3795
+ if (_this20.statsAnalyzer) {
3796
+ var _this20$mediaProperti, _this20$audio2, _this20$mediaProperti2, _this20$video, _this20$mediaProperti3, _this20$mediaProperti4, _this20$mediaProperti5, _this20$mediaProperti6;
3797
+ _this20.statsAnalyzer.updateMediaStatus({
3725
3798
  actual: status,
3726
3799
  expected: {
3727
3800
  // We need to check what should be the actual direction of media
3728
- sendAudio: ((_this19$mediaProperti = _this19.mediaProperties.mediaDirection) === null || _this19$mediaProperti === void 0 ? void 0 : _this19$mediaProperti.sendAudio) && !((_this19$audio2 = _this19.audio) !== null && _this19$audio2 !== void 0 && _this19$audio2.isMuted()),
3729
- sendVideo: ((_this19$mediaProperti2 = _this19.mediaProperties.mediaDirection) === null || _this19$mediaProperti2 === void 0 ? void 0 : _this19$mediaProperti2.sendVideo) && !((_this19$video = _this19.video) !== null && _this19$video !== void 0 && _this19$video.isMuted()),
3730
- sendShare: (_this19$mediaProperti3 = _this19.mediaProperties.mediaDirection) === null || _this19$mediaProperti3 === void 0 ? void 0 : _this19$mediaProperti3.sendShare,
3731
- receiveAudio: (_this19$mediaProperti4 = _this19.mediaProperties.mediaDirection) === null || _this19$mediaProperti4 === void 0 ? void 0 : _this19$mediaProperti4.receiveAudio,
3732
- receiveVideo: (_this19$mediaProperti5 = _this19.mediaProperties.mediaDirection) === null || _this19$mediaProperti5 === void 0 ? void 0 : _this19$mediaProperti5.receiveVideo,
3733
- receiveShare: (_this19$mediaProperti6 = _this19.mediaProperties.mediaDirection) === null || _this19$mediaProperti6 === void 0 ? void 0 : _this19$mediaProperti6.receiveShare
3801
+ sendAudio: ((_this20$mediaProperti = _this20.mediaProperties.mediaDirection) === null || _this20$mediaProperti === void 0 ? void 0 : _this20$mediaProperti.sendAudio) && !((_this20$audio2 = _this20.audio) !== null && _this20$audio2 !== void 0 && _this20$audio2.isMuted()),
3802
+ sendVideo: ((_this20$mediaProperti2 = _this20.mediaProperties.mediaDirection) === null || _this20$mediaProperti2 === void 0 ? void 0 : _this20$mediaProperti2.sendVideo) && !((_this20$video = _this20.video) !== null && _this20$video !== void 0 && _this20$video.isMuted()),
3803
+ sendShare: (_this20$mediaProperti3 = _this20.mediaProperties.mediaDirection) === null || _this20$mediaProperti3 === void 0 ? void 0 : _this20$mediaProperti3.sendShare,
3804
+ receiveAudio: (_this20$mediaProperti4 = _this20.mediaProperties.mediaDirection) === null || _this20$mediaProperti4 === void 0 ? void 0 : _this20$mediaProperti4.receiveAudio,
3805
+ receiveVideo: (_this20$mediaProperti5 = _this20.mediaProperties.mediaDirection) === null || _this20$mediaProperti5 === void 0 ? void 0 : _this20$mediaProperti5.receiveVideo,
3806
+ receiveShare: (_this20$mediaProperti6 = _this20.mediaProperties.mediaDirection) === null || _this20$mediaProperti6 === void 0 ? void 0 : _this20$mediaProperti6.receiveShare
3734
3807
  }
3735
3808
  });
3736
3809
  }
3737
3810
  });
3738
3811
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE, function (payload) {
3739
- _triggerProxy.default.trigger(_this19, {
3812
+ _triggerProxy.default.trigger(_this20, {
3740
3813
  file: 'meeting/index',
3741
3814
  function: 'setUpLocusInfoSelfListener'
3742
3815
  }, _constants.EVENT_TRIGGERS.MEETING_SELF_CANNOT_VIEW_PARTICIPANT_LIST, {
@@ -3744,29 +3817,29 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3744
3817
  });
3745
3818
  });
3746
3819
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_MEETING_BREAKOUTS_CHANGED, function (payload) {
3747
- _this19.breakouts.updateBreakoutSessions(payload);
3748
- _triggerProxy.default.trigger(_this19, {
3820
+ _this20.breakouts.updateBreakoutSessions(payload);
3821
+ _triggerProxy.default.trigger(_this20, {
3749
3822
  file: 'meeting/index',
3750
3823
  function: 'setUpLocusInfoSelfListener'
3751
3824
  }, _constants.EVENT_TRIGGERS.MEETING_BREAKOUTS_UPDATE);
3752
3825
  });
3753
3826
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_MEETING_INTERPRETATION_CHANGED, function (payload) {
3754
- var targetChanged = _this19.simultaneousInterpretation.updateSelfInterpretation(payload);
3755
- _triggerProxy.default.trigger(_this19, {
3827
+ var targetChanged = _this20.simultaneousInterpretation.updateSelfInterpretation(payload);
3828
+ _triggerProxy.default.trigger(_this20, {
3756
3829
  file: 'meeting/index',
3757
3830
  function: 'setUpLocusInfoSelfListener'
3758
3831
  }, _constants.EVENT_TRIGGERS.MEETING_INTERPRETATION_UPDATE);
3759
- if (targetChanged && _this19.mediaProperties.audioStream) {
3760
- _this19.setSendNamedMediaGroup(_internalMediaCore.MediaType.AudioMain);
3832
+ if (targetChanged && _this20.mediaProperties.audioStream) {
3833
+ _this20.setSendNamedMediaGroup(_internalMediaCore.MediaType.AudioMain);
3761
3834
  }
3762
3835
  });
3763
3836
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_ROLES_CHANGED, function (payload) {
3764
- var _payload$newRoles, _payload$newRoles2, _payload$newRoles3, _payload$newRoles4;
3837
+ var _payload$newRoles, _payload$newRoles2, _payload$newRoles3;
3765
3838
  var isModeratorOrCohost = ((_payload$newRoles = payload.newRoles) === null || _payload$newRoles === void 0 ? void 0 : _payload$newRoles.includes(_constants.SELF_ROLES.MODERATOR)) || ((_payload$newRoles2 = payload.newRoles) === null || _payload$newRoles2 === void 0 ? void 0 : _payload$newRoles2.includes(_constants.SELF_ROLES.COHOST));
3766
- _this19.breakouts.updateCanManageBreakouts(isModeratorOrCohost);
3767
- _this19.simultaneousInterpretation.updateCanManageInterpreters((_payload$newRoles3 = payload.newRoles) === null || _payload$newRoles3 === void 0 ? void 0 : _payload$newRoles3.includes(_constants.SELF_ROLES.MODERATOR));
3768
- _this19.webinar.updateCanManageWebcast((_payload$newRoles4 = payload.newRoles) === null || _payload$newRoles4 === void 0 ? void 0 : _payload$newRoles4.includes(_constants.SELF_ROLES.MODERATOR));
3769
- _triggerProxy.default.trigger(_this19, {
3839
+ _this20.breakouts.updateCanManageBreakouts(isModeratorOrCohost);
3840
+ _this20.simultaneousInterpretation.updateCanManageInterpreters((_payload$newRoles3 = payload.newRoles) === null || _payload$newRoles3 === void 0 ? void 0 : _payload$newRoles3.includes(_constants.SELF_ROLES.MODERATOR));
3841
+ _this20.webinar.updateRoleChanged(payload);
3842
+ _triggerProxy.default.trigger(_this20, {
3770
3843
  file: 'meeting/index',
3771
3844
  function: 'setUpLocusInfoSelfListener'
3772
3845
  }, _constants.EVENT_TRIGGERS.MEETING_SELF_ROLES_CHANGED, {
@@ -3774,7 +3847,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3774
3847
  });
3775
3848
  });
3776
3849
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_IS_SHARING_BLOCKED_CHANGE, function (payload) {
3777
- _triggerProxy.default.trigger(_this19, {
3850
+ _triggerProxy.default.trigger(_this20, {
3778
3851
  file: 'meeting/index',
3779
3852
  function: 'setUpLocusInfoSelfListener'
3780
3853
  }, _constants.EVENT_TRIGGERS.MEETING_SELF_IS_SHARING_BLOCKED, {
@@ -3792,42 +3865,42 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3792
3865
  }, {
3793
3866
  key: "setUpLocusInfoMeetingListener",
3794
3867
  value: function setUpLocusInfoMeetingListener() {
3795
- var _this20 = this;
3868
+ var _this21 = this;
3796
3869
  this.locusInfo.on(_constants.EVENTS.REMOTE_RESPONSE, function (payload) {
3797
- _this20.meetingFiniteStateMachine.remote(payload);
3870
+ _this21.meetingFiniteStateMachine.remote(payload);
3798
3871
  if (payload.remoteDeclined) {
3799
- _this20.leave({
3872
+ _this21.leave({
3800
3873
  reason: payload.reason
3801
3874
  }).then(function () {
3802
3875
  _loggerProxy.default.logger.info('Meeting:index#setUpLocusInfoMeetingListener --> REMOTE_RESPONSE. Attempting to leave meeting.');
3803
3876
  }).catch(function (error) {
3804
3877
  // @ts-ignore
3805
- _loggerProxy.default.logger.error("Meeting:index#setUpLocusInfoMeetingListener --> REMOTE_RESPONSE. Issue with leave for meeting, meeting still in collection: ".concat(_this20, ", error: ").concat(error));
3878
+ _loggerProxy.default.logger.error("Meeting:index#setUpLocusInfoMeetingListener --> REMOTE_RESPONSE. Issue with leave for meeting, meeting still in collection: ".concat(_this21, ", error: ").concat(error));
3806
3879
  });
3807
3880
  }
3808
3881
  });
3809
3882
  this.locusInfo.on(_constants.EVENTS.DESTROY_MEETING, /*#__PURE__*/function () {
3810
- var _ref26 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10(payload) {
3883
+ var _ref30 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10(payload) {
3811
3884
  return _regenerator.default.wrap(function _callee10$(_context10) {
3812
3885
  while (1) switch (_context10.prev = _context10.next) {
3813
3886
  case 0:
3814
- if (!_this20.wirelessShare) {
3887
+ if (!_this21.wirelessShare) {
3815
3888
  _context10.next = 7;
3816
3889
  break;
3817
3890
  }
3818
- if (!_this20.mediaProperties.shareVideoStream) {
3891
+ if (!_this21.mediaProperties.shareVideoStream) {
3819
3892
  _context10.next = 4;
3820
3893
  break;
3821
3894
  }
3822
3895
  _context10.next = 4;
3823
- return _this20.setLocalShareVideoStream(undefined);
3896
+ return _this21.setLocalShareVideoStream(undefined);
3824
3897
  case 4:
3825
- if (!_this20.mediaProperties.shareAudioStream) {
3898
+ if (!_this21.mediaProperties.shareAudioStream) {
3826
3899
  _context10.next = 7;
3827
3900
  break;
3828
3901
  }
3829
3902
  _context10.next = 7;
3830
- return _this20.setLocalShareAudioStream(undefined);
3903
+ return _this21.setLocalShareAudioStream(undefined);
3831
3904
  case 7:
3832
3905
  if (!payload.shouldLeave) {
3833
3906
  _context10.next = 19;
@@ -3835,7 +3908,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3835
3908
  }
3836
3909
  _context10.prev = 8;
3837
3910
  _context10.next = 11;
3838
- return _this20.leave({
3911
+ return _this21.leave({
3839
3912
  reason: payload.reason
3840
3913
  });
3841
3914
  case 11:
@@ -3846,19 +3919,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3846
3919
  _context10.prev = 14;
3847
3920
  _context10.t0 = _context10["catch"](8);
3848
3921
  // @ts-ignore
3849
- _loggerProxy.default.logger.error("Meeting:index#setUpLocusInfoMeetingListener --> DESTROY_MEETING. Issue with leave for meeting, meeting still in collection: ".concat(_this20, ", error: ").concat(_context10.t0));
3922
+ _loggerProxy.default.logger.error("Meeting:index#setUpLocusInfoMeetingListener --> DESTROY_MEETING. Issue with leave for meeting, meeting still in collection: ".concat(_this21, ", error: ").concat(_context10.t0));
3850
3923
  case 17:
3851
3924
  _context10.next = 22;
3852
3925
  break;
3853
3926
  case 19:
3854
3927
  _loggerProxy.default.logger.info('Meeting:index#setUpLocusInfoMeetingListener --> MEETING_REMOVED_REASON', payload.reason);
3855
- _util2.default.cleanUp(_this20);
3856
- _triggerProxy.default.trigger(_this20, {
3928
+ _util2.default.cleanUp(_this21);
3929
+ _triggerProxy.default.trigger(_this21, {
3857
3930
  file: 'meeting/index',
3858
3931
  function: 'setUpLocusInfoMeetingListener'
3859
3932
  }, _constants.EVENTS.DESTROY_MEETING, {
3860
3933
  reason: payload.reason,
3861
- meetingId: _this20.id
3934
+ meetingId: _this21.id
3862
3935
  });
3863
3936
  case 22:
3864
3937
  case "end":
@@ -3867,7 +3940,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3867
3940
  }, _callee10, null, [[8, 14]]);
3868
3941
  }));
3869
3942
  return function (_x10) {
3870
- return _ref26.apply(this, arguments);
3943
+ return _ref30.apply(this, arguments);
3871
3944
  };
3872
3945
  }());
3873
3946
  }
@@ -3883,13 +3956,13 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3883
3956
  }, {
3884
3957
  key: "updateMeetingObject",
3885
3958
  value: function updateMeetingObject(object) {
3886
- var _this21 = this;
3959
+ var _this22 = this;
3887
3960
  // Validate if these are valid meeting object property
3888
3961
  // TODO: add a check to make sure the value passed in the constructor
3889
3962
  // is not changed by any delta event
3890
3963
  if (object && (0, _keys.default)(object).length) {
3891
3964
  (0, _keys.default)(object).forEach(function (key) {
3892
- _this21[key] = object[key];
3965
+ _this22[key] = object[key];
3893
3966
  });
3894
3967
  }
3895
3968
  }
@@ -4219,6 +4292,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4219
4292
  requiredHints: [_constants.DISPLAY_HINTS.DISABLE_VIEW_THE_PARTICIPANT_LIST],
4220
4293
  displayHints: this.userDisplayHints
4221
4294
  }),
4295
+ canEnableViewTheParticipantsListPanelist: _util5.default.hasHints({
4296
+ requiredHints: [_constants.DISPLAY_HINTS.ENABLE_VIEW_THE_PARTICIPANT_LIST_PANELIST],
4297
+ displayHints: this.userDisplayHints
4298
+ }),
4299
+ canDisableViewTheParticipantsListPanelist: _util5.default.hasHints({
4300
+ requiredHints: [_constants.DISPLAY_HINTS.DISABLE_VIEW_THE_PARTICIPANT_LIST_PANELIST],
4301
+ displayHints: this.userDisplayHints
4302
+ }),
4303
+ canEnableShowAttendeeCount: _util5.default.hasHints({
4304
+ requiredHints: [_constants.DISPLAY_HINTS.ENABLE_SHOW_ATTENDEE_COUNT],
4305
+ displayHints: this.userDisplayHints
4306
+ }),
4307
+ canDisableShowAttendeeCount: _util5.default.hasHints({
4308
+ requiredHints: [_constants.DISPLAY_HINTS.DISABLE_SHOW_ATTENDEE_COUNT],
4309
+ displayHints: this.userDisplayHints
4310
+ }),
4222
4311
  canEnableRaiseHand: _util5.default.hasHints({
4223
4312
  requiredHints: [_constants.DISPLAY_HINTS.ENABLE_RAISE_HAND],
4224
4313
  displayHints: this.userDisplayHints
@@ -4235,6 +4324,26 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4235
4324
  requiredHints: [_constants.DISPLAY_HINTS.DISABLE_VIDEO],
4236
4325
  displayHints: this.userDisplayHints
4237
4326
  }),
4327
+ canStartWebcast: _util5.default.hasHints({
4328
+ requiredHints: [_constants.DISPLAY_HINTS.WEBCAST_CONTROL_START],
4329
+ displayHints: this.userDisplayHints
4330
+ }),
4331
+ canStopWebcast: _util5.default.hasHints({
4332
+ requiredHints: [_constants.DISPLAY_HINTS.WEBCAST_CONTROL_STOP],
4333
+ displayHints: this.userDisplayHints
4334
+ }),
4335
+ canShowStageView: _util5.default.hasHints({
4336
+ requiredHints: [_constants.DISPLAY_HINTS.STAGE_VIEW_ACTIVE],
4337
+ displayHints: this.userDisplayHints
4338
+ }),
4339
+ canEnableStageView: _util5.default.hasHints({
4340
+ requiredHints: [_constants.DISPLAY_HINTS.ENABLE_STAGE_VIEW],
4341
+ displayHints: this.userDisplayHints
4342
+ }),
4343
+ canDisableStageView: _util5.default.hasHints({
4344
+ requiredHints: [_constants.DISPLAY_HINTS.DISABLE_STAGE_VIEW],
4345
+ displayHints: this.userDisplayHints
4346
+ }),
4238
4347
  canShareFile: _util5.default.hasHints({
4239
4348
  requiredHints: [_constants.DISPLAY_HINTS.SHARE_FILE],
4240
4349
  displayHints: this.userDisplayHints
@@ -4413,7 +4522,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4413
4522
  }, {
4414
4523
  key: "closeRemoteStreams",
4415
4524
  value: function closeRemoteStreams() {
4416
- var _this22 = this;
4525
+ var _this23 = this;
4417
4526
  var _this$mediaProperties4 = this.mediaProperties,
4418
4527
  remoteAudioStream = _this$mediaProperties4.remoteAudioStream,
4419
4528
  remoteVideoStream = _this$mediaProperties4.remoteVideoStream,
@@ -4427,7 +4536,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4427
4536
  */
4428
4537
  // eslint-disable-next-line @typescript-eslint/no-shadow
4429
4538
  var triggerMediaStoppedEvent = function triggerMediaStoppedEvent(mediaType) {
4430
- _triggerProxy.default.trigger(_this22, {
4539
+ _triggerProxy.default.trigger(_this23, {
4431
4540
  file: 'meeting/index',
4432
4541
  function: 'closeRemoteStreams'
4433
4542
  }, _constants.EVENT_TRIGGERS.MEDIA_STOPPED, {
@@ -4735,7 +4844,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4735
4844
  }, {
4736
4845
  key: "setMercuryListener",
4737
4846
  value: function setMercuryListener() {
4738
- var _this23 = this;
4847
+ var _this24 = this;
4739
4848
  // Client will have a socket manager and handle reconnecting to mercury, when we reconnect to mercury
4740
4849
  // if the meeting has active peer connections, it should try to reconnect.
4741
4850
  // @ts-ignore
@@ -4743,33 +4852,33 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4743
4852
  _loggerProxy.default.logger.info('Meeting:index#setMercuryListener --> Web socket online');
4744
4853
 
4745
4854
  // Only send restore event when it was disconnected before and for connected later
4746
- if (!_this23.hasWebsocketConnected) {
4855
+ if (!_this24.hasWebsocketConnected) {
4747
4856
  // @ts-ignore
4748
- _this23.webex.internal.newMetrics.submitClientEvent({
4857
+ _this24.webex.internal.newMetrics.submitClientEvent({
4749
4858
  name: 'client.mercury.connection.restored',
4750
4859
  options: {
4751
- meetingId: _this23.id
4860
+ meetingId: _this24.id
4752
4861
  }
4753
4862
  });
4754
4863
  _metrics.default.sendBehavioralMetric(_constants2.default.MERCURY_CONNECTION_RESTORED, {
4755
- correlation_id: _this23.correlationId
4864
+ correlation_id: _this24.correlationId
4756
4865
  });
4757
4866
  }
4758
- _this23.hasWebsocketConnected = true;
4867
+ _this24.hasWebsocketConnected = true;
4759
4868
  });
4760
4869
 
4761
4870
  // @ts-ignore
4762
4871
  this.webex.internal.mercury.on(_constants.OFFLINE, function () {
4763
4872
  _loggerProxy.default.logger.error('Meeting:index#setMercuryListener --> Web socket offline');
4764
4873
  // @ts-ignore
4765
- _this23.webex.internal.newMetrics.submitClientEvent({
4874
+ _this24.webex.internal.newMetrics.submitClientEvent({
4766
4875
  name: 'client.mercury.connection.lost',
4767
4876
  options: {
4768
- meetingId: _this23.id
4877
+ meetingId: _this24.id
4769
4878
  }
4770
4879
  });
4771
4880
  _metrics.default.sendBehavioralMetric(_constants2.default.MERCURY_CONNECTION_FAILURE, {
4772
- correlation_id: _this23.correlationId
4881
+ correlation_id: _this24.correlationId
4773
4882
  });
4774
4883
  });
4775
4884
  }
@@ -4871,7 +4980,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4871
4980
  }, {
4872
4981
  key: "muteAudio",
4873
4982
  value: function muteAudio() {
4874
- var _this24 = this;
4983
+ var _this25 = this;
4875
4984
  if (!_util2.default.isUserInJoinedState(this.locusInfo)) {
4876
4985
  return _promise.default.reject(new _webexErrors.UserNotJoinedError());
4877
4986
  }
@@ -4887,22 +4996,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4887
4996
 
4888
4997
  // First, stop sending the local audio media
4889
4998
  return logRequest(this.audio.handleClientRequest(this, true).then(function () {
4890
- _util2.default.handleAudioLogging(_this24.mediaProperties.audioStream);
4999
+ _util2.default.handleAudioLogging(_this25.mediaProperties.audioStream);
4891
5000
  // @ts-ignore
4892
- _this24.webex.internal.newMetrics.submitClientEvent({
5001
+ _this25.webex.internal.newMetrics.submitClientEvent({
4893
5002
  name: 'client.muted',
4894
5003
  payload: {
4895
5004
  trigger: 'user-interaction',
4896
5005
  mediaType: 'audio'
4897
5006
  },
4898
5007
  options: {
4899
- meetingId: _this24.id
5008
+ meetingId: _this25.id
4900
5009
  }
4901
5010
  });
4902
5011
  }).catch(function (error) {
4903
5012
  _metrics.default.sendBehavioralMetric(_constants2.default.MUTE_AUDIO_FAILURE, {
4904
- correlation_id: _this24.correlationId,
4905
- locus_id: _this24.locusUrl.split('/').pop(),
5013
+ correlation_id: _this25.correlationId,
5014
+ locus_id: _this25.locusUrl.split('/').pop(),
4906
5015
  reason: error.message,
4907
5016
  stack: error.stack
4908
5017
  });
@@ -4921,7 +5030,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4921
5030
  }, {
4922
5031
  key: "unmuteAudio",
4923
5032
  value: function unmuteAudio() {
4924
- var _this25 = this;
5033
+ var _this26 = this;
4925
5034
  if (!_util2.default.isUserInJoinedState(this.locusInfo)) {
4926
5035
  return _promise.default.reject(new _webexErrors.UserNotJoinedError());
4927
5036
  }
@@ -4937,22 +5046,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4937
5046
 
4938
5047
  // First, send the control to unmute the participant on the server
4939
5048
  return logRequest(this.audio.handleClientRequest(this, false).then(function () {
4940
- _util2.default.handleAudioLogging(_this25.mediaProperties.audioStream);
5049
+ _util2.default.handleAudioLogging(_this26.mediaProperties.audioStream);
4941
5050
  // @ts-ignore
4942
- _this25.webex.internal.newMetrics.submitClientEvent({
5051
+ _this26.webex.internal.newMetrics.submitClientEvent({
4943
5052
  name: 'client.unmuted',
4944
5053
  payload: {
4945
5054
  trigger: 'user-interaction',
4946
5055
  mediaType: 'audio'
4947
5056
  },
4948
5057
  options: {
4949
- meetingId: _this25.id
5058
+ meetingId: _this26.id
4950
5059
  }
4951
5060
  });
4952
5061
  }).catch(function (error) {
4953
5062
  _metrics.default.sendBehavioralMetric(_constants2.default.UNMUTE_AUDIO_FAILURE, {
4954
- correlation_id: _this25.correlationId,
4955
- locus_id: _this25.locusUrl.split('/').pop(),
5063
+ correlation_id: _this26.correlationId,
5064
+ locus_id: _this26.locusUrl.split('/').pop(),
4956
5065
  reason: error.message,
4957
5066
  stack: error.stack
4958
5067
  });
@@ -4971,7 +5080,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4971
5080
  }, {
4972
5081
  key: "muteVideo",
4973
5082
  value: function muteVideo() {
4974
- var _this26 = this;
5083
+ var _this27 = this;
4975
5084
  if (!_util2.default.isUserInJoinedState(this.locusInfo)) {
4976
5085
  return _promise.default.reject(new _webexErrors.UserNotJoinedError());
4977
5086
  }
@@ -4985,22 +5094,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4985
5094
  return _promise.default.reject(new _parameter.default('no video control associated to the meeting'));
4986
5095
  }
4987
5096
  return logRequest(this.video.handleClientRequest(this, true).then(function () {
4988
- _util2.default.handleVideoLogging(_this26.mediaProperties.videoStream);
5097
+ _util2.default.handleVideoLogging(_this27.mediaProperties.videoStream);
4989
5098
  // @ts-ignore
4990
- _this26.webex.internal.newMetrics.submitClientEvent({
5099
+ _this27.webex.internal.newMetrics.submitClientEvent({
4991
5100
  name: 'client.muted',
4992
5101
  payload: {
4993
5102
  trigger: 'user-interaction',
4994
5103
  mediaType: 'video'
4995
5104
  },
4996
5105
  options: {
4997
- meetingId: _this26.id
5106
+ meetingId: _this27.id
4998
5107
  }
4999
5108
  });
5000
5109
  }).catch(function (error) {
5001
5110
  _metrics.default.sendBehavioralMetric(_constants2.default.MUTE_VIDEO_FAILURE, {
5002
- correlation_id: _this26.correlationId,
5003
- locus_id: _this26.locusUrl.split('/').pop(),
5111
+ correlation_id: _this27.correlationId,
5112
+ locus_id: _this27.locusUrl.split('/').pop(),
5004
5113
  reason: error.message,
5005
5114
  stack: error.stack
5006
5115
  });
@@ -5019,7 +5128,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5019
5128
  }, {
5020
5129
  key: "unmuteVideo",
5021
5130
  value: function unmuteVideo() {
5022
- var _this27 = this;
5131
+ var _this28 = this;
5023
5132
  if (!_util2.default.isUserInJoinedState(this.locusInfo)) {
5024
5133
  return _promise.default.reject(new _webexErrors.UserNotJoinedError());
5025
5134
  }
@@ -5033,22 +5142,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5033
5142
  return _promise.default.reject(new _parameter.default('no audio control associated to the meeting'));
5034
5143
  }
5035
5144
  return logRequest(this.video.handleClientRequest(this, false).then(function () {
5036
- _util2.default.handleVideoLogging(_this27.mediaProperties.videoStream);
5145
+ _util2.default.handleVideoLogging(_this28.mediaProperties.videoStream);
5037
5146
  // @ts-ignore
5038
- _this27.webex.internal.newMetrics.submitClientEvent({
5147
+ _this28.webex.internal.newMetrics.submitClientEvent({
5039
5148
  name: 'client.unmuted',
5040
5149
  payload: {
5041
5150
  trigger: 'user-interaction',
5042
5151
  mediaType: 'video'
5043
5152
  },
5044
5153
  options: {
5045
- meetingId: _this27.id
5154
+ meetingId: _this28.id
5046
5155
  }
5047
5156
  });
5048
5157
  }).catch(function (error) {
5049
5158
  _metrics.default.sendBehavioralMetric(_constants2.default.UNMUTE_VIDEO_FAILURE, {
5050
- correlation_id: _this27.correlationId,
5051
- locus_id: _this27.locusUrl.split('/').pop(),
5159
+ correlation_id: _this28.correlationId,
5160
+ locus_id: _this28.locusUrl.split('/').pop(),
5052
5161
  reason: error.message,
5053
5162
  stack: error.stack
5054
5163
  });
@@ -5078,7 +5187,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5078
5187
  key: "joinWithMedia",
5079
5188
  value: (function () {
5080
5189
  var _joinWithMedia = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee15() {
5081
- var _this28 = this;
5190
+ var _this29 = this;
5082
5191
  var options,
5083
5192
  mediaOptions,
5084
5193
  _options$joinOptions,
@@ -5165,7 +5274,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5165
5274
  case 38:
5166
5275
  _context15.next = 40;
5167
5276
  return this.addMediaInternal(function () {
5168
- return _this28.joinWithMediaRetryInfo.isRetry ? 'JOIN_MEETING_FINAL' : 'JOIN_MEETING_RETRY';
5277
+ return _this29.joinWithMediaRetryInfo.isRetry ? 'JOIN_MEETING_FINAL' : 'JOIN_MEETING_RETRY';
5169
5278
  }, turnServerInfo, forceTurnDiscovery, mediaOptions);
5170
5279
  case 40:
5171
5280
  mediaResponse = _context15.sent;
@@ -5257,7 +5366,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5257
5366
  }, {
5258
5367
  key: "reconnect",
5259
5368
  value: function reconnect(options) {
5260
- var _this29 = this;
5369
+ var _this30 = this;
5261
5370
  _loggerProxy.default.logger.log("Meeting:index#reconnect --> attempting to reconnect meeting ".concat(this.id));
5262
5371
  if (!this.reconnectionManager || !this.reconnectionManager.reconnect) {
5263
5372
  return _promise.default.reject(new _parameter.default('Cannot reconnect, ReconnectionManager must first be defined.'));
@@ -5267,15 +5376,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5267
5376
  if (!_util2.default.isMediaEstablished(this.currentMediaStatus)) {
5268
5377
  return _promise.default.reject(new _parameter.default('Cannot reconnect, Media has not established to reconnect'));
5269
5378
  }
5379
+ this.cleanUpBeforeReconnection();
5270
5380
  return this.reconnectionManager.reconnect(options, /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee16() {
5271
5381
  return _regenerator.default.wrap(function _callee16$(_context16) {
5272
5382
  while (1) switch (_context16.prev = _context16.next) {
5273
5383
  case 0:
5274
5384
  _context16.next = 2;
5275
- return _this29.waitForRemoteSDPAnswer();
5385
+ return _this30.waitForRemoteSDPAnswer();
5276
5386
  case 2:
5277
5387
  _context16.next = 4;
5278
- return _this29.waitForMediaConnectionConnected();
5388
+ return _this30.waitForMediaConnectionConnected();
5279
5389
  case 4:
5280
5390
  case "end":
5281
5391
  return _context16.stop();
@@ -5289,7 +5399,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5289
5399
  return _promise.default.resolve();
5290
5400
  }
5291
5401
  _loggerProxy.default.logger.error('Meeting:index#reconnect --> Meeting reconnect failed', error);
5292
- _this29.uploadLogs({
5402
+ _this30.uploadLogs({
5293
5403
  file: 'meeting/index',
5294
5404
  function: 'reconnect'
5295
5405
  });
@@ -5336,19 +5446,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5336
5446
  }, {
5337
5447
  key: "setCaptionLanguage",
5338
5448
  value: function setCaptionLanguage(language) {
5339
- var _this30 = this;
5449
+ var _this31 = this;
5340
5450
  return new _promise.default(function (resolve, reject) {
5341
- if (!_this30.isTranscriptionSupported()) {
5451
+ if (!_this31.isTranscriptionSupported()) {
5342
5452
  _loggerProxy.default.logger.error('Meeting:index#setCaptionLanguage --> Webex Assistant is not enabled/supported');
5343
5453
  reject(new Error('Webex Assistant is not enabled/supported'));
5344
5454
  }
5345
5455
  try {
5346
5456
  var voiceaListenerCaptionUpdate = function voiceaListenerCaptionUpdate(payload) {
5347
5457
  // @ts-ignore
5348
- _this30.webex.internal.voicea.off(_internalPluginVoicea.EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, voiceaListenerCaptionUpdate);
5458
+ _this31.webex.internal.voicea.off(_internalPluginVoicea.EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, voiceaListenerCaptionUpdate);
5349
5459
  var statusCode = payload.statusCode;
5350
5460
  if (statusCode === 200) {
5351
- _this30.transcription.languageOptions = _objectSpread(_objectSpread({}, _this30.transcription.languageOptions), {}, {
5461
+ _this31.transcription.languageOptions = _objectSpread(_objectSpread({}, _this31.transcription.languageOptions), {}, {
5352
5462
  currentCaptionLanguage: language
5353
5463
  });
5354
5464
  resolve(language);
@@ -5357,9 +5467,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5357
5467
  }
5358
5468
  };
5359
5469
  // @ts-ignore
5360
- _this30.webex.internal.voicea.on(_internalPluginVoicea.EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, voiceaListenerCaptionUpdate);
5470
+ _this31.webex.internal.voicea.on(_internalPluginVoicea.EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, voiceaListenerCaptionUpdate);
5361
5471
  // @ts-ignore
5362
- _this30.webex.internal.voicea.requestLanguage(language);
5472
+ _this31.webex.internal.voicea.requestLanguage(language);
5363
5473
  } catch (error) {
5364
5474
  _loggerProxy.default.logger.error("Meeting:index#setCaptionLanguage --> ".concat(error));
5365
5475
  reject(error);
@@ -5375,23 +5485,23 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5375
5485
  }, {
5376
5486
  key: "setSpokenLanguage",
5377
5487
  value: function setSpokenLanguage(language) {
5378
- var _this31 = this;
5488
+ var _this32 = this;
5379
5489
  return new _promise.default(function (resolve, reject) {
5380
- if (!_this31.isTranscriptionSupported()) {
5490
+ if (!_this32.isTranscriptionSupported()) {
5381
5491
  _loggerProxy.default.logger.error('Meeting:index#setCaptionLanguage --> Webex Assistant is not enabled/supported');
5382
5492
  reject(new Error('Webex Assistant is not enabled/supported'));
5383
5493
  }
5384
- if (_this31.getCurUserType() !== 'host') {
5494
+ if (_this32.getCurUserType() !== 'host') {
5385
5495
  _loggerProxy.default.logger.error('Meeting:index#setSpokenLanguage --> Only host can set spoken language');
5386
5496
  reject(new Error('Only host can set spoken language'));
5387
5497
  }
5388
5498
  try {
5389
5499
  var voiceaListenerLanguageUpdate = function voiceaListenerLanguageUpdate(payload) {
5390
5500
  // @ts-ignore
5391
- _this31.webex.internal.voicea.off(_internalPluginVoicea.EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE, voiceaListenerLanguageUpdate);
5501
+ _this32.webex.internal.voicea.off(_internalPluginVoicea.EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE, voiceaListenerLanguageUpdate);
5392
5502
  var languageCode = payload.languageCode;
5393
5503
  if (languageCode) {
5394
- _this31.transcription.languageOptions = _objectSpread(_objectSpread({}, _this31.transcription.languageOptions), {}, {
5504
+ _this32.transcription.languageOptions = _objectSpread(_objectSpread({}, _this32.transcription.languageOptions), {}, {
5395
5505
  currentSpokenLanguage: languageCode
5396
5506
  });
5397
5507
  resolve(languageCode);
@@ -5401,10 +5511,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5401
5511
  };
5402
5512
 
5403
5513
  // @ts-ignore
5404
- _this31.webex.internal.voicea.on(_internalPluginVoicea.EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE, voiceaListenerLanguageUpdate);
5514
+ _this32.webex.internal.voicea.on(_internalPluginVoicea.EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE, voiceaListenerLanguageUpdate);
5405
5515
 
5406
5516
  // @ts-ignore
5407
- _this31.webex.internal.voicea.setSpokenLanguage(language);
5517
+ _this32.webex.internal.voicea.setSpokenLanguage(language);
5408
5518
  } catch (error) {
5409
5519
  _loggerProxy.default.logger.error("Meeting:index#setSpokenLanguage --> ".concat(error));
5410
5520
  reject(error);
@@ -5524,7 +5634,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5524
5634
  */
5525
5635
  function () {
5526
5636
  var _join = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee18() {
5527
- var _this32 = this;
5637
+ var _this33 = this;
5528
5638
  var options,
5529
5639
  errorMessage,
5530
5640
  error,
@@ -5670,62 +5780,62 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5670
5780
  return _context18.abrupt("return", _promise.default.reject(_context18.t0));
5671
5781
  case 51:
5672
5782
  return _context18.abrupt("return", _util2.default.joinMeetingOptions(this, options).then(function (join) {
5673
- _this32.meetingFiniteStateMachine.join();
5674
- _this32.setupLocusMediaRequest();
5783
+ _this33.meetingFiniteStateMachine.join();
5784
+ _this33.setupLocusMediaRequest();
5675
5785
 
5676
5786
  // @ts-ignore
5677
- _this32.webex.internal.device.meetingStarted();
5678
- (0, _classPrivateFieldSet2.default)(_this32, _isoLocalClientMeetingJoinTime, new Date().toISOString());
5787
+ _this33.webex.internal.device.meetingStarted();
5788
+ (0, _classPrivateFieldSet2.default)(_this33, _isoLocalClientMeetingJoinTime, new Date().toISOString());
5679
5789
  _loggerProxy.default.logger.log('Meeting:index#join --> Success');
5680
5790
  _metrics.default.sendBehavioralMetric(_constants2.default.JOIN_SUCCESS, {
5681
- correlation_id: _this32.correlationId
5791
+ correlation_id: _this33.correlationId
5682
5792
  });
5683
5793
  joinSuccess(join);
5684
- _this32.deferJoin = undefined;
5794
+ _this33.deferJoin = undefined;
5685
5795
  return join;
5686
5796
  }).catch(function (error) {
5687
- var _this32$meetingInfo, _error$error;
5688
- _this32.meetingFiniteStateMachine.fail(error);
5797
+ var _this33$meetingInfo, _error$error;
5798
+ _this33.meetingFiniteStateMachine.fail(error);
5689
5799
  _loggerProxy.default.logger.error('Meeting:index#join --> Failed', error);
5690
5800
 
5691
5801
  // @ts-ignore
5692
- _this32.webex.internal.newMetrics.submitClientEvent({
5802
+ _this33.webex.internal.newMetrics.submitClientEvent({
5693
5803
  name: 'client.locus.join.response',
5694
5804
  payload: {
5695
5805
  identifiers: {
5696
- meetingLookupUrl: (_this32$meetingInfo = _this32.meetingInfo) === null || _this32$meetingInfo === void 0 ? void 0 : _this32$meetingInfo.meetingLookupUrl
5806
+ meetingLookupUrl: (_this33$meetingInfo = _this33.meetingInfo) === null || _this33$meetingInfo === void 0 ? void 0 : _this33$meetingInfo.meetingLookupUrl
5697
5807
  }
5698
5808
  },
5699
5809
  options: {
5700
- meetingId: _this32.id,
5810
+ meetingId: _this33.id,
5701
5811
  rawError: error
5702
5812
  }
5703
5813
  });
5704
5814
 
5705
5815
  // TODO: change this to error codes and pre defined dictionary
5706
5816
  _metrics.default.sendBehavioralMetric(_constants2.default.JOIN_FAILURE, {
5707
- correlation_id: _this32.correlationId,
5817
+ correlation_id: _this33.correlationId,
5708
5818
  reason: (_error$error = error.error) === null || _error$error === void 0 ? void 0 : _error$error.message,
5709
5819
  stack: error.stack
5710
5820
  });
5711
5821
 
5712
5822
  // Upload logs on join Failure
5713
- _triggerProxy.default.trigger(_this32, {
5823
+ _triggerProxy.default.trigger(_this33, {
5714
5824
  file: 'meeting/index',
5715
5825
  function: 'join'
5716
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this32);
5826
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this33);
5717
5827
  joinFailed(error);
5718
- _this32.deferJoin = undefined;
5828
+ _this33.deferJoin = undefined;
5719
5829
  return _promise.default.reject(error);
5720
5830
  }).then(function (join) {
5721
5831
  // @ts-ignore - config coming from registerPlugin
5722
- if (_this32.config.enableAutomaticLLM) {
5832
+ if (_this33.config.enableAutomaticLLM) {
5723
5833
  // @ts-ignore
5724
- _this32.webex.internal.llm.on('online', _this32.handleLLMOnline);
5725
- _this32.updateLLMConnection().catch(function (error) {
5834
+ _this33.webex.internal.llm.on('online', _this33.handleLLMOnline);
5835
+ _this33.updateLLMConnection().catch(function (error) {
5726
5836
  _loggerProxy.default.logger.error('Meeting:index#join --> Transcription Socket Connection Failed', error);
5727
5837
  _metrics.default.sendBehavioralMetric(_constants2.default.LLM_CONNECTION_AFTER_JOIN_FAILURE, {
5728
- correlation_id: _this32.correlationId,
5838
+ correlation_id: _this33.correlationId,
5729
5839
  reason: error === null || error === void 0 ? void 0 : error.message,
5730
5840
  stack: error.stack
5731
5841
  });
@@ -5757,7 +5867,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5757
5867
  key: "updateLLMConnection",
5758
5868
  value: (function () {
5759
5869
  var _updateLLMConnection = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee19() {
5760
- var _this33 = this;
5870
+ var _this34 = this;
5761
5871
  var _this$locusInfo6, url, _this$locusInfo6$info, _this$locusInfo6$info2, datachannelUrl, isJoined;
5762
5872
  return _regenerator.default.wrap(function _callee19$(_context19) {
5763
5873
  while (1) switch (_context19.prev = _context19.next) {
@@ -5793,9 +5903,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5793
5903
  case 10:
5794
5904
  return _context19.abrupt("return", this.webex.internal.llm.registerAndConnect(url, datachannelUrl).then(function (registerAndConnectResult) {
5795
5905
  // @ts-ignore - Fix type
5796
- _this33.webex.internal.llm.off('event:relay.event', _this33.processRelayEvent);
5906
+ _this34.webex.internal.llm.off('event:relay.event', _this34.processRelayEvent);
5797
5907
  // @ts-ignore - Fix type
5798
- _this33.webex.internal.llm.on('event:relay.event', _this33.processRelayEvent);
5908
+ _this34.webex.internal.llm.on('event:relay.event', _this34.processRelayEvent);
5799
5909
  _loggerProxy.default.logger.info('Meeting:index#updateLLMConnection --> enabled to receive relay events!');
5800
5910
  return _promise.default.resolve(registerAndConnectResult);
5801
5911
  }));
@@ -5849,7 +5959,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5849
5959
  }, {
5850
5960
  key: "dialInPstn",
5851
5961
  value: function dialInPstn() {
5852
- var _this34 = this;
5962
+ var _this35 = this;
5853
5963
  if (this.isPhoneProvisioned(this.dialInDeviceStatus)) return _promise.default.resolve(); // prevent multiple dial in devices from being provisioned
5854
5964
 
5855
5965
  var correlationId = this.correlationId,
@@ -5865,10 +5975,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5865
5975
  }).catch(function (error) {
5866
5976
  var _error$error2;
5867
5977
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_DIAL_IN_FAILURE, {
5868
- correlation_id: _this34.correlationId,
5869
- dial_in_url: _this34.dialInUrl,
5978
+ correlation_id: _this35.correlationId,
5979
+ dial_in_url: _this35.dialInUrl,
5870
5980
  locus_id: locusUrl.split('/').pop(),
5871
- client_url: _this34.deviceUrl,
5981
+ client_url: _this35.deviceUrl,
5872
5982
  reason: (_error$error2 = error.error) === null || _error$error2 === void 0 ? void 0 : _error$error2.message,
5873
5983
  stack: error.stack
5874
5984
  });
@@ -5886,7 +5996,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5886
5996
  }, {
5887
5997
  key: "dialOutPstn",
5888
5998
  value: function dialOutPstn(phoneNumber) {
5889
- var _this35 = this;
5999
+ var _this36 = this;
5890
6000
  if (this.isPhoneProvisioned(this.dialOutDeviceStatus)) return _promise.default.resolve(); // prevent multiple dial out devices from being provisioned
5891
6001
 
5892
6002
  var correlationId = this.correlationId,
@@ -5903,10 +6013,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5903
6013
  }).catch(function (error) {
5904
6014
  var _error$error3;
5905
6015
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_DIAL_OUT_FAILURE, {
5906
- correlation_id: _this35.correlationId,
5907
- dial_out_url: _this35.dialOutUrl,
6016
+ correlation_id: _this36.correlationId,
6017
+ dial_out_url: _this36.dialOutUrl,
5908
6018
  locus_id: locusUrl.split('/').pop(),
5909
- client_url: _this35.deviceUrl,
6019
+ client_url: _this36.deviceUrl,
5910
6020
  reason: (_error$error3 = error.error) === null || _error$error3 === void 0 ? void 0 : _error$error3.message,
5911
6021
  stack: error.stack
5912
6022
  });
@@ -5937,7 +6047,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5937
6047
  }, {
5938
6048
  key: "moveTo",
5939
6049
  value: function moveTo(resourceId) {
5940
- var _this36 = this;
6050
+ var _this37 = this;
5941
6051
  if (!resourceId) {
5942
6052
  throw new _parameter.default('Cannot move call without a resourceId.');
5943
6053
  }
@@ -5981,12 +6091,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5981
6091
  while (1) switch (_context20.prev = _context20.next) {
5982
6092
  case 0:
5983
6093
  _context20.prev = 0;
5984
- if (!(_this36.screenShareFloorState === ScreenShareFloorStatus.GRANTED)) {
6094
+ if (!(_this37.screenShareFloorState === ScreenShareFloorStatus.GRANTED)) {
5985
6095
  _context20.next = 4;
5986
6096
  break;
5987
6097
  }
5988
6098
  _context20.next = 4;
5989
- return _this36.releaseScreenShareFloor();
6099
+ return _this37.releaseScreenShareFloor();
5990
6100
  case 4:
5991
6101
  mediaSettings = {
5992
6102
  mediaDirection: {
@@ -5998,37 +6108,37 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5998
6108
  receiveShare: true
5999
6109
  }
6000
6110
  };
6001
- _this36.mediaProperties.setMediaDirection(mediaSettings.mediaDirection);
6002
- _this36.mediaProperties.unsetRemoteMedia();
6111
+ _this37.mediaProperties.setMediaDirection(mediaSettings.mediaDirection);
6112
+ _this37.mediaProperties.unsetRemoteMedia();
6003
6113
 
6004
6114
  // 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
6005
6115
  // once the device answers we close the old connection and create new media server connection with only share enabled
6006
- if (!_this36.statsAnalyzer) {
6116
+ if (!_this37.statsAnalyzer) {
6007
6117
  _context20.next = 10;
6008
6118
  break;
6009
6119
  }
6010
6120
  _context20.next = 10;
6011
- return _this36.statsAnalyzer.stopAnalyzer();
6121
+ return _this37.statsAnalyzer.stopAnalyzer();
6012
6122
  case 10:
6013
6123
  _context20.next = 12;
6014
- return _this36.closeRemoteStreams();
6124
+ return _this37.closeRemoteStreams();
6015
6125
  case 12:
6016
6126
  _context20.next = 14;
6017
- return _this36.closePeerConnections();
6127
+ return _this37.closePeerConnections();
6018
6128
  case 14:
6019
- _this36.cleanupLocalStreams();
6020
- _this36.unsetRemoteStreams();
6021
- _this36.unsetPeerConnections();
6022
- _this36.reconnectionManager.cleanUp();
6129
+ _this37.cleanupLocalStreams();
6130
+ _this37.unsetRemoteStreams();
6131
+ _this37.unsetPeerConnections();
6132
+ _this37.reconnectionManager.cleanUp();
6023
6133
  _context20.next = 20;
6024
- return _this36.addMedia({
6134
+ return _this37.addMedia({
6025
6135
  audioEnabled: false,
6026
6136
  videoEnabled: false,
6027
6137
  shareVideoEnabled: true
6028
6138
  });
6029
6139
  case 20:
6030
6140
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_TO_SUCCESS);
6031
- _this36.isMoveToInProgress = false;
6141
+ _this37.isMoveToInProgress = false;
6032
6142
  _context20.next = 29;
6033
6143
  break;
6034
6144
  case 24:
@@ -6036,12 +6146,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6036
6146
  _context20.t0 = _context20["catch"](0);
6037
6147
  _loggerProxy.default.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId', _context20.t0);
6038
6148
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_TO_FAILURE, {
6039
- correlation_id: _this36.correlationId,
6040
- locus_id: _this36.locusUrl.split('/').pop(),
6149
+ correlation_id: _this37.correlationId,
6150
+ locus_id: _this37.locusUrl.split('/').pop(),
6041
6151
  reason: _context20.t0.message,
6042
6152
  stack: _context20.t0.stack
6043
6153
  });
6044
- _this36.isMoveToInProgress = false;
6154
+ _this37.isMoveToInProgress = false;
6045
6155
  case 29:
6046
6156
  case "end":
6047
6157
  return _context20.stop();
@@ -6057,17 +6167,17 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6057
6167
  resourceId: resourceId,
6058
6168
  moveToResource: true
6059
6169
  }).then(function () {
6060
- _this36.meetingFiniteStateMachine.join();
6170
+ _this37.meetingFiniteStateMachine.join();
6061
6171
  }).catch(function (error) {
6062
- _this36.meetingFiniteStateMachine.fail(error);
6172
+ _this37.meetingFiniteStateMachine.fail(error);
6063
6173
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_TO_FAILURE, {
6064
- correlation_id: _this36.correlationId,
6065
- locus_id: _this36.locusUrl.split('/').pop(),
6174
+ correlation_id: _this37.correlationId,
6175
+ locus_id: _this37.locusUrl.split('/').pop(),
6066
6176
  reason: error.message,
6067
6177
  stack: error.stack
6068
6178
  });
6069
6179
  _loggerProxy.default.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId', error);
6070
- _this36.isMoveToInProgress = false;
6180
+ _this37.isMoveToInProgress = false;
6071
6181
  return _promise.default.reject(error);
6072
6182
  });
6073
6183
  }
@@ -6082,7 +6192,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6082
6192
  }, {
6083
6193
  key: "moveFrom",
6084
6194
  value: function moveFrom(resourceId) {
6085
- var _this37 = this;
6195
+ var _this38 = this;
6086
6196
  // On moveFrom ask the developer to re capture it moveFrom then updateMedia
6087
6197
  if (!resourceId) {
6088
6198
  throw new _parameter.default('Cannot move call without a resourceId.');
@@ -6097,19 +6207,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6097
6207
  }
6098
6208
  });
6099
6209
  return _util2.default.joinMeetingOptions(this).then(function () {
6100
- return _util2.default.leaveMeeting(_this37, {
6210
+ return _util2.default.leaveMeeting(_this38, {
6101
6211
  resourceId: resourceId,
6102
6212
  correlationId: oldCorrelationId,
6103
6213
  moveMeeting: true
6104
6214
  }).then(function () {
6105
- _this37.resourceId = '';
6215
+ _this38.resourceId = '';
6106
6216
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_FROM_SUCCESS);
6107
6217
  });
6108
6218
  }).catch(function (error) {
6109
- _this37.meetingFiniteStateMachine.fail(error);
6219
+ _this38.meetingFiniteStateMachine.fail(error);
6110
6220
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_FROM_FAILURE, {
6111
- correlation_id: _this37.correlationId,
6112
- locus_id: _this37.locusUrl.split('/').pop(),
6221
+ correlation_id: _this38.correlationId,
6222
+ locus_id: _this38.locusUrl.split('/').pop(),
6113
6223
  reason: error.message,
6114
6224
  stack: error.stack
6115
6225
  });
@@ -6222,9 +6332,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6222
6332
  }, {
6223
6333
  key: "forwardEvent",
6224
6334
  value: function forwardEvent(eventEmitter, eventTypeToForward, meetingEventType) {
6225
- var _this38 = this;
6335
+ var _this39 = this;
6226
6336
  eventEmitter.on(eventTypeToForward, function (data) {
6227
- return _triggerProxy.default.trigger(_this38, {
6337
+ return _triggerProxy.default.trigger(_this39, {
6228
6338
  file: 'meetings',
6229
6339
  function: 'addMedia'
6230
6340
  }, meetingEventType, data);
@@ -6411,7 +6521,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6411
6521
  */
6412
6522
  function () {
6413
6523
  var _waitForRemoteSDPAnswer = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee24() {
6414
- var _this39 = this;
6524
+ var _this40 = this;
6415
6525
  var LOG_HEADER, deferSDPAnswer;
6416
6526
  return _regenerator.default.wrap(function _callee24$(_context24) {
6417
6527
  while (1) switch (_context24.prev = _context24.next) {
@@ -6428,18 +6538,18 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6428
6538
  this.sdpResponseTimer = setTimeout(function () {
6429
6539
  _loggerProxy.default.logger.warn("".concat(LOG_HEADER, " timeout! no REMOTE SDP ANSWER received within ").concat(_constants.ROAP_OFFER_ANSWER_EXCHANGE_TIMEOUT / 1000, " seconds"));
6430
6540
  // @ts-ignore
6431
- _this39.webex.internal.newMetrics.submitClientEvent({
6541
+ _this40.webex.internal.newMetrics.submitClientEvent({
6432
6542
  name: 'client.media-engine.remote-sdp-received',
6433
6543
  payload: {
6434
6544
  canProceed: false,
6435
6545
  errors: [
6436
6546
  // @ts-ignore
6437
- _this39.webex.internal.newMetrics.callDiagnosticMetrics.getErrorPayloadForClientErrorCode({
6547
+ _this40.webex.internal.newMetrics.callDiagnosticMetrics.getErrorPayloadForClientErrorCode({
6438
6548
  clientErrorCode: _internalPluginMetrics.CALL_DIAGNOSTIC_CONFIG.MISSING_ROAP_ANSWER_CLIENT_CODE
6439
6549
  })]
6440
6550
  },
6441
6551
  options: {
6442
- meetingId: _this39.id,
6552
+ meetingId: _this40.id,
6443
6553
  rawError: new Error('Timeout waiting for SDP answer')
6444
6554
  }
6445
6555
  });
@@ -6825,6 +6935,43 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6825
6935
  return _cleanUpBeforeRetryWithTurnServer.apply(this, arguments);
6826
6936
  }
6827
6937
  return cleanUpBeforeRetryWithTurnServer;
6938
+ }())
6939
+ }, {
6940
+ key: "cleanUpBeforeReconnection",
6941
+ value: function () {
6942
+ var _cleanUpBeforeReconnection = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee32() {
6943
+ return _regenerator.default.wrap(function _callee32$(_context32) {
6944
+ while (1) switch (_context32.prev = _context32.next) {
6945
+ case 0:
6946
+ _context32.prev = 0;
6947
+ _context32.next = 3;
6948
+ return this.forceSendStatsReport({
6949
+ callFrom: 'cleanUpBeforeReconnection'
6950
+ });
6951
+ case 3:
6952
+ if (!this.statsAnalyzer) {
6953
+ _context32.next = 6;
6954
+ break;
6955
+ }
6956
+ _context32.next = 6;
6957
+ return this.statsAnalyzer.stopAnalyzer();
6958
+ case 6:
6959
+ _context32.next = 11;
6960
+ break;
6961
+ case 8:
6962
+ _context32.prev = 8;
6963
+ _context32.t0 = _context32["catch"](0);
6964
+ _loggerProxy.default.logger.error('Meeting:index#cleanUpBeforeReconnection --> Error during cleanup: ', _context32.t0);
6965
+ case 11:
6966
+ case "end":
6967
+ return _context32.stop();
6968
+ }
6969
+ }, _callee32, this, [[0, 8]]);
6970
+ }));
6971
+ function cleanUpBeforeReconnection() {
6972
+ return _cleanUpBeforeReconnection.apply(this, arguments);
6973
+ }
6974
+ return cleanUpBeforeReconnection;
6828
6975
  }()
6829
6976
  /**
6830
6977
  * Creates an instance of LocusMediaRequest for this meeting - it is needed for doing any calls
@@ -6832,7 +6979,6 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6832
6979
  *
6833
6980
  * @returns {void}
6834
6981
  */
6835
- )
6836
6982
  }, {
6837
6983
  key: "setupLocusMediaRequest",
6838
6984
  value: function setupLocusMediaRequest() {
@@ -6867,10 +7013,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6867
7013
  }, {
6868
7014
  key: "addMedia",
6869
7015
  value: function addMedia() {
6870
- var _this40 = this;
7016
+ var _this41 = this;
6871
7017
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
6872
7018
  return this.addMediaInternal(function () {
6873
- return _this40.turnServerUsed ? 'JOIN_MEETING_FINAL' : 'JOIN_MEETING_RETRY';
7019
+ return _this41.turnServerUsed ? 'JOIN_MEETING_FINAL' : 'JOIN_MEETING_RETRY';
6874
7020
  }, undefined, false, options);
6875
7021
  }
6876
7022
 
@@ -6888,7 +7034,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6888
7034
  }, {
6889
7035
  key: "addMediaInternal",
6890
7036
  value: (function () {
6891
- var _addMediaInternal = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee32(icePhaseCallback, turnServerInfo, forceTurnDiscovery) {
7037
+ var _addMediaInternal = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee33(icePhaseCallback, turnServerInfo, forceTurnDiscovery) {
6892
7038
  var options,
6893
7039
  LOG_HEADER,
6894
7040
  localStreams,
@@ -6901,6 +7047,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6901
7047
  _options$shareVideoEn,
6902
7048
  shareVideoEnabled,
6903
7049
  remoteMediaManagerConfig,
7050
+ _options$bundlePolicy,
6904
7051
  bundlePolicy,
6905
7052
  _this$remoteMediaMana,
6906
7053
  _yield$this$mediaProp,
@@ -6935,35 +7082,35 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6935
7082
  _selectedCandidatePairChanges,
6936
7083
  _numTransports,
6937
7084
  _iceCandidateErrors,
6938
- _args32 = arguments;
6939
- return _regenerator.default.wrap(function _callee32$(_context32) {
6940
- while (1) switch (_context32.prev = _context32.next) {
7085
+ _args33 = arguments;
7086
+ return _regenerator.default.wrap(function _callee33$(_context33) {
7087
+ while (1) switch (_context33.prev = _context33.next) {
6941
7088
  case 0:
6942
- options = _args32.length > 3 && _args32[3] !== undefined ? _args32[3] : {};
7089
+ options = _args33.length > 3 && _args33[3] !== undefined ? _args33[3] : {};
6943
7090
  this.addMediaData.retriedWithTurnServer = false;
6944
7091
  this.addMediaData.icePhaseCallback = icePhaseCallback;
6945
7092
  this.hasMediaConnectionConnectedAtLeastOnce = false;
6946
7093
  LOG_HEADER = 'Meeting:index#addMedia -->';
6947
7094
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " called with: options=").concat((0, _stringify.default)(options), ", turnServerInfo=").concat((0, _stringify.default)(turnServerInfo), ", forceTurnDiscovery=").concat(forceTurnDiscovery));
6948
7095
  if (!(options.allowMediaInLobby !== true && this.meetingState !== _constants.FULL_STATE.ACTIVE)) {
6949
- _context32.next = 8;
7096
+ _context33.next = 8;
6950
7097
  break;
6951
7098
  }
6952
7099
  throw new _webexErrors.MeetingNotActiveError();
6953
7100
  case 8:
6954
7101
  if (!_util2.default.isUserInLeftState(this.locusInfo)) {
6955
- _context32.next = 10;
7102
+ _context33.next = 10;
6956
7103
  break;
6957
7104
  }
6958
7105
  throw new _webexErrors.UserNotJoinedError();
6959
7106
  case 10:
6960
- 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, bundlePolicy = options.bundlePolicy;
7107
+ 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;
6961
7108
  this.allowMediaInLobby = options === null || options === void 0 ? void 0 : options.allowMediaInLobby;
6962
7109
 
6963
7110
  // If the user is unjoined or guest waiting in lobby dont allow the user to addMedia
6964
7111
  // @ts-ignore - isUserUnadmitted coming from SelfUtil
6965
7112
  if (!(this.isUserUnadmitted && !this.wirelessShare && !this.allowMediaInLobby)) {
6966
- _context32.next = 14;
7113
+ _context33.next = 14;
6967
7114
  break;
6968
7115
  }
6969
7116
  throw new _webexErrors.UserInLobbyError();
@@ -7006,45 +7153,45 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7006
7153
  });
7007
7154
  this.audio = (0, _muteState.createMuteState)(_constants.AUDIO, this, audioEnabled);
7008
7155
  this.video = (0, _muteState.createMuteState)(_constants.VIDEO, this, videoEnabled);
7009
- _context32.prev = 18;
7010
- _context32.next = 21;
7156
+ _context33.prev = 18;
7157
+ _context33.next = 21;
7011
7158
  return this.setUpLocalStreamReferences(localStreams);
7012
7159
  case 21:
7013
7160
  this.setMercuryListener();
7014
7161
  this.createStatsAnalyzer();
7015
- _context32.next = 25;
7162
+ _context33.next = 25;
7016
7163
  return this.establishMediaConnection(remoteMediaManagerConfig, bundlePolicy, forceTurnDiscovery, turnServerInfo);
7017
7164
  case 25:
7018
7165
  if (!(audioEnabled || videoEnabled)) {
7019
- _context32.next = 30;
7166
+ _context33.next = 30;
7020
7167
  break;
7021
7168
  }
7022
- _context32.next = 28;
7169
+ _context33.next = 28;
7023
7170
  return Meeting.handleDeviceLogging(audioEnabled, videoEnabled);
7024
7171
  case 28:
7025
- _context32.next = 31;
7172
+ _context33.next = 31;
7026
7173
  break;
7027
7174
  case 30:
7028
7175
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " device logging not required"));
7029
7176
  case 31:
7030
7177
  if (!this.mediaProperties.hasLocalShareStream()) {
7031
- _context32.next = 34;
7178
+ _context33.next = 34;
7032
7179
  break;
7033
7180
  }
7034
- _context32.next = 34;
7181
+ _context33.next = 34;
7035
7182
  return this.enqueueScreenShareFloorRequest();
7036
7183
  case 34:
7037
- _context32.next = 36;
7184
+ _context33.next = 36;
7038
7185
  return this.mediaProperties.getCurrentConnectionInfo();
7039
7186
  case 36:
7040
- _yield$this$mediaProp = _context32.sent;
7187
+ _yield$this$mediaProp = _context33.sent;
7041
7188
  connectionType = _yield$this$mediaProp.connectionType;
7042
7189
  selectedCandidatePairChanges = _yield$this$mediaProp.selectedCandidatePairChanges;
7043
7190
  numTransports = _yield$this$mediaProp.numTransports;
7044
- _context32.next = 42;
7191
+ _context33.next = 42;
7045
7192
  return this.webex.meetings.reachability.getReachabilityMetrics();
7046
7193
  case 42:
7047
- reachabilityStats = _context32.sent;
7194
+ reachabilityStats = _context33.sent;
7048
7195
  iceCandidateErrors = Object.fromEntries(this.iceCandidateErrors);
7049
7196
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_MEDIA_SUCCESS, _objectSpread(_objectSpread(_objectSpread({
7050
7197
  correlation_id: this.correlationId,
@@ -7069,31 +7216,31 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7069
7216
 
7070
7217
  // We can log ReceiveSlot SSRCs only after the SDP exchange, so doing it here:
7071
7218
  (_this$remoteMediaMana = this.remoteMediaManager) === null || _this$remoteMediaMana === void 0 ? void 0 : _this$remoteMediaMana.logAllReceiveSlots();
7072
- _context32.next = 68;
7219
+ _context33.next = 68;
7073
7220
  break;
7074
7221
  case 50:
7075
- _context32.prev = 50;
7076
- _context32.t0 = _context32["catch"](18);
7077
- _loggerProxy.default.logger.error("".concat(LOG_HEADER, " failed to establish media connection: "), _context32.t0);
7222
+ _context33.prev = 50;
7223
+ _context33.t0 = _context33["catch"](18);
7224
+ _loggerProxy.default.logger.error("".concat(LOG_HEADER, " failed to establish media connection: "), _context33.t0);
7078
7225
 
7079
7226
  // @ts-ignore
7080
- _context32.next = 55;
7227
+ _context33.next = 55;
7081
7228
  return this.webex.meetings.reachability.getReachabilityMetrics();
7082
7229
  case 55:
7083
- reachabilityMetrics = _context32.sent;
7084
- _context32.next = 58;
7230
+ reachabilityMetrics = _context33.sent;
7231
+ _context33.next = 58;
7085
7232
  return this.mediaProperties.getCurrentConnectionInfo();
7086
7233
  case 58:
7087
- _yield$this$mediaProp2 = _context32.sent;
7234
+ _yield$this$mediaProp2 = _context33.sent;
7088
7235
  _selectedCandidatePairChanges = _yield$this$mediaProp2.selectedCandidatePairChanges;
7089
7236
  _numTransports = _yield$this$mediaProp2.numTransports;
7090
7237
  _iceCandidateErrors = Object.fromEntries(this.iceCandidateErrors);
7091
7238
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_MEDIA_FAILURE, _objectSpread(_objectSpread(_objectSpread({
7092
7239
  correlation_id: this.correlationId,
7093
7240
  locus_id: this.locusUrl.split('/').pop(),
7094
- reason: _context32.t0.message,
7095
- stack: _context32.t0.stack,
7096
- code: _context32.t0.code,
7241
+ reason: _context33.t0.message,
7242
+ stack: _context33.t0.stack,
7243
+ code: _context33.t0.code,
7097
7244
  selectedCandidatePairChanges: _selectedCandidatePairChanges,
7098
7245
  numTransports: _numTransports,
7099
7246
  turnDiscoverySkippedReason: this.turnDiscoverySkippedReason,
@@ -7107,7 +7254,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7107
7254
  }, reachabilityMetrics), _iceCandidateErrors), {}, {
7108
7255
  iceCandidatesCount: this.iceCandidatesCount
7109
7256
  }));
7110
- _context32.next = 65;
7257
+ _context33.next = 65;
7111
7258
  return this.cleanUpOnAddMediaFailure();
7112
7259
  case 65:
7113
7260
  // Upload logs on error while adding media
@@ -7115,21 +7262,21 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7115
7262
  file: 'meeting/index',
7116
7263
  function: 'addMedia'
7117
7264
  }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, this);
7118
- if (_context32.t0 instanceof _internalMediaCore.Errors.SdpError) {
7265
+ if (_context33.t0 instanceof _internalMediaCore.Errors.SdpError) {
7119
7266
  this.leave({
7120
7267
  reason: _constants.MEETING_REMOVED_REASON.MEETING_CONNECTION_FAILED
7121
7268
  });
7122
7269
  }
7123
- throw _context32.t0;
7270
+ throw _context33.t0;
7124
7271
  case 68:
7125
- _context32.prev = 68;
7272
+ _context33.prev = 68;
7126
7273
  this.addMediaData.icePhaseCallback = DEFAULT_ICE_PHASE_CALLBACK;
7127
- return _context32.finish(68);
7274
+ return _context33.finish(68);
7128
7275
  case 71:
7129
7276
  case "end":
7130
- return _context32.stop();
7277
+ return _context33.stop();
7131
7278
  }
7132
- }, _callee32, this, [[18, 50, 68, 71]]);
7279
+ }, _callee33, this, [[18, 50, 68, 71]]);
7133
7280
  }));
7134
7281
  function addMediaInternal(_x32, _x33, _x34) {
7135
7282
  return _addMediaInternal.apply(this, arguments);
@@ -7161,7 +7308,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7161
7308
  * @memberof Meeting
7162
7309
  */
7163
7310
  function enqueueMediaUpdate(mediaUpdateType) {
7164
- var _this41 = this;
7311
+ var _this42 = this;
7165
7312
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
7166
7313
  var canUpdateMediaNow = this.canUpdateMedia();
7167
7314
  return new _promise.default(function (resolve, reject) {
@@ -7172,9 +7319,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7172
7319
  options: options
7173
7320
  };
7174
7321
  _loggerProxy.default.logger.log("Meeting:index#enqueueMediaUpdate --> enqueuing media update type=".concat(mediaUpdateType));
7175
- _this41.queuedMediaUpdates.push(queueItem);
7322
+ _this42.queuedMediaUpdates.push(queueItem);
7176
7323
  if (canUpdateMediaNow) {
7177
- _this41.processNextQueuedMediaUpdate();
7324
+ _this42.processNextQueuedMediaUpdate();
7178
7325
  }
7179
7326
  });
7180
7327
  }
@@ -7197,35 +7344,35 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7197
7344
  * @memberof Meeting
7198
7345
  */
7199
7346
  function () {
7200
- var _updateMedia = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee33(options) {
7347
+ var _updateMedia = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee34(options) {
7201
7348
  var audioEnabled, videoEnabled, shareAudioEnabled, shareVideoEnabled, _this$audio3, _this$video3;
7202
- return _regenerator.default.wrap(function _callee33$(_context33) {
7203
- while (1) switch (_context33.prev = _context33.next) {
7349
+ return _regenerator.default.wrap(function _callee34$(_context34) {
7350
+ while (1) switch (_context34.prev = _context34.next) {
7204
7351
  case 0:
7205
7352
  this.checkMediaConnection();
7206
7353
  audioEnabled = options.audioEnabled, videoEnabled = options.videoEnabled, shareAudioEnabled = options.shareAudioEnabled, shareVideoEnabled = options.shareVideoEnabled;
7207
7354
  _loggerProxy.default.logger.log("Meeting:index#updateMedia --> called with options=".concat((0, _stringify.default)(options)));
7208
7355
  if (this.canUpdateMedia()) {
7209
- _context33.next = 5;
7356
+ _context34.next = 5;
7210
7357
  break;
7211
7358
  }
7212
- return _context33.abrupt("return", this.enqueueMediaUpdate(MEDIA_UPDATE_TYPE.UPDATE_MEDIA, options));
7359
+ return _context34.abrupt("return", this.enqueueMediaUpdate(MEDIA_UPDATE_TYPE.UPDATE_MEDIA, options));
7213
7360
  case 5:
7214
7361
  if (!this.isMultistream) {
7215
- _context33.next = 10;
7362
+ _context34.next = 10;
7216
7363
  break;
7217
7364
  }
7218
7365
  if (!(shareAudioEnabled !== undefined || shareVideoEnabled !== undefined)) {
7219
- _context33.next = 8;
7366
+ _context34.next = 8;
7220
7367
  break;
7221
7368
  }
7222
7369
  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');
7223
7370
  case 8:
7224
- _context33.next = 12;
7371
+ _context34.next = 12;
7225
7372
  break;
7226
7373
  case 10:
7227
7374
  if (!(shareAudioEnabled !== undefined)) {
7228
- _context33.next = 12;
7375
+ _context34.next = 12;
7229
7376
  break;
7230
7377
  }
7231
7378
  throw new Error('toggling shareAudioEnabled in a transcoded meeting is not supported as of now');
@@ -7250,18 +7397,18 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7250
7397
  this.mediaProperties.mediaDirection.receiveShare = !!(shareAudioEnabled || shareVideoEnabled);
7251
7398
  }
7252
7399
  if (this.isMultistream) {
7253
- _context33.next = 18;
7400
+ _context34.next = 18;
7254
7401
  break;
7255
7402
  }
7256
- _context33.next = 18;
7403
+ _context34.next = 18;
7257
7404
  return this.updateTranscodedMediaConnection();
7258
7405
  case 18:
7259
- return _context33.abrupt("return", undefined);
7406
+ return _context34.abrupt("return", undefined);
7260
7407
  case 19:
7261
7408
  case "end":
7262
- return _context33.stop();
7409
+ return _context34.stop();
7263
7410
  }
7264
- }, _callee33, this);
7411
+ }, _callee34, this);
7265
7412
  }));
7266
7413
  function updateMedia(_x35) {
7267
7414
  return _updateMedia.apply(this, arguments);
@@ -7279,7 +7426,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7279
7426
  }, {
7280
7427
  key: "acknowledge",
7281
7428
  value: function acknowledge(type) {
7282
- var _this42 = this;
7429
+ var _this43 = this;
7283
7430
  if (!type) {
7284
7431
  return _promise.default.reject(new _parameter.default('Type must be set to acknowledge the meeting.'));
7285
7432
  }
@@ -7291,12 +7438,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7291
7438
  }).then(function (response) {
7292
7439
  return _promise.default.resolve(response);
7293
7440
  }).then(function (response) {
7294
- _this42.meetingFiniteStateMachine.ring(type);
7441
+ _this43.meetingFiniteStateMachine.ring(type);
7295
7442
  // @ts-ignore
7296
- _this42.webex.internal.newMetrics.submitClientEvent({
7443
+ _this43.webex.internal.newMetrics.submitClientEvent({
7297
7444
  name: 'client.alert.displayed',
7298
7445
  options: {
7299
- meetingId: _this42.id
7446
+ meetingId: _this43.id
7300
7447
  }
7301
7448
  });
7302
7449
  return _promise.default.resolve({
@@ -7321,12 +7468,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7321
7468
  }, {
7322
7469
  key: "decline",
7323
7470
  value: function decline(reason) {
7324
- var _this43 = this;
7471
+ var _this44 = this;
7325
7472
  return _util2.default.declineMeeting(this, reason).then(function (decline) {
7326
- _this43.meetingFiniteStateMachine.decline();
7473
+ _this44.meetingFiniteStateMachine.decline();
7327
7474
  return _promise.default.resolve(decline);
7328
7475
  }).catch(function (error) {
7329
- _this43.meetingFiniteStateMachine.fail(error);
7476
+ _this44.meetingFiniteStateMachine.fail(error);
7330
7477
  return _promise.default.reject(error);
7331
7478
  });
7332
7479
  }
@@ -7377,7 +7524,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7377
7524
  }, {
7378
7525
  key: "leave",
7379
7526
  value: function leave() {
7380
- var _this44 = this;
7527
+ var _this45 = this;
7381
7528
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
7382
7529
  var leaveReason = options.reason || _constants.MEETING_REMOVED_REASON.CLIENT_LEAVE_REQUEST;
7383
7530
 
@@ -7389,7 +7536,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7389
7536
  var payload = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
7390
7537
  return (
7391
7538
  // @ts-ignore
7392
- _this44.webex.internal.newMetrics.submitClientEvent({
7539
+ _this45.webex.internal.newMetrics.submitClientEvent({
7393
7540
  name: 'client.call.leave',
7394
7541
  payload: _objectSpread({
7395
7542
  trigger: 'user-interaction',
@@ -7397,7 +7544,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7397
7544
  leaveReason: options.clientEventLeaveReason
7398
7545
  }, payload),
7399
7546
  options: {
7400
- meetingId: _this44.id
7547
+ meetingId: _this45.id
7401
7548
  }
7402
7549
  })
7403
7550
  );
@@ -7406,24 +7553,24 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7406
7553
  return _util2.default.leaveMeeting(this, options).then(function (leave) {
7407
7554
  // CA team recommends submitting this *after* locus /leave
7408
7555
  submitLeaveMetric();
7409
- _this44.meetingFiniteStateMachine.leave();
7410
- _this44.clearMeetingData();
7556
+ _this45.meetingFiniteStateMachine.leave();
7557
+ _this45.clearMeetingData();
7411
7558
 
7412
7559
  // upload logs on leave irrespective of meeting delete
7413
- _triggerProxy.default.trigger(_this44, {
7560
+ _triggerProxy.default.trigger(_this45, {
7414
7561
  file: 'meeting/index',
7415
7562
  function: 'leave'
7416
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this44);
7563
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this45);
7417
7564
 
7418
7565
  // TODO: more testing before we remove this code, we are not sure the scenarios for destroy here
7419
- if (_this44.wirelessShare || _this44.guest) {
7566
+ if (_this45.wirelessShare || _this45.guest) {
7420
7567
  // If screen sharing clean the meeting object
7421
- _triggerProxy.default.trigger(_this44, {
7568
+ _triggerProxy.default.trigger(_this45, {
7422
7569
  file: 'meeting/index',
7423
7570
  function: 'leave'
7424
7571
  }, _constants.EVENTS.DESTROY_MEETING, {
7425
7572
  reason: options.reason,
7426
- meetingId: _this44.id
7573
+ meetingId: _this45.id
7427
7574
  });
7428
7575
  }
7429
7576
  _loggerProxy.default.logger.log('Meeting:index#leave --> LEAVE REASON ', leaveReason);
@@ -7440,16 +7587,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7440
7587
  shownToUser: false
7441
7588
  }]
7442
7589
  });
7443
- _this44.meetingFiniteStateMachine.fail(error);
7590
+ _this45.meetingFiniteStateMachine.fail(error);
7444
7591
  _loggerProxy.default.logger.error('Meeting:index#leave --> Failed to leave ', error);
7445
7592
  // upload logs on leave irrespective of meeting delete
7446
- _triggerProxy.default.trigger(_this44, {
7593
+ _triggerProxy.default.trigger(_this45, {
7447
7594
  file: 'meeting/index',
7448
7595
  function: 'leave'
7449
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this44);
7596
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this45);
7450
7597
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_LEAVE_FAILURE, {
7451
- correlation_id: _this44.correlationId,
7452
- locus_id: _this44.locusUrl.split('/').pop(),
7598
+ correlation_id: _this45.correlationId,
7599
+ locus_id: _this45.locusUrl.split('/').pop(),
7453
7600
  reason: error.message,
7454
7601
  stack: error.stack,
7455
7602
  code: error.code
@@ -7469,7 +7616,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7469
7616
  }, {
7470
7617
  key: "startWhiteboardShare",
7471
7618
  value: function startWhiteboardShare(channelUrl, resourceToken) {
7472
- var _this45 = this;
7619
+ var _this46 = this;
7473
7620
  var whiteboard = this.locusInfo.mediaShares.find(function (element) {
7474
7621
  return element.name === 'whiteboard';
7475
7622
  });
@@ -7498,13 +7645,13 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7498
7645
  body.resourceToken = resourceToken;
7499
7646
  }
7500
7647
  return this.meetingRequest.changeMeetingFloor(body).then(function () {
7501
- _this45.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
7648
+ _this46.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
7502
7649
  return _promise.default.resolve();
7503
7650
  }).catch(function (error) {
7504
7651
  _loggerProxy.default.logger.error('Meeting:index#startWhiteboardShare --> Error ', error);
7505
7652
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_START_WHITEBOARD_SHARE_FAILURE, {
7506
- correlation_id: _this45.correlationId,
7507
- locus_id: _this45.locusUrl.split('/').pop(),
7653
+ correlation_id: _this46.correlationId,
7654
+ locus_id: _this46.locusUrl.split('/').pop(),
7508
7655
  reason: error.message,
7509
7656
  stack: error.stack,
7510
7657
  board: {
@@ -7527,7 +7674,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7527
7674
  }, {
7528
7675
  key: "stopWhiteboardShare",
7529
7676
  value: function stopWhiteboardShare(channelUrl) {
7530
- var _this46 = this;
7677
+ var _this47 = this;
7531
7678
  var whiteboard = this.locusInfo.mediaShares.find(function (element) {
7532
7679
  return element.name === 'whiteboard';
7533
7680
  });
@@ -7550,8 +7697,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7550
7697
  }).catch(function (error) {
7551
7698
  _loggerProxy.default.logger.error('Meeting:index#stopWhiteboardShare --> Error ', error);
7552
7699
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_STOP_WHITEBOARD_SHARE_FAILURE, {
7553
- correlation_id: _this46.correlationId,
7554
- locus_id: _this46.locusUrl.split('/').pop(),
7700
+ correlation_id: _this47.correlationId,
7701
+ locus_id: _this47.locusUrl.split('/').pop(),
7555
7702
  reason: error.message,
7556
7703
  stack: error.stack,
7557
7704
  board: {
@@ -7573,7 +7720,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7573
7720
  }, {
7574
7721
  key: "requestScreenShareFloor",
7575
7722
  value: function requestScreenShareFloor() {
7576
- var _this47 = this;
7723
+ var _this48 = this;
7577
7724
  if (!this.mediaProperties.hasLocalShareStream() || !this.mediaProperties.mediaDirection.sendShare) {
7578
7725
  _loggerProxy.default.logger.log("Meeting:index#requestScreenShareFloor --> NOT requesting floor, because we don't have the share stream anymore (shareStream=".concat(this.mediaProperties.shareVideoStream ? 'yes' : 'no', ", sendShare=").concat(this.mediaProperties.mediaDirection.sendShare, ")"));
7579
7726
  this.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
@@ -7604,34 +7751,34 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7604
7751
  resourceUrl: this.resourceUrl,
7605
7752
  shareInstanceId: this.localShareInstanceId
7606
7753
  }).then(function () {
7607
- _this47.screenShareFloorState = ScreenShareFloorStatus.GRANTED;
7754
+ _this48.screenShareFloorState = ScreenShareFloorStatus.GRANTED;
7608
7755
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_SHARE_SUCCESS, {
7609
- correlation_id: _this47.correlationId,
7610
- locus_id: _this47.locusUrl.split('/').pop()
7756
+ correlation_id: _this48.correlationId,
7757
+ locus_id: _this48.locusUrl.split('/').pop()
7611
7758
  });
7612
7759
  return _promise.default.resolve();
7613
7760
  }).catch(function (error) {
7614
7761
  _loggerProxy.default.logger.error('Meeting:index#share --> Error ', error);
7615
7762
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_SHARE_FAILURE, {
7616
- correlation_id: _this47.correlationId,
7617
- locus_id: _this47.locusUrl.split('/').pop(),
7763
+ correlation_id: _this48.correlationId,
7764
+ locus_id: _this48.locusUrl.split('/').pop(),
7618
7765
  reason: error.message,
7619
7766
  stack: error.stack
7620
7767
  });
7621
7768
 
7622
7769
  // @ts-ignore
7623
- _this47.webex.internal.newMetrics.submitClientEvent({
7770
+ _this48.webex.internal.newMetrics.submitClientEvent({
7624
7771
  name: 'client.share.floor-granted.local',
7625
7772
  payload: {
7626
7773
  mediaType: 'share',
7627
7774
  errors: _util2.default.getChangeMeetingFloorErrorPayload(error.message),
7628
- shareInstanceId: _this47.localShareInstanceId
7775
+ shareInstanceId: _this48.localShareInstanceId
7629
7776
  },
7630
7777
  options: {
7631
- meetingId: _this47.id
7778
+ meetingId: _this48.id
7632
7779
  }
7633
7780
  });
7634
- _this47.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
7781
+ _this48.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
7635
7782
  return _promise.default.reject(error);
7636
7783
  });
7637
7784
  }
@@ -7654,10 +7801,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7654
7801
  }, {
7655
7802
  key: "requestScreenShareFloorIfPending",
7656
7803
  value: function requestScreenShareFloorIfPending() {
7657
- var _this48 = this;
7804
+ var _this49 = this;
7658
7805
  if (this.floorGrantPending && this.state === _constants.MEETING_STATE.STATES.JOINED) {
7659
7806
  this.requestScreenShareFloor().then(function () {
7660
- _this48.floorGrantPending = false;
7807
+ _this49.floorGrantPending = false;
7661
7808
  });
7662
7809
  }
7663
7810
  }
@@ -7671,7 +7818,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7671
7818
  }, {
7672
7819
  key: "releaseScreenShareFloor",
7673
7820
  value: function releaseScreenShareFloor() {
7674
- var _this49 = this;
7821
+ var _this50 = this;
7675
7822
  var content = this.locusInfo.mediaShares.find(function (element) {
7676
7823
  return element.name === _constants.CONTENT;
7677
7824
  });
@@ -7706,8 +7853,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7706
7853
  }).catch(function (error) {
7707
7854
  _loggerProxy.default.logger.error('Meeting:index#releaseScreenShareFloor --> Error ', error);
7708
7855
  _metrics.default.sendBehavioralMetric(_constants2.default.STOP_FLOOR_REQUEST_FAILURE, {
7709
- correlation_id: _this49.correlationId,
7710
- locus_id: _this49.locusUrl.split('/').pop(),
7856
+ correlation_id: _this50.correlationId,
7857
+ locus_id: _this50.locusUrl.split('/').pop(),
7711
7858
  reason: error.message,
7712
7859
  stack: error.stack
7713
7860
  });
@@ -7763,13 +7910,14 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7763
7910
  * @param {boolean} mutedEnabled
7764
7911
  * @param {boolean} disallowUnmuteEnabled
7765
7912
  * @param {boolean} muteOnEntryEnabled
7913
+ * @param {array} roles
7766
7914
  * @public
7767
7915
  * @memberof Meeting
7768
7916
  */
7769
7917
  }, {
7770
7918
  key: "setMuteAll",
7771
- value: function setMuteAll(mutedEnabled, disallowUnmuteEnabled, muteOnEntryEnabled) {
7772
- return this.controlsOptionsManager.setMuteAll(mutedEnabled, disallowUnmuteEnabled, muteOnEntryEnabled);
7919
+ value: function setMuteAll(mutedEnabled, disallowUnmuteEnabled, muteOnEntryEnabled, roles) {
7920
+ return this.controlsOptionsManager.setMuteAll(mutedEnabled, disallowUnmuteEnabled, muteOnEntryEnabled, roles);
7773
7921
  }
7774
7922
 
7775
7923
  /**
@@ -7886,7 +8034,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7886
8034
  }, {
7887
8035
  key: "changeVideoLayout",
7888
8036
  value: function changeVideoLayout(layoutType) {
7889
- var _this50 = this;
8037
+ var _this51 = this;
7890
8038
  var renderInfo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
7891
8039
  var main = renderInfo.main,
7892
8040
  content = renderInfo.content;
@@ -7940,7 +8088,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7940
8088
  }
7941
8089
  this.lastVideoLayoutInfo = (0, _lodash.cloneDeep)(layoutInfo);
7942
8090
  this.locusInfo.once(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_LAYOUT_UPDATED, function (envelope) {
7943
- _triggerProxy.default.trigger(_this50, {
8091
+ _triggerProxy.default.trigger(_this51, {
7944
8092
  file: 'meeting/index',
7945
8093
  function: 'changeVideoLayout'
7946
8094
  }, _constants.EVENT_TRIGGERS.MEETING_CONTROLS_LAYOUT_UPDATE, {
@@ -8056,7 +8204,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8056
8204
  }, {
8057
8205
  key: "endMeetingForAll",
8058
8206
  value: function endMeetingForAll() {
8059
- var _this51 = this;
8207
+ var _this52 = this;
8060
8208
  // @ts-ignore
8061
8209
  this.webex.internal.newMetrics.submitClientEvent({
8062
8210
  name: 'client.call.leave',
@@ -8074,25 +8222,25 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8074
8222
  locus_id: this.locusId
8075
8223
  });
8076
8224
  return _util2.default.endMeetingForAll(this).then(function (end) {
8077
- _this51.meetingFiniteStateMachine.end();
8078
- _this51.clearMeetingData();
8225
+ _this52.meetingFiniteStateMachine.end();
8226
+ _this52.clearMeetingData();
8079
8227
  // upload logs on leave irrespective of meeting delete
8080
- _triggerProxy.default.trigger(_this51, {
8228
+ _triggerProxy.default.trigger(_this52, {
8081
8229
  file: 'meeting/index',
8082
8230
  function: 'endMeetingForAll'
8083
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this51);
8231
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this52);
8084
8232
  return end;
8085
8233
  }).catch(function (error) {
8086
- _this51.meetingFiniteStateMachine.fail(error);
8234
+ _this52.meetingFiniteStateMachine.fail(error);
8087
8235
  _loggerProxy.default.logger.error('Meeting:index#endMeetingForAll --> Failed to end meeting ', error);
8088
8236
  // upload logs on leave irrespective of meeting delete
8089
- _triggerProxy.default.trigger(_this51, {
8237
+ _triggerProxy.default.trigger(_this52, {
8090
8238
  file: 'meeting/index',
8091
8239
  function: 'endMeetingForAll'
8092
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this51);
8240
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this52);
8093
8241
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_END_ALL_FAILURE, {
8094
- correlation_id: _this51.correlationId,
8095
- locus_id: _this51.locusUrl.split('/').pop(),
8242
+ correlation_id: _this52.correlationId,
8243
+ locus_id: _this52.locusUrl.split('/').pop(),
8096
8244
  reason: error.message,
8097
8245
  stack: error.stack,
8098
8246
  code: error.code
@@ -8181,37 +8329,37 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8181
8329
  }, {
8182
8330
  key: "enableMusicMode",
8183
8331
  value: (function () {
8184
- var _enableMusicMode = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee34(shouldEnableMusicMode) {
8185
- return _regenerator.default.wrap(function _callee34$(_context34) {
8186
- while (1) switch (_context34.prev = _context34.next) {
8332
+ var _enableMusicMode = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee35(shouldEnableMusicMode) {
8333
+ return _regenerator.default.wrap(function _callee35$(_context35) {
8334
+ while (1) switch (_context35.prev = _context35.next) {
8187
8335
  case 0:
8188
8336
  this.checkMediaConnection();
8189
8337
  if (this.isMultistream) {
8190
- _context34.next = 3;
8338
+ _context35.next = 3;
8191
8339
  break;
8192
8340
  }
8193
8341
  throw new Error('enableMusicMode() only supported with multistream');
8194
8342
  case 3:
8195
8343
  if (!shouldEnableMusicMode) {
8196
- _context34.next = 8;
8344
+ _context35.next = 8;
8197
8345
  break;
8198
8346
  }
8199
- _context34.next = 6;
8347
+ _context35.next = 6;
8200
8348
  return this.sendSlotManager.setCodecParameters(_internalMediaCore.MediaType.AudioMain, {
8201
8349
  maxaveragebitrate: '64000',
8202
8350
  maxplaybackrate: '48000'
8203
8351
  });
8204
8352
  case 6:
8205
- _context34.next = 10;
8353
+ _context35.next = 10;
8206
8354
  break;
8207
8355
  case 8:
8208
- _context34.next = 10;
8356
+ _context35.next = 10;
8209
8357
  return this.sendSlotManager.deleteCodecParameters(_internalMediaCore.MediaType.AudioMain, ['maxaveragebitrate', 'maxplaybackrate']);
8210
8358
  case 10:
8211
8359
  case "end":
8212
- return _context34.stop();
8360
+ return _context35.stop();
8213
8361
  }
8214
- }, _callee34, this);
8362
+ }, _callee35, this);
8215
8363
  }));
8216
8364
  function enableMusicMode(_x36) {
8217
8365
  return _enableMusicMode.apply(this, arguments);
@@ -8234,7 +8382,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8234
8382
  _this$mediaProperties41,
8235
8383
  _this$mediaProperties42,
8236
8384
  _this$mediaProperties43,
8237
- _this52 = this;
8385
+ _this53 = this;
8238
8386
  var LOG_HEADER = 'Meeting:index#updateTranscodedMediaConnection -->';
8239
8387
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " starting"));
8240
8388
  if (!this.canUpdateMedia()) {
@@ -8259,8 +8407,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8259
8407
  }).catch(function (error) {
8260
8408
  _loggerProxy.default.logger.error("".concat(LOG_HEADER, " Error: "), error);
8261
8409
  _metrics.default.sendBehavioralMetric(_constants2.default.UPDATE_MEDIA_FAILURE, {
8262
- correlation_id: _this52.correlationId,
8263
- locus_id: _this52.locusUrl.split('/').pop(),
8410
+ correlation_id: _this53.correlationId,
8411
+ locus_id: _this53.locusUrl.split('/').pop(),
8264
8412
  reason: error.message,
8265
8413
  stack: error.stack
8266
8414
  });
@@ -8304,25 +8452,25 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8304
8452
  }, {
8305
8453
  key: "publishStream",
8306
8454
  value: (function () {
8307
- var _publishStream = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee35(mediaType, stream) {
8308
- return _regenerator.default.wrap(function _callee35$(_context35) {
8309
- while (1) switch (_context35.prev = _context35.next) {
8455
+ var _publishStream = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee36(mediaType, stream) {
8456
+ return _regenerator.default.wrap(function _callee36$(_context36) {
8457
+ while (1) switch (_context36.prev = _context36.next) {
8310
8458
  case 0:
8311
8459
  if (stream) {
8312
- _context35.next = 2;
8460
+ _context36.next = 2;
8313
8461
  break;
8314
8462
  }
8315
- return _context35.abrupt("return");
8463
+ return _context36.abrupt("return");
8316
8464
  case 2:
8317
8465
  if (!this.mediaProperties.webrtcMediaConnection) {
8318
- _context35.next = 7;
8466
+ _context36.next = 7;
8319
8467
  break;
8320
8468
  }
8321
8469
  if (!(this.isMultistream && this.mediaProperties.webrtcMediaConnection)) {
8322
- _context35.next = 6;
8470
+ _context36.next = 6;
8323
8471
  break;
8324
8472
  }
8325
- _context35.next = 6;
8473
+ _context36.next = 6;
8326
8474
  return this.sendSlotManager.publishStream(mediaType, stream);
8327
8475
  case 6:
8328
8476
  this.emitPublishStateChangeEvent({
@@ -8333,9 +8481,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8333
8481
  });
8334
8482
  case 7:
8335
8483
  case "end":
8336
- return _context35.stop();
8484
+ return _context36.stop();
8337
8485
  }
8338
- }, _callee35, this);
8486
+ }, _callee36, this);
8339
8487
  }));
8340
8488
  function publishStream(_x37, _x38) {
8341
8489
  return _publishStream.apply(this, arguments);
@@ -8353,21 +8501,21 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8353
8501
  }, {
8354
8502
  key: "unpublishStream",
8355
8503
  value: (function () {
8356
- var _unpublishStream = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee36(mediaType, stream) {
8357
- return _regenerator.default.wrap(function _callee36$(_context36) {
8358
- while (1) switch (_context36.prev = _context36.next) {
8504
+ var _unpublishStream = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee37(mediaType, stream) {
8505
+ return _regenerator.default.wrap(function _callee37$(_context37) {
8506
+ while (1) switch (_context37.prev = _context37.next) {
8359
8507
  case 0:
8360
8508
  if (stream) {
8361
- _context36.next = 2;
8509
+ _context37.next = 2;
8362
8510
  break;
8363
8511
  }
8364
- return _context36.abrupt("return");
8512
+ return _context37.abrupt("return");
8365
8513
  case 2:
8366
8514
  if (!(this.isMultistream && this.mediaProperties.webrtcMediaConnection)) {
8367
- _context36.next = 5;
8515
+ _context37.next = 5;
8368
8516
  break;
8369
8517
  }
8370
- _context36.next = 5;
8518
+ _context37.next = 5;
8371
8519
  return this.sendSlotManager.unpublishStream(mediaType);
8372
8520
  case 5:
8373
8521
  this.emitPublishStateChangeEvent({
@@ -8378,9 +8526,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8378
8526
  });
8379
8527
  case 6:
8380
8528
  case "end":
8381
- return _context36.stop();
8529
+ return _context37.stop();
8382
8530
  }
8383
- }, _callee36, this);
8531
+ }, _callee37, this);
8384
8532
  }));
8385
8533
  function unpublishStream(_x39, _x40) {
8386
8534
  return _unpublishStream.apply(this, arguments);
@@ -8397,67 +8545,92 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8397
8545
  }, {
8398
8546
  key: "publishStreams",
8399
8547
  value: (function () {
8400
- var _publishStreams = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee37(streams) {
8401
- var _streams$screenShare, _streams$screenShare2, _streams$microphone, _streams$camera, _streams$screenShare3, _streams$screenShare4, _streams$screenShare5, _streams$screenShare6, _streams$screenShare7, _streams$screenShare8;
8402
- var floorRequestNeeded, _streams$screenShare9;
8403
- return _regenerator.default.wrap(function _callee37$(_context37) {
8404
- while (1) switch (_context37.prev = _context37.next) {
8548
+ var _publishStreams = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee38(streams) {
8549
+ var _streams$screenShare, _streams$screenShare2, _streams$screenShare3, _streams$screenShare4, _streams$screenShare5, _streams$screenShare6;
8550
+ var streamChecks, _i, _streamChecks, _streamChecks$_i, stream, name, floorRequestNeeded, _streams$screenShare7;
8551
+ return _regenerator.default.wrap(function _callee38$(_context38) {
8552
+ while (1) switch (_context38.prev = _context38.next) {
8405
8553
  case 0:
8554
+ _loggerProxy.default.logger.info("Meeting:index#publishStreams --> called with: ".concat((0, _stringify.default)(streams)));
8406
8555
  this.checkMediaConnection();
8407
8556
  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))) {
8408
- _context37.next = 3;
8557
+ _context38.next = 4;
8409
8558
  break;
8410
8559
  }
8411
- return _context37.abrupt("return");
8412
- case 3:
8413
- if (!((streams === null || streams === void 0 ? void 0 : (_streams$microphone = streams.microphone) === null || _streams$microphone === void 0 ? void 0 : _streams$microphone.readyState) === 'ended' || (streams === null || streams === void 0 ? void 0 : (_streams$camera = streams.camera) === null || _streams$camera === void 0 ? void 0 : _streams$camera.readyState) === 'ended' || (streams === null || streams === void 0 ? void 0 : (_streams$screenShare3 = streams.screenShare) === null || _streams$screenShare3 === void 0 ? void 0 : (_streams$screenShare4 = _streams$screenShare3.audio) === null || _streams$screenShare4 === void 0 ? void 0 : _streams$screenShare4.readyState) === 'ended' || (streams === null || streams === void 0 ? void 0 : (_streams$screenShare5 = streams.screenShare) === null || _streams$screenShare5 === void 0 ? void 0 : (_streams$screenShare6 = _streams$screenShare5.video) === null || _streams$screenShare6 === void 0 ? void 0 : _streams$screenShare6.readyState) === 'ended')) {
8414
- _context37.next = 5;
8560
+ return _context38.abrupt("return");
8561
+ case 4:
8562
+ streamChecks = [{
8563
+ stream: streams === null || streams === void 0 ? void 0 : streams.microphone,
8564
+ name: 'microphone'
8565
+ }, {
8566
+ stream: streams === null || streams === void 0 ? void 0 : streams.camera,
8567
+ name: 'camera'
8568
+ }, {
8569
+ stream: streams === null || streams === void 0 ? void 0 : (_streams$screenShare3 = streams.screenShare) === null || _streams$screenShare3 === void 0 ? void 0 : _streams$screenShare3.audio,
8570
+ name: 'screenShare audio'
8571
+ }, {
8572
+ stream: streams === null || streams === void 0 ? void 0 : (_streams$screenShare4 = streams.screenShare) === null || _streams$screenShare4 === void 0 ? void 0 : _streams$screenShare4.video,
8573
+ name: 'screenShare video'
8574
+ }];
8575
+ _i = 0, _streamChecks = streamChecks;
8576
+ case 6:
8577
+ if (!(_i < _streamChecks.length)) {
8578
+ _context38.next = 13;
8415
8579
  break;
8416
8580
  }
8417
- throw new Error("Attempted to publish stream with ended readyState, correlationId=".concat(this.correlationId));
8418
- case 5:
8581
+ _streamChecks$_i = _streamChecks[_i], stream = _streamChecks$_i.stream, name = _streamChecks$_i.name;
8582
+ if (!((stream === null || stream === void 0 ? void 0 : stream.readyState) === 'ended')) {
8583
+ _context38.next = 10;
8584
+ break;
8585
+ }
8586
+ throw new Error("Attempted to publish ".concat(name, " stream with ended readyState, correlationId=").concat(this.correlationId));
8587
+ case 10:
8588
+ _i++;
8589
+ _context38.next = 6;
8590
+ break;
8591
+ case 13:
8419
8592
  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
8420
- if (!(this.isMultistream && (_streams$screenShare7 = streams.screenShare) !== null && _streams$screenShare7 !== void 0 && _streams$screenShare7.audio)) {
8421
- _context37.next = 10;
8593
+ if (!(this.isMultistream && (_streams$screenShare5 = streams.screenShare) !== null && _streams$screenShare5 !== void 0 && _streams$screenShare5.audio)) {
8594
+ _context38.next = 18;
8422
8595
  break;
8423
8596
  }
8424
- _context37.next = 9;
8597
+ _context38.next = 17;
8425
8598
  return this.setLocalShareAudioStream(streams.screenShare.audio);
8426
- case 9:
8599
+ case 17:
8427
8600
  floorRequestNeeded = this.screenShareFloorState === ScreenShareFloorStatus.RELEASED;
8428
- case 10:
8429
- if (!((_streams$screenShare8 = streams.screenShare) !== null && _streams$screenShare8 !== void 0 && _streams$screenShare8.video)) {
8430
- _context37.next = 14;
8601
+ case 18:
8602
+ if (!((_streams$screenShare6 = streams.screenShare) !== null && _streams$screenShare6 !== void 0 && _streams$screenShare6.video)) {
8603
+ _context38.next = 22;
8431
8604
  break;
8432
8605
  }
8433
- _context37.next = 13;
8434
- return this.setLocalShareVideoStream((_streams$screenShare9 = streams.screenShare) === null || _streams$screenShare9 === void 0 ? void 0 : _streams$screenShare9.video);
8435
- case 13:
8606
+ _context38.next = 21;
8607
+ return this.setLocalShareVideoStream((_streams$screenShare7 = streams.screenShare) === null || _streams$screenShare7 === void 0 ? void 0 : _streams$screenShare7.video);
8608
+ case 21:
8436
8609
  floorRequestNeeded = this.screenShareFloorState === ScreenShareFloorStatus.RELEASED;
8437
- case 14:
8610
+ case 22:
8438
8611
  if (!streams.microphone) {
8439
- _context37.next = 17;
8612
+ _context38.next = 25;
8440
8613
  break;
8441
8614
  }
8442
- _context37.next = 17;
8615
+ _context38.next = 25;
8443
8616
  return this.setLocalAudioStream(streams.microphone);
8444
- case 17:
8617
+ case 25:
8445
8618
  if (!streams.camera) {
8446
- _context37.next = 20;
8619
+ _context38.next = 28;
8447
8620
  break;
8448
8621
  }
8449
- _context37.next = 20;
8622
+ _context38.next = 28;
8450
8623
  return this.setLocalVideoStream(streams.camera);
8451
- case 20:
8624
+ case 28:
8452
8625
  if (this.isMultistream) {
8453
- _context37.next = 23;
8626
+ _context38.next = 31;
8454
8627
  break;
8455
8628
  }
8456
- _context37.next = 23;
8629
+ _context38.next = 31;
8457
8630
  return this.updateTranscodedMediaConnection();
8458
- case 23:
8631
+ case 31:
8459
8632
  if (!floorRequestNeeded) {
8460
- _context37.next = 29;
8633
+ _context38.next = 37;
8461
8634
  break;
8462
8635
  }
8463
8636
  this.localShareInstanceId = _uuid.default.v4();
@@ -8481,13 +8654,13 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8481
8654
  // we're sending the http request to Locus to request the screen share floor
8482
8655
  // only after the SDP update, because that's how it's always been done for transcoded meetings
8483
8656
  // and also if sharing from the start, we need confluence to have been created
8484
- _context37.next = 29;
8657
+ _context38.next = 37;
8485
8658
  return this.enqueueScreenShareFloorRequest();
8486
- case 29:
8659
+ case 37:
8487
8660
  case "end":
8488
- return _context37.stop();
8661
+ return _context38.stop();
8489
8662
  }
8490
- }, _callee37, this);
8663
+ }, _callee38, this);
8491
8664
  }));
8492
8665
  function publishStreams(_x41) {
8493
8666
  return _publishStreams.apply(this, arguments);
@@ -8504,11 +8677,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8504
8677
  }, {
8505
8678
  key: "unpublishStreams",
8506
8679
  value: (function () {
8507
- var _unpublishStreams = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee38(streams) {
8680
+ var _unpublishStreams = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee39(streams) {
8508
8681
  var promises, _iterator, _step, stream;
8509
- return _regenerator.default.wrap(function _callee38$(_context38) {
8510
- while (1) switch (_context38.prev = _context38.next) {
8682
+ return _regenerator.default.wrap(function _callee39$(_context39) {
8683
+ while (1) switch (_context39.prev = _context39.next) {
8511
8684
  case 0:
8685
+ _loggerProxy.default.logger.info("Meeting:index#unpublishStreams --> called with: ".concat((0, _stringify.default)(streams)));
8512
8686
  this.checkMediaConnection();
8513
8687
  promises = [];
8514
8688
  _iterator = _createForOfIteratorHelper(streams.filter(function (t) {
@@ -8538,9 +8712,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8538
8712
  if (!this.isMultistream) {
8539
8713
  promises.push(this.updateTranscodedMediaConnection());
8540
8714
  }
8541
- _context38.next = 7;
8715
+ _context39.next = 8;
8542
8716
  return _promise.default.all(promises);
8543
- case 7:
8717
+ case 8:
8544
8718
  // we're allowing for the SDK to support just audio share as well
8545
8719
  // so a share could be active with only video, only audio, or both
8546
8720
  // we're only releasing the floor if both streams have ended
@@ -8557,11 +8731,11 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8557
8731
  // nothing to do here, error is logged already inside releaseScreenShareFloor()
8558
8732
  }
8559
8733
  }
8560
- case 8:
8734
+ case 9:
8561
8735
  case "end":
8562
- return _context38.stop();
8736
+ return _context39.stop();
8563
8737
  }
8564
- }, _callee38, this);
8738
+ }, _callee39, this);
8565
8739
  }));
8566
8740
  function unpublishStreams(_x42) {
8567
8741
  return _unpublishStreams.apply(this, arguments);
@@ -8623,55 +8797,55 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8623
8797
  }], [{
8624
8798
  key: "handleDeviceLogging",
8625
8799
  value: (function () {
8626
- var _handleDeviceLogging = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee39(isAudioEnabled, isVideoEnabled) {
8800
+ var _handleDeviceLogging = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee40(isAudioEnabled, isVideoEnabled) {
8627
8801
  var devices;
8628
- return _regenerator.default.wrap(function _callee39$(_context39) {
8629
- while (1) switch (_context39.prev = _context39.next) {
8802
+ return _regenerator.default.wrap(function _callee40$(_context40) {
8803
+ while (1) switch (_context40.prev = _context40.next) {
8630
8804
  case 0:
8631
- _context39.prev = 0;
8805
+ _context40.prev = 0;
8632
8806
  devices = [];
8633
8807
  if (!(isVideoEnabled && isAudioEnabled)) {
8634
- _context39.next = 8;
8808
+ _context40.next = 8;
8635
8809
  break;
8636
8810
  }
8637
- _context39.next = 5;
8811
+ _context40.next = 5;
8638
8812
  return (0, _mediaHelpers.getDevices)();
8639
8813
  case 5:
8640
- devices = _context39.sent;
8641
- _context39.next = 18;
8814
+ devices = _context40.sent;
8815
+ _context40.next = 18;
8642
8816
  break;
8643
8817
  case 8:
8644
8818
  if (!isVideoEnabled) {
8645
- _context39.next = 14;
8819
+ _context40.next = 14;
8646
8820
  break;
8647
8821
  }
8648
- _context39.next = 11;
8822
+ _context40.next = 11;
8649
8823
  return (0, _mediaHelpers.getDevices)(_media.default.DeviceKind.VIDEO_INPUT);
8650
8824
  case 11:
8651
- devices = _context39.sent;
8652
- _context39.next = 18;
8825
+ devices = _context40.sent;
8826
+ _context40.next = 18;
8653
8827
  break;
8654
8828
  case 14:
8655
8829
  if (!isAudioEnabled) {
8656
- _context39.next = 18;
8830
+ _context40.next = 18;
8657
8831
  break;
8658
8832
  }
8659
- _context39.next = 17;
8833
+ _context40.next = 17;
8660
8834
  return (0, _mediaHelpers.getDevices)(_media.default.DeviceKind.AUDIO_INPUT);
8661
8835
  case 17:
8662
- devices = _context39.sent;
8836
+ devices = _context40.sent;
8663
8837
  case 18:
8664
8838
  _util2.default.handleDeviceLogging(devices);
8665
- _context39.next = 23;
8839
+ _context40.next = 23;
8666
8840
  break;
8667
8841
  case 21:
8668
- _context39.prev = 21;
8669
- _context39.t0 = _context39["catch"](0);
8842
+ _context40.prev = 21;
8843
+ _context40.t0 = _context40["catch"](0);
8670
8844
  case 23:
8671
8845
  case "end":
8672
- return _context39.stop();
8846
+ return _context40.stop();
8673
8847
  }
8674
- }, _callee39, null, [[0, 21]]);
8848
+ }, _callee40, null, [[0, 21]]);
8675
8849
  }));
8676
8850
  function handleDeviceLogging(_x43, _x44) {
8677
8851
  return _handleDeviceLogging.apply(this, arguments);