@webex/plugin-meetings 3.6.0 → 3.7.0-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (314) 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 +692 -522
  32. package/dist/meeting/index.js.map +1 -1
  33. package/dist/meeting/locusMediaRequest.js +2 -6
  34. package/dist/meeting/locusMediaRequest.js.map +1 -1
  35. package/dist/meeting/muteState.js +5 -2
  36. package/dist/meeting/muteState.js.map +1 -1
  37. package/dist/meeting/request.js +21 -29
  38. package/dist/meeting/request.js.map +1 -1
  39. package/dist/meeting/util.js +97 -61
  40. package/dist/meeting/util.js.map +1 -1
  41. package/dist/meeting-info/meeting-info-v2.js +68 -17
  42. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  43. package/dist/meetings/index.js +25 -1
  44. package/dist/meetings/index.js.map +1 -1
  45. package/dist/members/index.js +3 -2
  46. package/dist/members/index.js.map +1 -1
  47. package/dist/members/util.js +9 -5
  48. package/dist/members/util.js.map +1 -1
  49. package/dist/metrics/constants.js +2 -1
  50. package/dist/metrics/constants.js.map +1 -1
  51. package/dist/multistream/remoteMedia.js +4 -0
  52. package/dist/multistream/remoteMedia.js.map +1 -1
  53. package/dist/reachability/clusterReachability.js +0 -4
  54. package/dist/reachability/clusterReachability.js.map +1 -1
  55. package/dist/reachability/index.js +433 -136
  56. package/dist/reachability/index.js.map +1 -1
  57. package/dist/{rtcMetrics/constants.js → reachability/reachability.types.js} +1 -5
  58. package/dist/reachability/reachability.types.js.map +1 -0
  59. package/dist/reachability/request.js +23 -9
  60. package/dist/reachability/request.js.map +1 -1
  61. package/dist/roap/index.js +5 -7
  62. package/dist/roap/index.js.map +1 -1
  63. package/dist/roap/request.js +45 -79
  64. package/dist/roap/request.js.map +1 -1
  65. package/dist/roap/turnDiscovery.js +3 -6
  66. package/dist/roap/turnDiscovery.js.map +1 -1
  67. package/dist/{common/errors/parameter.d.ts → types/common/errors/webinar-registration-error.d.ts} +4 -5
  68. package/dist/types/config.d.ts +2 -0
  69. package/dist/types/constants.d.ts +25 -0
  70. package/dist/types/controls-options-manager/enums.d.ts +2 -1
  71. package/dist/types/controls-options-manager/index.d.ts +2 -1
  72. package/dist/types/controls-options-manager/types.d.ts +2 -0
  73. package/dist/types/index.d.ts +2 -1
  74. package/dist/types/locus-info/index.d.ts +9 -0
  75. package/dist/types/meeting/in-meeting-actions.d.ts +18 -0
  76. package/dist/types/meeting/index.d.ts +14 -3
  77. package/dist/types/meeting/locusMediaRequest.d.ts +2 -3
  78. package/dist/types/meeting/muteState.d.ts +2 -1
  79. package/dist/types/meeting/request.d.ts +2 -2
  80. package/dist/types/meeting/util.d.ts +2 -2
  81. package/dist/types/meeting-info/meeting-info-v2.d.ts +23 -0
  82. package/dist/types/meetings/index.d.ts +10 -1
  83. package/dist/types/members/index.d.ts +2 -1
  84. package/dist/types/members/util.d.ts +3 -1
  85. package/dist/types/metrics/constants.d.ts +1 -0
  86. package/dist/types/multistream/remoteMedia.d.ts +1 -0
  87. package/dist/types/reachability/clusterReachability.d.ts +1 -10
  88. package/dist/types/reachability/index.d.ts +74 -35
  89. package/dist/types/reachability/reachability.types.d.ts +64 -0
  90. package/dist/types/reachability/request.d.ts +5 -1
  91. package/dist/types/roap/request.d.ts +1 -13
  92. package/dist/webinar/index.js +32 -19
  93. package/dist/webinar/index.js.map +1 -1
  94. package/package.json +22 -22
  95. package/src/common/errors/webinar-registration-error.ts +27 -0
  96. package/src/config.ts +2 -0
  97. package/src/constants.ts +31 -0
  98. package/src/controls-options-manager/enums.ts +1 -0
  99. package/src/controls-options-manager/index.ts +19 -2
  100. package/src/controls-options-manager/types.ts +2 -0
  101. package/src/controls-options-manager/util.ts +12 -0
  102. package/src/index.ts +2 -0
  103. package/src/locus-info/controlsUtils.ts +46 -2
  104. package/src/locus-info/fullState.ts +1 -0
  105. package/src/locus-info/index.ts +60 -0
  106. package/src/locus-info/parser.ts +8 -1
  107. package/src/meeting/in-meeting-actions.ts +37 -0
  108. package/src/meeting/index.ts +154 -22
  109. package/src/meeting/locusMediaRequest.ts +4 -8
  110. package/src/meeting/muteState.ts +6 -2
  111. package/src/meeting/request.ts +4 -11
  112. package/src/meeting/util.ts +30 -6
  113. package/src/meeting-info/meeting-info-v2.ts +51 -0
  114. package/src/meetings/index.ts +68 -40
  115. package/src/members/index.ts +4 -2
  116. package/src/members/util.ts +3 -1
  117. package/src/metrics/constants.ts +1 -0
  118. package/src/multistream/remoteMedia.ts +5 -0
  119. package/src/reachability/clusterReachability.ts +1 -14
  120. package/src/reachability/index.ts +285 -77
  121. package/src/reachability/reachability.types.ts +85 -0
  122. package/src/reachability/request.ts +55 -30
  123. package/src/roap/index.ts +4 -5
  124. package/src/roap/request.ts +32 -44
  125. package/src/roap/turnDiscovery.ts +2 -4
  126. package/src/webinar/index.ts +31 -17
  127. package/test/unit/spec/controls-options-manager/index.js +56 -32
  128. package/test/unit/spec/controls-options-manager/util.js +44 -0
  129. package/test/unit/spec/locus-info/controlsUtils.js +80 -4
  130. package/test/unit/spec/locus-info/index.js +88 -2
  131. package/test/unit/spec/meeting/in-meeting-actions.ts +18 -0
  132. package/test/unit/spec/meeting/index.js +272 -82
  133. package/test/unit/spec/meeting/locusMediaRequest.ts +18 -11
  134. package/test/unit/spec/meeting/muteState.js +8 -4
  135. package/test/unit/spec/meeting/request.js +3 -26
  136. package/test/unit/spec/meeting/utils.js +69 -14
  137. package/test/unit/spec/meeting-info/meetinginfov2.js +37 -0
  138. package/test/unit/spec/meetings/index.js +32 -1
  139. package/test/unit/spec/members/index.js +25 -2
  140. package/test/unit/spec/members/request.js +37 -3
  141. package/test/unit/spec/members/utils.js +15 -1
  142. package/test/unit/spec/multistream/remoteMedia.ts +16 -2
  143. package/test/unit/spec/reachability/index.ts +265 -1
  144. package/test/unit/spec/reachability/request.js +56 -15
  145. package/test/unit/spec/roap/index.ts +1 -1
  146. package/test/unit/spec/roap/request.ts +51 -109
  147. package/test/unit/spec/roap/turnDiscovery.ts +202 -147
  148. package/test/unit/spec/webinar/index.ts +82 -16
  149. package/dist/annotation/annotation.types.d.ts +0 -42
  150. package/dist/annotation/constants.d.ts +0 -31
  151. package/dist/annotation/index.d.ts +0 -117
  152. package/dist/breakouts/breakout.d.ts +0 -8
  153. package/dist/breakouts/collection.d.ts +0 -5
  154. package/dist/breakouts/edit-lock-error.d.ts +0 -15
  155. package/dist/breakouts/events.d.ts +0 -8
  156. package/dist/breakouts/index.d.ts +0 -5
  157. package/dist/breakouts/request.d.ts +0 -22
  158. package/dist/breakouts/utils.d.ts +0 -15
  159. package/dist/common/browser-detection.d.ts +0 -9
  160. package/dist/common/collection.d.ts +0 -48
  161. package/dist/common/config.d.ts +0 -2
  162. package/dist/common/errors/captcha-error.d.ts +0 -15
  163. package/dist/common/errors/intent-to-join.d.ts +0 -16
  164. package/dist/common/errors/join-meeting.d.ts +0 -17
  165. package/dist/common/errors/media.d.ts +0 -15
  166. package/dist/common/errors/no-meeting-info.d.ts +0 -14
  167. package/dist/common/errors/password-error.d.ts +0 -15
  168. package/dist/common/errors/permission.d.ts +0 -14
  169. package/dist/common/errors/reclaim-host-role-error.js +0 -149
  170. package/dist/common/errors/reclaim-host-role-error.js.map +0 -1
  171. package/dist/common/errors/reclaim-host-role-errors.d.ts +0 -60
  172. package/dist/common/errors/reconnection-in-progress.d.ts +0 -9
  173. package/dist/common/errors/reconnection-in-progress.js +0 -33
  174. package/dist/common/errors/reconnection-in-progress.js.map +0 -1
  175. package/dist/common/errors/reconnection.d.ts +0 -15
  176. package/dist/common/errors/stats.d.ts +0 -15
  177. package/dist/common/errors/webex-errors.d.ts +0 -93
  178. package/dist/common/errors/webex-meetings-error.d.ts +0 -20
  179. package/dist/common/events/events-scope.d.ts +0 -17
  180. package/dist/common/events/events.d.ts +0 -12
  181. package/dist/common/events/trigger-proxy.d.ts +0 -2
  182. package/dist/common/events/util.d.ts +0 -2
  183. package/dist/common/logs/logger-config.d.ts +0 -2
  184. package/dist/common/logs/logger-proxy.d.ts +0 -2
  185. package/dist/common/logs/request.d.ts +0 -36
  186. package/dist/common/queue.d.ts +0 -34
  187. package/dist/config.d.ts +0 -72
  188. package/dist/constants.d.ts +0 -1088
  189. package/dist/controls-options-manager/constants.d.ts +0 -4
  190. package/dist/controls-options-manager/enums.d.ts +0 -15
  191. package/dist/controls-options-manager/index.d.ts +0 -136
  192. package/dist/controls-options-manager/types.d.ts +0 -43
  193. package/dist/controls-options-manager/util.d.ts +0 -1
  194. package/dist/index.d.ts +0 -7
  195. package/dist/interceptors/index.d.ts +0 -2
  196. package/dist/interceptors/locusRetry.d.ts +0 -27
  197. package/dist/interpretation/collection.d.ts +0 -5
  198. package/dist/interpretation/index.d.ts +0 -5
  199. package/dist/interpretation/siLanguage.d.ts +0 -5
  200. package/dist/locus-info/controlsUtils.d.ts +0 -2
  201. package/dist/locus-info/embeddedAppsUtils.d.ts +0 -2
  202. package/dist/locus-info/fullState.d.ts +0 -2
  203. package/dist/locus-info/hostUtils.d.ts +0 -2
  204. package/dist/locus-info/index.d.ts +0 -322
  205. package/dist/locus-info/infoUtils.d.ts +0 -2
  206. package/dist/locus-info/mediaSharesUtils.d.ts +0 -2
  207. package/dist/locus-info/parser.d.ts +0 -272
  208. package/dist/locus-info/selfUtils.d.ts +0 -2
  209. package/dist/media/index.d.ts +0 -34
  210. package/dist/media/properties.d.ts +0 -93
  211. package/dist/media/util.d.ts +0 -2
  212. package/dist/mediaQualityMetrics/config.d.ts +0 -241
  213. package/dist/mediaQualityMetrics/config.js +0 -502
  214. package/dist/mediaQualityMetrics/config.js.map +0 -1
  215. package/dist/meeting/effectsState.js +0 -260
  216. package/dist/meeting/effectsState.js.map +0 -1
  217. package/dist/meeting/in-meeting-actions.d.ts +0 -167
  218. package/dist/meeting/index.d.ts +0 -1825
  219. package/dist/meeting/locusMediaRequest.d.ts +0 -74
  220. package/dist/meeting/muteState.d.ts +0 -178
  221. package/dist/meeting/request.d.ts +0 -295
  222. package/dist/meeting/request.type.d.ts +0 -11
  223. package/dist/meeting/state.d.ts +0 -9
  224. package/dist/meeting/util.d.ts +0 -119
  225. package/dist/meeting/voicea-meeting.d.ts +0 -16
  226. package/dist/meeting-info/collection.d.ts +0 -20
  227. package/dist/meeting-info/index.d.ts +0 -69
  228. package/dist/meeting-info/meeting-info-v2.d.ts +0 -123
  229. package/dist/meeting-info/request.d.ts +0 -22
  230. package/dist/meeting-info/util.d.ts +0 -2
  231. package/dist/meeting-info/utilv2.d.ts +0 -2
  232. package/dist/meetings/collection.d.ts +0 -40
  233. package/dist/meetings/index.d.ts +0 -390
  234. package/dist/meetings/meetings.types.d.ts +0 -4
  235. package/dist/meetings/request.d.ts +0 -27
  236. package/dist/meetings/util.d.ts +0 -18
  237. package/dist/member/index.d.ts +0 -160
  238. package/dist/member/member.types.js +0 -17
  239. package/dist/member/member.types.js.map +0 -1
  240. package/dist/member/types.d.ts +0 -32
  241. package/dist/member/util.d.ts +0 -2
  242. package/dist/members/collection.d.ts +0 -29
  243. package/dist/members/index.d.ts +0 -353
  244. package/dist/members/request.d.ts +0 -114
  245. package/dist/members/types.d.ts +0 -25
  246. package/dist/members/util.d.ts +0 -215
  247. package/dist/metrics/config.js +0 -276
  248. package/dist/metrics/config.js.map +0 -1
  249. package/dist/metrics/constants.d.ts +0 -70
  250. package/dist/metrics/index.d.ts +0 -45
  251. package/dist/multistream/mediaRequestManager.d.ts +0 -119
  252. package/dist/multistream/receiveSlot.d.ts +0 -68
  253. package/dist/multistream/receiveSlotManager.d.ts +0 -56
  254. package/dist/multistream/remoteMedia.d.ts +0 -72
  255. package/dist/multistream/remoteMediaGroup.d.ts +0 -49
  256. package/dist/multistream/remoteMediaManager.d.ts +0 -300
  257. package/dist/multistream/sendSlotManager.d.ts +0 -69
  258. package/dist/networkQualityMonitor/index.d.ts +0 -70
  259. package/dist/networkQualityMonitor/index.js +0 -221
  260. package/dist/networkQualityMonitor/index.js.map +0 -1
  261. package/dist/peer-connection-manager/index.js +0 -671
  262. package/dist/peer-connection-manager/index.js.map +0 -1
  263. package/dist/peer-connection-manager/util.js +0 -109
  264. package/dist/peer-connection-manager/util.js.map +0 -1
  265. package/dist/personal-meeting-room/index.d.ts +0 -47
  266. package/dist/personal-meeting-room/request.d.ts +0 -14
  267. package/dist/personal-meeting-room/util.d.ts +0 -2
  268. package/dist/reachability/clusterReachability.d.ts +0 -109
  269. package/dist/reachability/index.d.ts +0 -105
  270. package/dist/reachability/request.d.ts +0 -39
  271. package/dist/reachability/util.d.ts +0 -8
  272. package/dist/reactions/constants.d.ts +0 -3
  273. package/dist/reactions/reactions.d.ts +0 -4
  274. package/dist/reactions/reactions.type.d.ts +0 -52
  275. package/dist/reconnection-manager/index.d.ts +0 -136
  276. package/dist/recording-controller/enums.d.ts +0 -7
  277. package/dist/recording-controller/index.d.ts +0 -207
  278. package/dist/recording-controller/util.d.ts +0 -14
  279. package/dist/roap/collection.js +0 -62
  280. package/dist/roap/collection.js.map +0 -1
  281. package/dist/roap/handler.js +0 -275
  282. package/dist/roap/handler.js.map +0 -1
  283. package/dist/roap/index.d.ts +0 -86
  284. package/dist/roap/request.d.ts +0 -39
  285. package/dist/roap/state.js +0 -126
  286. package/dist/roap/state.js.map +0 -1
  287. package/dist/roap/turnDiscovery.d.ts +0 -155
  288. package/dist/roap/util.js +0 -75
  289. package/dist/roap/util.js.map +0 -1
  290. package/dist/rtcMetrics/constants.d.ts +0 -4
  291. package/dist/rtcMetrics/constants.js.map +0 -1
  292. package/dist/rtcMetrics/index.d.ts +0 -61
  293. package/dist/rtcMetrics/index.js +0 -197
  294. package/dist/rtcMetrics/index.js.map +0 -1
  295. package/dist/statsAnalyzer/global.d.ts +0 -36
  296. package/dist/statsAnalyzer/global.js +0 -126
  297. package/dist/statsAnalyzer/global.js.map +0 -1
  298. package/dist/statsAnalyzer/index.d.ts +0 -217
  299. package/dist/statsAnalyzer/index.js +0 -1013
  300. package/dist/statsAnalyzer/index.js.map +0 -1
  301. package/dist/statsAnalyzer/mqaUtil.d.ts +0 -48
  302. package/dist/statsAnalyzer/mqaUtil.js +0 -179
  303. package/dist/statsAnalyzer/mqaUtil.js.map +0 -1
  304. package/dist/transcription/index.d.ts +0 -64
  305. package/dist/types/common/errors/reconnection-in-progress.d.ts +0 -9
  306. package/dist/types/mediaQualityMetrics/config.d.ts +0 -241
  307. package/dist/types/networkQualityMonitor/index.d.ts +0 -70
  308. package/dist/types/rtcMetrics/constants.d.ts +0 -4
  309. package/dist/types/rtcMetrics/index.d.ts +0 -71
  310. package/dist/types/statsAnalyzer/global.d.ts +0 -36
  311. package/dist/types/statsAnalyzer/index.d.ts +0 -217
  312. package/dist/types/statsAnalyzer/mqaUtil.d.ts +0 -48
  313. package/dist/webinar/collection.d.ts +0 -16
  314. 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,
@@ -5118,34 +5227,30 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5118
5227
  _context15.prev = 9;
5119
5228
  forceTurnDiscovery = false;
5120
5229
  if (joinResponse) {
5121
- _context15.next = 36;
5230
+ _context15.next = 33;
5122
5231
  break;
5123
5232
  }
5124
5233
  _context15.next = 14;
5125
- return this.webex.meetings.reachability.getReachabilityResults();
5126
- case 14:
5127
- joinOptions.reachability = _context15.sent;
5128
- _context15.next = 17;
5129
5234
  return this.roap.generateTurnDiscoveryRequestMessage(this, true);
5130
- case 17:
5235
+ case 14:
5131
5236
  turnDiscoveryRequest = _context15.sent;
5132
5237
  turnDiscoverySkippedReason = turnDiscoveryRequest.turnDiscoverySkippedReason;
5133
5238
  joinOptions.roapMessage = turnDiscoveryRequest.roapMessage;
5134
5239
  _loggerProxy.default.logger.info('Meeting:index#joinWithMedia ---> calling join with joinOptions, ', joinOptions);
5135
- _context15.next = 23;
5240
+ _context15.next = 20;
5136
5241
  return this.join(joinOptions);
5137
- case 23:
5242
+ case 20:
5138
5243
  joinResponse = _context15.sent;
5139
5244
  joined = true;
5140
5245
 
5141
5246
  // if we sent out TURN discovery Roap message with join, process the TURN discovery response
5142
5247
  if (!joinOptions.roapMessage) {
5143
- _context15.next = 34;
5248
+ _context15.next = 31;
5144
5249
  break;
5145
5250
  }
5146
- _context15.next = 28;
5251
+ _context15.next = 25;
5147
5252
  return this.roap.handleTurnDiscoveryHttpResponse(this, joinResponse);
5148
- case 28:
5253
+ case 25:
5149
5254
  _yield$this$roap$hand = _context15.sent;
5150
5255
  turnServerInfo = _yield$this$roap$hand.turnServerInfo;
5151
5256
  turnDiscoverySkippedReason = _yield$this$roap$hand.turnDiscoverySkippedReason;
@@ -5154,20 +5259,20 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5154
5259
  if (turnServerInfo === undefined) {
5155
5260
  this.roap.abortTurnDiscovery();
5156
5261
  }
5157
- case 34:
5158
- _context15.next = 38;
5262
+ case 31:
5263
+ _context15.next = 35;
5159
5264
  break;
5160
- case 36:
5265
+ case 33:
5161
5266
  // This is a retry, when join succeeded but addMedia failed, so we'll just call addMedia() again,
5162
5267
  // but we need to ensure that it also does a new TURN discovery
5163
5268
  forceTurnDiscovery = true;
5164
5269
  joined = true;
5165
- case 38:
5166
- _context15.next = 40;
5270
+ case 35:
5271
+ _context15.next = 37;
5167
5272
  return this.addMediaInternal(function () {
5168
- return _this28.joinWithMediaRetryInfo.isRetry ? 'JOIN_MEETING_FINAL' : 'JOIN_MEETING_RETRY';
5273
+ return _this29.joinWithMediaRetryInfo.isRetry ? 'JOIN_MEETING_FINAL' : 'JOIN_MEETING_RETRY';
5169
5274
  }, turnServerInfo, forceTurnDiscovery, mediaOptions);
5170
- case 40:
5275
+ case 37:
5171
5276
  mediaResponse = _context15.sent;
5172
5277
  this.joinWithMediaRetryInfo = {
5173
5278
  isRetry: false,
@@ -5177,30 +5282,30 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5177
5282
  join: joinResponse,
5178
5283
  media: mediaResponse
5179
5284
  });
5180
- case 45:
5181
- _context15.prev = 45;
5285
+ case 42:
5286
+ _context15.prev = 42;
5182
5287
  _context15.t0 = _context15["catch"](9);
5183
5288
  _loggerProxy.default.logger.error('Meeting:index#joinWithMedia --> ', _context15.t0);
5184
5289
  this.roap.abortTurnDiscovery();
5185
5290
  if (!(joined && isRetry)) {
5186
- _context15.next = 59;
5291
+ _context15.next = 56;
5187
5292
  break;
5188
5293
  }
5189
- _context15.prev = 50;
5190
- _context15.next = 53;
5294
+ _context15.prev = 47;
5295
+ _context15.next = 50;
5191
5296
  return this.leave({
5192
5297
  resourceId: joinOptions === null || joinOptions === void 0 ? void 0 : joinOptions.resourceId,
5193
5298
  reason: 'joinWithMedia failure'
5194
5299
  });
5195
- case 53:
5196
- _context15.next = 59;
5300
+ case 50:
5301
+ _context15.next = 56;
5197
5302
  break;
5198
- case 55:
5199
- _context15.prev = 55;
5200
- _context15.t1 = _context15["catch"](50);
5303
+ case 52:
5304
+ _context15.prev = 52;
5305
+ _context15.t1 = _context15["catch"](47);
5201
5306
  _loggerProxy.default.logger.error('Meeting:index#joinWithMedia --> leave error', _context15.t1);
5202
5307
  leaveError = _context15.t1;
5203
- case 59:
5308
+ case 56:
5204
5309
  _metrics.default.sendBehavioralMetric(_constants2.default.JOIN_WITH_MEDIA_FAILURE, {
5205
5310
  correlation_id: this.correlationId,
5206
5311
  locus_id: (_this$locusUrl = this.locusUrl) === null || _this$locusUrl === void 0 ? void 0 : _this$locusUrl.split('/').pop(),
@@ -5221,24 +5326,24 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5221
5326
  shouldRetry = false;
5222
5327
  }
5223
5328
  if (!shouldRetry) {
5224
- _context15.next = 67;
5329
+ _context15.next = 64;
5225
5330
  break;
5226
5331
  }
5227
5332
  _loggerProxy.default.logger.warn('Meeting:index#joinWithMedia --> retrying call to joinWithMedia');
5228
5333
  this.joinWithMediaRetryInfo.isRetry = true;
5229
5334
  this.joinWithMediaRetryInfo.prevJoinResponse = joinResponse;
5230
5335
  return _context15.abrupt("return", this.joinWithMedia(options));
5231
- case 67:
5336
+ case 64:
5232
5337
  this.joinWithMediaRetryInfo = {
5233
5338
  isRetry: false,
5234
5339
  prevJoinResponse: undefined
5235
5340
  };
5236
5341
  throw _context15.t0;
5237
- case 69:
5342
+ case 66:
5238
5343
  case "end":
5239
5344
  return _context15.stop();
5240
5345
  }
5241
- }, _callee15, this, [[9, 45], [50, 55]]);
5346
+ }, _callee15, this, [[9, 42], [47, 52]]);
5242
5347
  }));
5243
5348
  function joinWithMedia() {
5244
5349
  return _joinWithMedia.apply(this, arguments);
@@ -5257,7 +5362,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5257
5362
  }, {
5258
5363
  key: "reconnect",
5259
5364
  value: function reconnect(options) {
5260
- var _this29 = this;
5365
+ var _this30 = this;
5261
5366
  _loggerProxy.default.logger.log("Meeting:index#reconnect --> attempting to reconnect meeting ".concat(this.id));
5262
5367
  if (!this.reconnectionManager || !this.reconnectionManager.reconnect) {
5263
5368
  return _promise.default.reject(new _parameter.default('Cannot reconnect, ReconnectionManager must first be defined.'));
@@ -5267,15 +5372,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5267
5372
  if (!_util2.default.isMediaEstablished(this.currentMediaStatus)) {
5268
5373
  return _promise.default.reject(new _parameter.default('Cannot reconnect, Media has not established to reconnect'));
5269
5374
  }
5375
+ this.cleanUpBeforeReconnection();
5270
5376
  return this.reconnectionManager.reconnect(options, /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee16() {
5271
5377
  return _regenerator.default.wrap(function _callee16$(_context16) {
5272
5378
  while (1) switch (_context16.prev = _context16.next) {
5273
5379
  case 0:
5274
5380
  _context16.next = 2;
5275
- return _this29.waitForRemoteSDPAnswer();
5381
+ return _this30.waitForRemoteSDPAnswer();
5276
5382
  case 2:
5277
5383
  _context16.next = 4;
5278
- return _this29.waitForMediaConnectionConnected();
5384
+ return _this30.waitForMediaConnectionConnected();
5279
5385
  case 4:
5280
5386
  case "end":
5281
5387
  return _context16.stop();
@@ -5289,7 +5395,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5289
5395
  return _promise.default.resolve();
5290
5396
  }
5291
5397
  _loggerProxy.default.logger.error('Meeting:index#reconnect --> Meeting reconnect failed', error);
5292
- _this29.uploadLogs({
5398
+ _this30.uploadLogs({
5293
5399
  file: 'meeting/index',
5294
5400
  function: 'reconnect'
5295
5401
  });
@@ -5336,19 +5442,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5336
5442
  }, {
5337
5443
  key: "setCaptionLanguage",
5338
5444
  value: function setCaptionLanguage(language) {
5339
- var _this30 = this;
5445
+ var _this31 = this;
5340
5446
  return new _promise.default(function (resolve, reject) {
5341
- if (!_this30.isTranscriptionSupported()) {
5447
+ if (!_this31.isTranscriptionSupported()) {
5342
5448
  _loggerProxy.default.logger.error('Meeting:index#setCaptionLanguage --> Webex Assistant is not enabled/supported');
5343
5449
  reject(new Error('Webex Assistant is not enabled/supported'));
5344
5450
  }
5345
5451
  try {
5346
5452
  var voiceaListenerCaptionUpdate = function voiceaListenerCaptionUpdate(payload) {
5347
5453
  // @ts-ignore
5348
- _this30.webex.internal.voicea.off(_internalPluginVoicea.EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, voiceaListenerCaptionUpdate);
5454
+ _this31.webex.internal.voicea.off(_internalPluginVoicea.EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, voiceaListenerCaptionUpdate);
5349
5455
  var statusCode = payload.statusCode;
5350
5456
  if (statusCode === 200) {
5351
- _this30.transcription.languageOptions = _objectSpread(_objectSpread({}, _this30.transcription.languageOptions), {}, {
5457
+ _this31.transcription.languageOptions = _objectSpread(_objectSpread({}, _this31.transcription.languageOptions), {}, {
5352
5458
  currentCaptionLanguage: language
5353
5459
  });
5354
5460
  resolve(language);
@@ -5357,9 +5463,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5357
5463
  }
5358
5464
  };
5359
5465
  // @ts-ignore
5360
- _this30.webex.internal.voicea.on(_internalPluginVoicea.EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, voiceaListenerCaptionUpdate);
5466
+ _this31.webex.internal.voicea.on(_internalPluginVoicea.EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, voiceaListenerCaptionUpdate);
5361
5467
  // @ts-ignore
5362
- _this30.webex.internal.voicea.requestLanguage(language);
5468
+ _this31.webex.internal.voicea.requestLanguage(language);
5363
5469
  } catch (error) {
5364
5470
  _loggerProxy.default.logger.error("Meeting:index#setCaptionLanguage --> ".concat(error));
5365
5471
  reject(error);
@@ -5375,23 +5481,23 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5375
5481
  }, {
5376
5482
  key: "setSpokenLanguage",
5377
5483
  value: function setSpokenLanguage(language) {
5378
- var _this31 = this;
5484
+ var _this32 = this;
5379
5485
  return new _promise.default(function (resolve, reject) {
5380
- if (!_this31.isTranscriptionSupported()) {
5486
+ if (!_this32.isTranscriptionSupported()) {
5381
5487
  _loggerProxy.default.logger.error('Meeting:index#setCaptionLanguage --> Webex Assistant is not enabled/supported');
5382
5488
  reject(new Error('Webex Assistant is not enabled/supported'));
5383
5489
  }
5384
- if (_this31.getCurUserType() !== 'host') {
5490
+ if (_this32.getCurUserType() !== 'host') {
5385
5491
  _loggerProxy.default.logger.error('Meeting:index#setSpokenLanguage --> Only host can set spoken language');
5386
5492
  reject(new Error('Only host can set spoken language'));
5387
5493
  }
5388
5494
  try {
5389
5495
  var voiceaListenerLanguageUpdate = function voiceaListenerLanguageUpdate(payload) {
5390
5496
  // @ts-ignore
5391
- _this31.webex.internal.voicea.off(_internalPluginVoicea.EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE, voiceaListenerLanguageUpdate);
5497
+ _this32.webex.internal.voicea.off(_internalPluginVoicea.EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE, voiceaListenerLanguageUpdate);
5392
5498
  var languageCode = payload.languageCode;
5393
5499
  if (languageCode) {
5394
- _this31.transcription.languageOptions = _objectSpread(_objectSpread({}, _this31.transcription.languageOptions), {}, {
5500
+ _this32.transcription.languageOptions = _objectSpread(_objectSpread({}, _this32.transcription.languageOptions), {}, {
5395
5501
  currentSpokenLanguage: languageCode
5396
5502
  });
5397
5503
  resolve(languageCode);
@@ -5401,10 +5507,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5401
5507
  };
5402
5508
 
5403
5509
  // @ts-ignore
5404
- _this31.webex.internal.voicea.on(_internalPluginVoicea.EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE, voiceaListenerLanguageUpdate);
5510
+ _this32.webex.internal.voicea.on(_internalPluginVoicea.EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE, voiceaListenerLanguageUpdate);
5405
5511
 
5406
5512
  // @ts-ignore
5407
- _this31.webex.internal.voicea.setSpokenLanguage(language);
5513
+ _this32.webex.internal.voicea.setSpokenLanguage(language);
5408
5514
  } catch (error) {
5409
5515
  _loggerProxy.default.logger.error("Meeting:index#setSpokenLanguage --> ".concat(error));
5410
5516
  reject(error);
@@ -5524,7 +5630,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5524
5630
  */
5525
5631
  function () {
5526
5632
  var _join = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee18() {
5527
- var _this32 = this;
5633
+ var _this33 = this;
5528
5634
  var options,
5529
5635
  errorMessage,
5530
5636
  error,
@@ -5670,62 +5776,62 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5670
5776
  return _context18.abrupt("return", _promise.default.reject(_context18.t0));
5671
5777
  case 51:
5672
5778
  return _context18.abrupt("return", _util2.default.joinMeetingOptions(this, options).then(function (join) {
5673
- _this32.meetingFiniteStateMachine.join();
5674
- _this32.setupLocusMediaRequest();
5779
+ _this33.meetingFiniteStateMachine.join();
5780
+ _this33.setupLocusMediaRequest();
5675
5781
 
5676
5782
  // @ts-ignore
5677
- _this32.webex.internal.device.meetingStarted();
5678
- (0, _classPrivateFieldSet2.default)(_this32, _isoLocalClientMeetingJoinTime, new Date().toISOString());
5783
+ _this33.webex.internal.device.meetingStarted();
5784
+ (0, _classPrivateFieldSet2.default)(_this33, _isoLocalClientMeetingJoinTime, new Date().toISOString());
5679
5785
  _loggerProxy.default.logger.log('Meeting:index#join --> Success');
5680
5786
  _metrics.default.sendBehavioralMetric(_constants2.default.JOIN_SUCCESS, {
5681
- correlation_id: _this32.correlationId
5787
+ correlation_id: _this33.correlationId
5682
5788
  });
5683
5789
  joinSuccess(join);
5684
- _this32.deferJoin = undefined;
5790
+ _this33.deferJoin = undefined;
5685
5791
  return join;
5686
5792
  }).catch(function (error) {
5687
- var _this32$meetingInfo, _error$error;
5688
- _this32.meetingFiniteStateMachine.fail(error);
5793
+ var _this33$meetingInfo, _error$error;
5794
+ _this33.meetingFiniteStateMachine.fail(error);
5689
5795
  _loggerProxy.default.logger.error('Meeting:index#join --> Failed', error);
5690
5796
 
5691
5797
  // @ts-ignore
5692
- _this32.webex.internal.newMetrics.submitClientEvent({
5798
+ _this33.webex.internal.newMetrics.submitClientEvent({
5693
5799
  name: 'client.locus.join.response',
5694
5800
  payload: {
5695
5801
  identifiers: {
5696
- meetingLookupUrl: (_this32$meetingInfo = _this32.meetingInfo) === null || _this32$meetingInfo === void 0 ? void 0 : _this32$meetingInfo.meetingLookupUrl
5802
+ meetingLookupUrl: (_this33$meetingInfo = _this33.meetingInfo) === null || _this33$meetingInfo === void 0 ? void 0 : _this33$meetingInfo.meetingLookupUrl
5697
5803
  }
5698
5804
  },
5699
5805
  options: {
5700
- meetingId: _this32.id,
5806
+ meetingId: _this33.id,
5701
5807
  rawError: error
5702
5808
  }
5703
5809
  });
5704
5810
 
5705
5811
  // TODO: change this to error codes and pre defined dictionary
5706
5812
  _metrics.default.sendBehavioralMetric(_constants2.default.JOIN_FAILURE, {
5707
- correlation_id: _this32.correlationId,
5813
+ correlation_id: _this33.correlationId,
5708
5814
  reason: (_error$error = error.error) === null || _error$error === void 0 ? void 0 : _error$error.message,
5709
5815
  stack: error.stack
5710
5816
  });
5711
5817
 
5712
5818
  // Upload logs on join Failure
5713
- _triggerProxy.default.trigger(_this32, {
5819
+ _triggerProxy.default.trigger(_this33, {
5714
5820
  file: 'meeting/index',
5715
5821
  function: 'join'
5716
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this32);
5822
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this33);
5717
5823
  joinFailed(error);
5718
- _this32.deferJoin = undefined;
5824
+ _this33.deferJoin = undefined;
5719
5825
  return _promise.default.reject(error);
5720
5826
  }).then(function (join) {
5721
5827
  // @ts-ignore - config coming from registerPlugin
5722
- if (_this32.config.enableAutomaticLLM) {
5828
+ if (_this33.config.enableAutomaticLLM) {
5723
5829
  // @ts-ignore
5724
- _this32.webex.internal.llm.on('online', _this32.handleLLMOnline);
5725
- _this32.updateLLMConnection().catch(function (error) {
5830
+ _this33.webex.internal.llm.on('online', _this33.handleLLMOnline);
5831
+ _this33.updateLLMConnection().catch(function (error) {
5726
5832
  _loggerProxy.default.logger.error('Meeting:index#join --> Transcription Socket Connection Failed', error);
5727
5833
  _metrics.default.sendBehavioralMetric(_constants2.default.LLM_CONNECTION_AFTER_JOIN_FAILURE, {
5728
- correlation_id: _this32.correlationId,
5834
+ correlation_id: _this33.correlationId,
5729
5835
  reason: error === null || error === void 0 ? void 0 : error.message,
5730
5836
  stack: error.stack
5731
5837
  });
@@ -5757,7 +5863,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5757
5863
  key: "updateLLMConnection",
5758
5864
  value: (function () {
5759
5865
  var _updateLLMConnection = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee19() {
5760
- var _this33 = this;
5866
+ var _this34 = this;
5761
5867
  var _this$locusInfo6, url, _this$locusInfo6$info, _this$locusInfo6$info2, datachannelUrl, isJoined;
5762
5868
  return _regenerator.default.wrap(function _callee19$(_context19) {
5763
5869
  while (1) switch (_context19.prev = _context19.next) {
@@ -5793,9 +5899,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5793
5899
  case 10:
5794
5900
  return _context19.abrupt("return", this.webex.internal.llm.registerAndConnect(url, datachannelUrl).then(function (registerAndConnectResult) {
5795
5901
  // @ts-ignore - Fix type
5796
- _this33.webex.internal.llm.off('event:relay.event', _this33.processRelayEvent);
5902
+ _this34.webex.internal.llm.off('event:relay.event', _this34.processRelayEvent);
5797
5903
  // @ts-ignore - Fix type
5798
- _this33.webex.internal.llm.on('event:relay.event', _this33.processRelayEvent);
5904
+ _this34.webex.internal.llm.on('event:relay.event', _this34.processRelayEvent);
5799
5905
  _loggerProxy.default.logger.info('Meeting:index#updateLLMConnection --> enabled to receive relay events!');
5800
5906
  return _promise.default.resolve(registerAndConnectResult);
5801
5907
  }));
@@ -5849,7 +5955,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5849
5955
  }, {
5850
5956
  key: "dialInPstn",
5851
5957
  value: function dialInPstn() {
5852
- var _this34 = this;
5958
+ var _this35 = this;
5853
5959
  if (this.isPhoneProvisioned(this.dialInDeviceStatus)) return _promise.default.resolve(); // prevent multiple dial in devices from being provisioned
5854
5960
 
5855
5961
  var correlationId = this.correlationId,
@@ -5865,10 +5971,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5865
5971
  }).catch(function (error) {
5866
5972
  var _error$error2;
5867
5973
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_DIAL_IN_FAILURE, {
5868
- correlation_id: _this34.correlationId,
5869
- dial_in_url: _this34.dialInUrl,
5974
+ correlation_id: _this35.correlationId,
5975
+ dial_in_url: _this35.dialInUrl,
5870
5976
  locus_id: locusUrl.split('/').pop(),
5871
- client_url: _this34.deviceUrl,
5977
+ client_url: _this35.deviceUrl,
5872
5978
  reason: (_error$error2 = error.error) === null || _error$error2 === void 0 ? void 0 : _error$error2.message,
5873
5979
  stack: error.stack
5874
5980
  });
@@ -5886,7 +5992,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5886
5992
  }, {
5887
5993
  key: "dialOutPstn",
5888
5994
  value: function dialOutPstn(phoneNumber) {
5889
- var _this35 = this;
5995
+ var _this36 = this;
5890
5996
  if (this.isPhoneProvisioned(this.dialOutDeviceStatus)) return _promise.default.resolve(); // prevent multiple dial out devices from being provisioned
5891
5997
 
5892
5998
  var correlationId = this.correlationId,
@@ -5903,10 +6009,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5903
6009
  }).catch(function (error) {
5904
6010
  var _error$error3;
5905
6011
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_DIAL_OUT_FAILURE, {
5906
- correlation_id: _this35.correlationId,
5907
- dial_out_url: _this35.dialOutUrl,
6012
+ correlation_id: _this36.correlationId,
6013
+ dial_out_url: _this36.dialOutUrl,
5908
6014
  locus_id: locusUrl.split('/').pop(),
5909
- client_url: _this35.deviceUrl,
6015
+ client_url: _this36.deviceUrl,
5910
6016
  reason: (_error$error3 = error.error) === null || _error$error3 === void 0 ? void 0 : _error$error3.message,
5911
6017
  stack: error.stack
5912
6018
  });
@@ -5937,7 +6043,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5937
6043
  }, {
5938
6044
  key: "moveTo",
5939
6045
  value: function moveTo(resourceId) {
5940
- var _this36 = this;
6046
+ var _this37 = this;
5941
6047
  if (!resourceId) {
5942
6048
  throw new _parameter.default('Cannot move call without a resourceId.');
5943
6049
  }
@@ -5981,12 +6087,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5981
6087
  while (1) switch (_context20.prev = _context20.next) {
5982
6088
  case 0:
5983
6089
  _context20.prev = 0;
5984
- if (!(_this36.screenShareFloorState === ScreenShareFloorStatus.GRANTED)) {
6090
+ if (!(_this37.screenShareFloorState === ScreenShareFloorStatus.GRANTED)) {
5985
6091
  _context20.next = 4;
5986
6092
  break;
5987
6093
  }
5988
6094
  _context20.next = 4;
5989
- return _this36.releaseScreenShareFloor();
6095
+ return _this37.releaseScreenShareFloor();
5990
6096
  case 4:
5991
6097
  mediaSettings = {
5992
6098
  mediaDirection: {
@@ -5998,37 +6104,37 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5998
6104
  receiveShare: true
5999
6105
  }
6000
6106
  };
6001
- _this36.mediaProperties.setMediaDirection(mediaSettings.mediaDirection);
6002
- _this36.mediaProperties.unsetRemoteMedia();
6107
+ _this37.mediaProperties.setMediaDirection(mediaSettings.mediaDirection);
6108
+ _this37.mediaProperties.unsetRemoteMedia();
6003
6109
 
6004
6110
  // 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
6111
  // once the device answers we close the old connection and create new media server connection with only share enabled
6006
- if (!_this36.statsAnalyzer) {
6112
+ if (!_this37.statsAnalyzer) {
6007
6113
  _context20.next = 10;
6008
6114
  break;
6009
6115
  }
6010
6116
  _context20.next = 10;
6011
- return _this36.statsAnalyzer.stopAnalyzer();
6117
+ return _this37.statsAnalyzer.stopAnalyzer();
6012
6118
  case 10:
6013
6119
  _context20.next = 12;
6014
- return _this36.closeRemoteStreams();
6120
+ return _this37.closeRemoteStreams();
6015
6121
  case 12:
6016
6122
  _context20.next = 14;
6017
- return _this36.closePeerConnections();
6123
+ return _this37.closePeerConnections();
6018
6124
  case 14:
6019
- _this36.cleanupLocalStreams();
6020
- _this36.unsetRemoteStreams();
6021
- _this36.unsetPeerConnections();
6022
- _this36.reconnectionManager.cleanUp();
6125
+ _this37.cleanupLocalStreams();
6126
+ _this37.unsetRemoteStreams();
6127
+ _this37.unsetPeerConnections();
6128
+ _this37.reconnectionManager.cleanUp();
6023
6129
  _context20.next = 20;
6024
- return _this36.addMedia({
6130
+ return _this37.addMedia({
6025
6131
  audioEnabled: false,
6026
6132
  videoEnabled: false,
6027
6133
  shareVideoEnabled: true
6028
6134
  });
6029
6135
  case 20:
6030
6136
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_TO_SUCCESS);
6031
- _this36.isMoveToInProgress = false;
6137
+ _this37.isMoveToInProgress = false;
6032
6138
  _context20.next = 29;
6033
6139
  break;
6034
6140
  case 24:
@@ -6036,12 +6142,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6036
6142
  _context20.t0 = _context20["catch"](0);
6037
6143
  _loggerProxy.default.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId', _context20.t0);
6038
6144
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_TO_FAILURE, {
6039
- correlation_id: _this36.correlationId,
6040
- locus_id: _this36.locusUrl.split('/').pop(),
6145
+ correlation_id: _this37.correlationId,
6146
+ locus_id: _this37.locusUrl.split('/').pop(),
6041
6147
  reason: _context20.t0.message,
6042
6148
  stack: _context20.t0.stack
6043
6149
  });
6044
- _this36.isMoveToInProgress = false;
6150
+ _this37.isMoveToInProgress = false;
6045
6151
  case 29:
6046
6152
  case "end":
6047
6153
  return _context20.stop();
@@ -6057,17 +6163,17 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6057
6163
  resourceId: resourceId,
6058
6164
  moveToResource: true
6059
6165
  }).then(function () {
6060
- _this36.meetingFiniteStateMachine.join();
6166
+ _this37.meetingFiniteStateMachine.join();
6061
6167
  }).catch(function (error) {
6062
- _this36.meetingFiniteStateMachine.fail(error);
6168
+ _this37.meetingFiniteStateMachine.fail(error);
6063
6169
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_TO_FAILURE, {
6064
- correlation_id: _this36.correlationId,
6065
- locus_id: _this36.locusUrl.split('/').pop(),
6170
+ correlation_id: _this37.correlationId,
6171
+ locus_id: _this37.locusUrl.split('/').pop(),
6066
6172
  reason: error.message,
6067
6173
  stack: error.stack
6068
6174
  });
6069
6175
  _loggerProxy.default.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId', error);
6070
- _this36.isMoveToInProgress = false;
6176
+ _this37.isMoveToInProgress = false;
6071
6177
  return _promise.default.reject(error);
6072
6178
  });
6073
6179
  }
@@ -6082,7 +6188,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6082
6188
  }, {
6083
6189
  key: "moveFrom",
6084
6190
  value: function moveFrom(resourceId) {
6085
- var _this37 = this;
6191
+ var _this38 = this;
6086
6192
  // On moveFrom ask the developer to re capture it moveFrom then updateMedia
6087
6193
  if (!resourceId) {
6088
6194
  throw new _parameter.default('Cannot move call without a resourceId.');
@@ -6097,19 +6203,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6097
6203
  }
6098
6204
  });
6099
6205
  return _util2.default.joinMeetingOptions(this).then(function () {
6100
- return _util2.default.leaveMeeting(_this37, {
6206
+ return _util2.default.leaveMeeting(_this38, {
6101
6207
  resourceId: resourceId,
6102
6208
  correlationId: oldCorrelationId,
6103
6209
  moveMeeting: true
6104
6210
  }).then(function () {
6105
- _this37.resourceId = '';
6211
+ _this38.resourceId = '';
6106
6212
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_FROM_SUCCESS);
6107
6213
  });
6108
6214
  }).catch(function (error) {
6109
- _this37.meetingFiniteStateMachine.fail(error);
6215
+ _this38.meetingFiniteStateMachine.fail(error);
6110
6216
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_FROM_FAILURE, {
6111
- correlation_id: _this37.correlationId,
6112
- locus_id: _this37.locusUrl.split('/').pop(),
6217
+ correlation_id: _this38.correlationId,
6218
+ locus_id: _this38.locusUrl.split('/').pop(),
6113
6219
  reason: error.message,
6114
6220
  stack: error.stack
6115
6221
  });
@@ -6222,9 +6328,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6222
6328
  }, {
6223
6329
  key: "forwardEvent",
6224
6330
  value: function forwardEvent(eventEmitter, eventTypeToForward, meetingEventType) {
6225
- var _this38 = this;
6331
+ var _this39 = this;
6226
6332
  eventEmitter.on(eventTypeToForward, function (data) {
6227
- return _triggerProxy.default.trigger(_this38, {
6333
+ return _triggerProxy.default.trigger(_this39, {
6228
6334
  file: 'meetings',
6229
6335
  function: 'addMedia'
6230
6336
  }, meetingEventType, data);
@@ -6411,7 +6517,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6411
6517
  */
6412
6518
  function () {
6413
6519
  var _waitForRemoteSDPAnswer = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee24() {
6414
- var _this39 = this;
6520
+ var _this40 = this;
6415
6521
  var LOG_HEADER, deferSDPAnswer;
6416
6522
  return _regenerator.default.wrap(function _callee24$(_context24) {
6417
6523
  while (1) switch (_context24.prev = _context24.next) {
@@ -6428,18 +6534,18 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6428
6534
  this.sdpResponseTimer = setTimeout(function () {
6429
6535
  _loggerProxy.default.logger.warn("".concat(LOG_HEADER, " timeout! no REMOTE SDP ANSWER received within ").concat(_constants.ROAP_OFFER_ANSWER_EXCHANGE_TIMEOUT / 1000, " seconds"));
6430
6536
  // @ts-ignore
6431
- _this39.webex.internal.newMetrics.submitClientEvent({
6537
+ _this40.webex.internal.newMetrics.submitClientEvent({
6432
6538
  name: 'client.media-engine.remote-sdp-received',
6433
6539
  payload: {
6434
6540
  canProceed: false,
6435
6541
  errors: [
6436
6542
  // @ts-ignore
6437
- _this39.webex.internal.newMetrics.callDiagnosticMetrics.getErrorPayloadForClientErrorCode({
6543
+ _this40.webex.internal.newMetrics.callDiagnosticMetrics.getErrorPayloadForClientErrorCode({
6438
6544
  clientErrorCode: _internalPluginMetrics.CALL_DIAGNOSTIC_CONFIG.MISSING_ROAP_ANSWER_CLIENT_CODE
6439
6545
  })]
6440
6546
  },
6441
6547
  options: {
6442
- meetingId: _this39.id,
6548
+ meetingId: _this40.id,
6443
6549
  rawError: new Error('Timeout waiting for SDP answer')
6444
6550
  }
6445
6551
  });
@@ -6825,6 +6931,43 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6825
6931
  return _cleanUpBeforeRetryWithTurnServer.apply(this, arguments);
6826
6932
  }
6827
6933
  return cleanUpBeforeRetryWithTurnServer;
6934
+ }())
6935
+ }, {
6936
+ key: "cleanUpBeforeReconnection",
6937
+ value: function () {
6938
+ var _cleanUpBeforeReconnection = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee32() {
6939
+ return _regenerator.default.wrap(function _callee32$(_context32) {
6940
+ while (1) switch (_context32.prev = _context32.next) {
6941
+ case 0:
6942
+ _context32.prev = 0;
6943
+ _context32.next = 3;
6944
+ return this.forceSendStatsReport({
6945
+ callFrom: 'cleanUpBeforeReconnection'
6946
+ });
6947
+ case 3:
6948
+ if (!this.statsAnalyzer) {
6949
+ _context32.next = 6;
6950
+ break;
6951
+ }
6952
+ _context32.next = 6;
6953
+ return this.statsAnalyzer.stopAnalyzer();
6954
+ case 6:
6955
+ _context32.next = 11;
6956
+ break;
6957
+ case 8:
6958
+ _context32.prev = 8;
6959
+ _context32.t0 = _context32["catch"](0);
6960
+ _loggerProxy.default.logger.error('Meeting:index#cleanUpBeforeReconnection --> Error during cleanup: ', _context32.t0);
6961
+ case 11:
6962
+ case "end":
6963
+ return _context32.stop();
6964
+ }
6965
+ }, _callee32, this, [[0, 8]]);
6966
+ }));
6967
+ function cleanUpBeforeReconnection() {
6968
+ return _cleanUpBeforeReconnection.apply(this, arguments);
6969
+ }
6970
+ return cleanUpBeforeReconnection;
6828
6971
  }()
6829
6972
  /**
6830
6973
  * Creates an instance of LocusMediaRequest for this meeting - it is needed for doing any calls
@@ -6832,7 +6975,6 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6832
6975
  *
6833
6976
  * @returns {void}
6834
6977
  */
6835
- )
6836
6978
  }, {
6837
6979
  key: "setupLocusMediaRequest",
6838
6980
  value: function setupLocusMediaRequest() {
@@ -6867,10 +7009,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6867
7009
  }, {
6868
7010
  key: "addMedia",
6869
7011
  value: function addMedia() {
6870
- var _this40 = this;
7012
+ var _this41 = this;
6871
7013
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
6872
7014
  return this.addMediaInternal(function () {
6873
- return _this40.turnServerUsed ? 'JOIN_MEETING_FINAL' : 'JOIN_MEETING_RETRY';
7015
+ return _this41.turnServerUsed ? 'JOIN_MEETING_FINAL' : 'JOIN_MEETING_RETRY';
6874
7016
  }, undefined, false, options);
6875
7017
  }
6876
7018
 
@@ -6888,7 +7030,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6888
7030
  }, {
6889
7031
  key: "addMediaInternal",
6890
7032
  value: (function () {
6891
- var _addMediaInternal = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee32(icePhaseCallback, turnServerInfo, forceTurnDiscovery) {
7033
+ var _addMediaInternal = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee33(icePhaseCallback, turnServerInfo, forceTurnDiscovery) {
6892
7034
  var options,
6893
7035
  LOG_HEADER,
6894
7036
  localStreams,
@@ -6901,6 +7043,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6901
7043
  _options$shareVideoEn,
6902
7044
  shareVideoEnabled,
6903
7045
  remoteMediaManagerConfig,
7046
+ _options$bundlePolicy,
6904
7047
  bundlePolicy,
6905
7048
  _this$remoteMediaMana,
6906
7049
  _yield$this$mediaProp,
@@ -6935,35 +7078,35 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6935
7078
  _selectedCandidatePairChanges,
6936
7079
  _numTransports,
6937
7080
  _iceCandidateErrors,
6938
- _args32 = arguments;
6939
- return _regenerator.default.wrap(function _callee32$(_context32) {
6940
- while (1) switch (_context32.prev = _context32.next) {
7081
+ _args33 = arguments;
7082
+ return _regenerator.default.wrap(function _callee33$(_context33) {
7083
+ while (1) switch (_context33.prev = _context33.next) {
6941
7084
  case 0:
6942
- options = _args32.length > 3 && _args32[3] !== undefined ? _args32[3] : {};
7085
+ options = _args33.length > 3 && _args33[3] !== undefined ? _args33[3] : {};
6943
7086
  this.addMediaData.retriedWithTurnServer = false;
6944
7087
  this.addMediaData.icePhaseCallback = icePhaseCallback;
6945
7088
  this.hasMediaConnectionConnectedAtLeastOnce = false;
6946
7089
  LOG_HEADER = 'Meeting:index#addMedia -->';
6947
7090
  _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
7091
  if (!(options.allowMediaInLobby !== true && this.meetingState !== _constants.FULL_STATE.ACTIVE)) {
6949
- _context32.next = 8;
7092
+ _context33.next = 8;
6950
7093
  break;
6951
7094
  }
6952
7095
  throw new _webexErrors.MeetingNotActiveError();
6953
7096
  case 8:
6954
7097
  if (!_util2.default.isUserInLeftState(this.locusInfo)) {
6955
- _context32.next = 10;
7098
+ _context33.next = 10;
6956
7099
  break;
6957
7100
  }
6958
7101
  throw new _webexErrors.UserNotJoinedError();
6959
7102
  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;
7103
+ 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
7104
  this.allowMediaInLobby = options === null || options === void 0 ? void 0 : options.allowMediaInLobby;
6962
7105
 
6963
7106
  // If the user is unjoined or guest waiting in lobby dont allow the user to addMedia
6964
7107
  // @ts-ignore - isUserUnadmitted coming from SelfUtil
6965
7108
  if (!(this.isUserUnadmitted && !this.wirelessShare && !this.allowMediaInLobby)) {
6966
- _context32.next = 14;
7109
+ _context33.next = 14;
6967
7110
  break;
6968
7111
  }
6969
7112
  throw new _webexErrors.UserInLobbyError();
@@ -7006,45 +7149,45 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7006
7149
  });
7007
7150
  this.audio = (0, _muteState.createMuteState)(_constants.AUDIO, this, audioEnabled);
7008
7151
  this.video = (0, _muteState.createMuteState)(_constants.VIDEO, this, videoEnabled);
7009
- _context32.prev = 18;
7010
- _context32.next = 21;
7152
+ _context33.prev = 18;
7153
+ _context33.next = 21;
7011
7154
  return this.setUpLocalStreamReferences(localStreams);
7012
7155
  case 21:
7013
7156
  this.setMercuryListener();
7014
7157
  this.createStatsAnalyzer();
7015
- _context32.next = 25;
7158
+ _context33.next = 25;
7016
7159
  return this.establishMediaConnection(remoteMediaManagerConfig, bundlePolicy, forceTurnDiscovery, turnServerInfo);
7017
7160
  case 25:
7018
7161
  if (!(audioEnabled || videoEnabled)) {
7019
- _context32.next = 30;
7162
+ _context33.next = 30;
7020
7163
  break;
7021
7164
  }
7022
- _context32.next = 28;
7165
+ _context33.next = 28;
7023
7166
  return Meeting.handleDeviceLogging(audioEnabled, videoEnabled);
7024
7167
  case 28:
7025
- _context32.next = 31;
7168
+ _context33.next = 31;
7026
7169
  break;
7027
7170
  case 30:
7028
7171
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " device logging not required"));
7029
7172
  case 31:
7030
7173
  if (!this.mediaProperties.hasLocalShareStream()) {
7031
- _context32.next = 34;
7174
+ _context33.next = 34;
7032
7175
  break;
7033
7176
  }
7034
- _context32.next = 34;
7177
+ _context33.next = 34;
7035
7178
  return this.enqueueScreenShareFloorRequest();
7036
7179
  case 34:
7037
- _context32.next = 36;
7180
+ _context33.next = 36;
7038
7181
  return this.mediaProperties.getCurrentConnectionInfo();
7039
7182
  case 36:
7040
- _yield$this$mediaProp = _context32.sent;
7183
+ _yield$this$mediaProp = _context33.sent;
7041
7184
  connectionType = _yield$this$mediaProp.connectionType;
7042
7185
  selectedCandidatePairChanges = _yield$this$mediaProp.selectedCandidatePairChanges;
7043
7186
  numTransports = _yield$this$mediaProp.numTransports;
7044
- _context32.next = 42;
7187
+ _context33.next = 42;
7045
7188
  return this.webex.meetings.reachability.getReachabilityMetrics();
7046
7189
  case 42:
7047
- reachabilityStats = _context32.sent;
7190
+ reachabilityStats = _context33.sent;
7048
7191
  iceCandidateErrors = Object.fromEntries(this.iceCandidateErrors);
7049
7192
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_MEDIA_SUCCESS, _objectSpread(_objectSpread(_objectSpread({
7050
7193
  correlation_id: this.correlationId,
@@ -7069,31 +7212,31 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7069
7212
 
7070
7213
  // We can log ReceiveSlot SSRCs only after the SDP exchange, so doing it here:
7071
7214
  (_this$remoteMediaMana = this.remoteMediaManager) === null || _this$remoteMediaMana === void 0 ? void 0 : _this$remoteMediaMana.logAllReceiveSlots();
7072
- _context32.next = 68;
7215
+ _context33.next = 68;
7073
7216
  break;
7074
7217
  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);
7218
+ _context33.prev = 50;
7219
+ _context33.t0 = _context33["catch"](18);
7220
+ _loggerProxy.default.logger.error("".concat(LOG_HEADER, " failed to establish media connection: "), _context33.t0);
7078
7221
 
7079
7222
  // @ts-ignore
7080
- _context32.next = 55;
7223
+ _context33.next = 55;
7081
7224
  return this.webex.meetings.reachability.getReachabilityMetrics();
7082
7225
  case 55:
7083
- reachabilityMetrics = _context32.sent;
7084
- _context32.next = 58;
7226
+ reachabilityMetrics = _context33.sent;
7227
+ _context33.next = 58;
7085
7228
  return this.mediaProperties.getCurrentConnectionInfo();
7086
7229
  case 58:
7087
- _yield$this$mediaProp2 = _context32.sent;
7230
+ _yield$this$mediaProp2 = _context33.sent;
7088
7231
  _selectedCandidatePairChanges = _yield$this$mediaProp2.selectedCandidatePairChanges;
7089
7232
  _numTransports = _yield$this$mediaProp2.numTransports;
7090
7233
  _iceCandidateErrors = Object.fromEntries(this.iceCandidateErrors);
7091
7234
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_MEDIA_FAILURE, _objectSpread(_objectSpread(_objectSpread({
7092
7235
  correlation_id: this.correlationId,
7093
7236
  locus_id: this.locusUrl.split('/').pop(),
7094
- reason: _context32.t0.message,
7095
- stack: _context32.t0.stack,
7096
- code: _context32.t0.code,
7237
+ reason: _context33.t0.message,
7238
+ stack: _context33.t0.stack,
7239
+ code: _context33.t0.code,
7097
7240
  selectedCandidatePairChanges: _selectedCandidatePairChanges,
7098
7241
  numTransports: _numTransports,
7099
7242
  turnDiscoverySkippedReason: this.turnDiscoverySkippedReason,
@@ -7107,7 +7250,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7107
7250
  }, reachabilityMetrics), _iceCandidateErrors), {}, {
7108
7251
  iceCandidatesCount: this.iceCandidatesCount
7109
7252
  }));
7110
- _context32.next = 65;
7253
+ _context33.next = 65;
7111
7254
  return this.cleanUpOnAddMediaFailure();
7112
7255
  case 65:
7113
7256
  // Upload logs on error while adding media
@@ -7115,21 +7258,21 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7115
7258
  file: 'meeting/index',
7116
7259
  function: 'addMedia'
7117
7260
  }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, this);
7118
- if (_context32.t0 instanceof _internalMediaCore.Errors.SdpError) {
7261
+ if (_context33.t0 instanceof _internalMediaCore.Errors.SdpError) {
7119
7262
  this.leave({
7120
7263
  reason: _constants.MEETING_REMOVED_REASON.MEETING_CONNECTION_FAILED
7121
7264
  });
7122
7265
  }
7123
- throw _context32.t0;
7266
+ throw _context33.t0;
7124
7267
  case 68:
7125
- _context32.prev = 68;
7268
+ _context33.prev = 68;
7126
7269
  this.addMediaData.icePhaseCallback = DEFAULT_ICE_PHASE_CALLBACK;
7127
- return _context32.finish(68);
7270
+ return _context33.finish(68);
7128
7271
  case 71:
7129
7272
  case "end":
7130
- return _context32.stop();
7273
+ return _context33.stop();
7131
7274
  }
7132
- }, _callee32, this, [[18, 50, 68, 71]]);
7275
+ }, _callee33, this, [[18, 50, 68, 71]]);
7133
7276
  }));
7134
7277
  function addMediaInternal(_x32, _x33, _x34) {
7135
7278
  return _addMediaInternal.apply(this, arguments);
@@ -7161,7 +7304,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7161
7304
  * @memberof Meeting
7162
7305
  */
7163
7306
  function enqueueMediaUpdate(mediaUpdateType) {
7164
- var _this41 = this;
7307
+ var _this42 = this;
7165
7308
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
7166
7309
  var canUpdateMediaNow = this.canUpdateMedia();
7167
7310
  return new _promise.default(function (resolve, reject) {
@@ -7172,9 +7315,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7172
7315
  options: options
7173
7316
  };
7174
7317
  _loggerProxy.default.logger.log("Meeting:index#enqueueMediaUpdate --> enqueuing media update type=".concat(mediaUpdateType));
7175
- _this41.queuedMediaUpdates.push(queueItem);
7318
+ _this42.queuedMediaUpdates.push(queueItem);
7176
7319
  if (canUpdateMediaNow) {
7177
- _this41.processNextQueuedMediaUpdate();
7320
+ _this42.processNextQueuedMediaUpdate();
7178
7321
  }
7179
7322
  });
7180
7323
  }
@@ -7197,35 +7340,35 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7197
7340
  * @memberof Meeting
7198
7341
  */
7199
7342
  function () {
7200
- var _updateMedia = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee33(options) {
7343
+ var _updateMedia = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee34(options) {
7201
7344
  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) {
7345
+ return _regenerator.default.wrap(function _callee34$(_context34) {
7346
+ while (1) switch (_context34.prev = _context34.next) {
7204
7347
  case 0:
7205
7348
  this.checkMediaConnection();
7206
7349
  audioEnabled = options.audioEnabled, videoEnabled = options.videoEnabled, shareAudioEnabled = options.shareAudioEnabled, shareVideoEnabled = options.shareVideoEnabled;
7207
7350
  _loggerProxy.default.logger.log("Meeting:index#updateMedia --> called with options=".concat((0, _stringify.default)(options)));
7208
7351
  if (this.canUpdateMedia()) {
7209
- _context33.next = 5;
7352
+ _context34.next = 5;
7210
7353
  break;
7211
7354
  }
7212
- return _context33.abrupt("return", this.enqueueMediaUpdate(MEDIA_UPDATE_TYPE.UPDATE_MEDIA, options));
7355
+ return _context34.abrupt("return", this.enqueueMediaUpdate(MEDIA_UPDATE_TYPE.UPDATE_MEDIA, options));
7213
7356
  case 5:
7214
7357
  if (!this.isMultistream) {
7215
- _context33.next = 10;
7358
+ _context34.next = 10;
7216
7359
  break;
7217
7360
  }
7218
7361
  if (!(shareAudioEnabled !== undefined || shareVideoEnabled !== undefined)) {
7219
- _context33.next = 8;
7362
+ _context34.next = 8;
7220
7363
  break;
7221
7364
  }
7222
7365
  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
7366
  case 8:
7224
- _context33.next = 12;
7367
+ _context34.next = 12;
7225
7368
  break;
7226
7369
  case 10:
7227
7370
  if (!(shareAudioEnabled !== undefined)) {
7228
- _context33.next = 12;
7371
+ _context34.next = 12;
7229
7372
  break;
7230
7373
  }
7231
7374
  throw new Error('toggling shareAudioEnabled in a transcoded meeting is not supported as of now');
@@ -7250,18 +7393,18 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7250
7393
  this.mediaProperties.mediaDirection.receiveShare = !!(shareAudioEnabled || shareVideoEnabled);
7251
7394
  }
7252
7395
  if (this.isMultistream) {
7253
- _context33.next = 18;
7396
+ _context34.next = 18;
7254
7397
  break;
7255
7398
  }
7256
- _context33.next = 18;
7399
+ _context34.next = 18;
7257
7400
  return this.updateTranscodedMediaConnection();
7258
7401
  case 18:
7259
- return _context33.abrupt("return", undefined);
7402
+ return _context34.abrupt("return", undefined);
7260
7403
  case 19:
7261
7404
  case "end":
7262
- return _context33.stop();
7405
+ return _context34.stop();
7263
7406
  }
7264
- }, _callee33, this);
7407
+ }, _callee34, this);
7265
7408
  }));
7266
7409
  function updateMedia(_x35) {
7267
7410
  return _updateMedia.apply(this, arguments);
@@ -7279,7 +7422,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7279
7422
  }, {
7280
7423
  key: "acknowledge",
7281
7424
  value: function acknowledge(type) {
7282
- var _this42 = this;
7425
+ var _this43 = this;
7283
7426
  if (!type) {
7284
7427
  return _promise.default.reject(new _parameter.default('Type must be set to acknowledge the meeting.'));
7285
7428
  }
@@ -7291,12 +7434,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7291
7434
  }).then(function (response) {
7292
7435
  return _promise.default.resolve(response);
7293
7436
  }).then(function (response) {
7294
- _this42.meetingFiniteStateMachine.ring(type);
7437
+ _this43.meetingFiniteStateMachine.ring(type);
7295
7438
  // @ts-ignore
7296
- _this42.webex.internal.newMetrics.submitClientEvent({
7439
+ _this43.webex.internal.newMetrics.submitClientEvent({
7297
7440
  name: 'client.alert.displayed',
7298
7441
  options: {
7299
- meetingId: _this42.id
7442
+ meetingId: _this43.id
7300
7443
  }
7301
7444
  });
7302
7445
  return _promise.default.resolve({
@@ -7321,12 +7464,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7321
7464
  }, {
7322
7465
  key: "decline",
7323
7466
  value: function decline(reason) {
7324
- var _this43 = this;
7467
+ var _this44 = this;
7325
7468
  return _util2.default.declineMeeting(this, reason).then(function (decline) {
7326
- _this43.meetingFiniteStateMachine.decline();
7469
+ _this44.meetingFiniteStateMachine.decline();
7327
7470
  return _promise.default.resolve(decline);
7328
7471
  }).catch(function (error) {
7329
- _this43.meetingFiniteStateMachine.fail(error);
7472
+ _this44.meetingFiniteStateMachine.fail(error);
7330
7473
  return _promise.default.reject(error);
7331
7474
  });
7332
7475
  }
@@ -7377,7 +7520,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7377
7520
  }, {
7378
7521
  key: "leave",
7379
7522
  value: function leave() {
7380
- var _this44 = this;
7523
+ var _this45 = this;
7381
7524
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
7382
7525
  var leaveReason = options.reason || _constants.MEETING_REMOVED_REASON.CLIENT_LEAVE_REQUEST;
7383
7526
 
@@ -7389,7 +7532,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7389
7532
  var payload = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
7390
7533
  return (
7391
7534
  // @ts-ignore
7392
- _this44.webex.internal.newMetrics.submitClientEvent({
7535
+ _this45.webex.internal.newMetrics.submitClientEvent({
7393
7536
  name: 'client.call.leave',
7394
7537
  payload: _objectSpread({
7395
7538
  trigger: 'user-interaction',
@@ -7397,7 +7540,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7397
7540
  leaveReason: options.clientEventLeaveReason
7398
7541
  }, payload),
7399
7542
  options: {
7400
- meetingId: _this44.id
7543
+ meetingId: _this45.id
7401
7544
  }
7402
7545
  })
7403
7546
  );
@@ -7406,24 +7549,24 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7406
7549
  return _util2.default.leaveMeeting(this, options).then(function (leave) {
7407
7550
  // CA team recommends submitting this *after* locus /leave
7408
7551
  submitLeaveMetric();
7409
- _this44.meetingFiniteStateMachine.leave();
7410
- _this44.clearMeetingData();
7552
+ _this45.meetingFiniteStateMachine.leave();
7553
+ _this45.clearMeetingData();
7411
7554
 
7412
7555
  // upload logs on leave irrespective of meeting delete
7413
- _triggerProxy.default.trigger(_this44, {
7556
+ _triggerProxy.default.trigger(_this45, {
7414
7557
  file: 'meeting/index',
7415
7558
  function: 'leave'
7416
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this44);
7559
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this45);
7417
7560
 
7418
7561
  // TODO: more testing before we remove this code, we are not sure the scenarios for destroy here
7419
- if (_this44.wirelessShare || _this44.guest) {
7562
+ if (_this45.wirelessShare || _this45.guest) {
7420
7563
  // If screen sharing clean the meeting object
7421
- _triggerProxy.default.trigger(_this44, {
7564
+ _triggerProxy.default.trigger(_this45, {
7422
7565
  file: 'meeting/index',
7423
7566
  function: 'leave'
7424
7567
  }, _constants.EVENTS.DESTROY_MEETING, {
7425
7568
  reason: options.reason,
7426
- meetingId: _this44.id
7569
+ meetingId: _this45.id
7427
7570
  });
7428
7571
  }
7429
7572
  _loggerProxy.default.logger.log('Meeting:index#leave --> LEAVE REASON ', leaveReason);
@@ -7440,16 +7583,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7440
7583
  shownToUser: false
7441
7584
  }]
7442
7585
  });
7443
- _this44.meetingFiniteStateMachine.fail(error);
7586
+ _this45.meetingFiniteStateMachine.fail(error);
7444
7587
  _loggerProxy.default.logger.error('Meeting:index#leave --> Failed to leave ', error);
7445
7588
  // upload logs on leave irrespective of meeting delete
7446
- _triggerProxy.default.trigger(_this44, {
7589
+ _triggerProxy.default.trigger(_this45, {
7447
7590
  file: 'meeting/index',
7448
7591
  function: 'leave'
7449
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this44);
7592
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this45);
7450
7593
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_LEAVE_FAILURE, {
7451
- correlation_id: _this44.correlationId,
7452
- locus_id: _this44.locusUrl.split('/').pop(),
7594
+ correlation_id: _this45.correlationId,
7595
+ locus_id: _this45.locusUrl.split('/').pop(),
7453
7596
  reason: error.message,
7454
7597
  stack: error.stack,
7455
7598
  code: error.code
@@ -7469,7 +7612,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7469
7612
  }, {
7470
7613
  key: "startWhiteboardShare",
7471
7614
  value: function startWhiteboardShare(channelUrl, resourceToken) {
7472
- var _this45 = this;
7615
+ var _this46 = this;
7473
7616
  var whiteboard = this.locusInfo.mediaShares.find(function (element) {
7474
7617
  return element.name === 'whiteboard';
7475
7618
  });
@@ -7498,13 +7641,13 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7498
7641
  body.resourceToken = resourceToken;
7499
7642
  }
7500
7643
  return this.meetingRequest.changeMeetingFloor(body).then(function () {
7501
- _this45.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
7644
+ _this46.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
7502
7645
  return _promise.default.resolve();
7503
7646
  }).catch(function (error) {
7504
7647
  _loggerProxy.default.logger.error('Meeting:index#startWhiteboardShare --> Error ', error);
7505
7648
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_START_WHITEBOARD_SHARE_FAILURE, {
7506
- correlation_id: _this45.correlationId,
7507
- locus_id: _this45.locusUrl.split('/').pop(),
7649
+ correlation_id: _this46.correlationId,
7650
+ locus_id: _this46.locusUrl.split('/').pop(),
7508
7651
  reason: error.message,
7509
7652
  stack: error.stack,
7510
7653
  board: {
@@ -7527,7 +7670,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7527
7670
  }, {
7528
7671
  key: "stopWhiteboardShare",
7529
7672
  value: function stopWhiteboardShare(channelUrl) {
7530
- var _this46 = this;
7673
+ var _this47 = this;
7531
7674
  var whiteboard = this.locusInfo.mediaShares.find(function (element) {
7532
7675
  return element.name === 'whiteboard';
7533
7676
  });
@@ -7550,8 +7693,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7550
7693
  }).catch(function (error) {
7551
7694
  _loggerProxy.default.logger.error('Meeting:index#stopWhiteboardShare --> Error ', error);
7552
7695
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_STOP_WHITEBOARD_SHARE_FAILURE, {
7553
- correlation_id: _this46.correlationId,
7554
- locus_id: _this46.locusUrl.split('/').pop(),
7696
+ correlation_id: _this47.correlationId,
7697
+ locus_id: _this47.locusUrl.split('/').pop(),
7555
7698
  reason: error.message,
7556
7699
  stack: error.stack,
7557
7700
  board: {
@@ -7573,7 +7716,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7573
7716
  }, {
7574
7717
  key: "requestScreenShareFloor",
7575
7718
  value: function requestScreenShareFloor() {
7576
- var _this47 = this;
7719
+ var _this48 = this;
7577
7720
  if (!this.mediaProperties.hasLocalShareStream() || !this.mediaProperties.mediaDirection.sendShare) {
7578
7721
  _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
7722
  this.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
@@ -7604,34 +7747,34 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7604
7747
  resourceUrl: this.resourceUrl,
7605
7748
  shareInstanceId: this.localShareInstanceId
7606
7749
  }).then(function () {
7607
- _this47.screenShareFloorState = ScreenShareFloorStatus.GRANTED;
7750
+ _this48.screenShareFloorState = ScreenShareFloorStatus.GRANTED;
7608
7751
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_SHARE_SUCCESS, {
7609
- correlation_id: _this47.correlationId,
7610
- locus_id: _this47.locusUrl.split('/').pop()
7752
+ correlation_id: _this48.correlationId,
7753
+ locus_id: _this48.locusUrl.split('/').pop()
7611
7754
  });
7612
7755
  return _promise.default.resolve();
7613
7756
  }).catch(function (error) {
7614
7757
  _loggerProxy.default.logger.error('Meeting:index#share --> Error ', error);
7615
7758
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_SHARE_FAILURE, {
7616
- correlation_id: _this47.correlationId,
7617
- locus_id: _this47.locusUrl.split('/').pop(),
7759
+ correlation_id: _this48.correlationId,
7760
+ locus_id: _this48.locusUrl.split('/').pop(),
7618
7761
  reason: error.message,
7619
7762
  stack: error.stack
7620
7763
  });
7621
7764
 
7622
7765
  // @ts-ignore
7623
- _this47.webex.internal.newMetrics.submitClientEvent({
7766
+ _this48.webex.internal.newMetrics.submitClientEvent({
7624
7767
  name: 'client.share.floor-granted.local',
7625
7768
  payload: {
7626
7769
  mediaType: 'share',
7627
7770
  errors: _util2.default.getChangeMeetingFloorErrorPayload(error.message),
7628
- shareInstanceId: _this47.localShareInstanceId
7771
+ shareInstanceId: _this48.localShareInstanceId
7629
7772
  },
7630
7773
  options: {
7631
- meetingId: _this47.id
7774
+ meetingId: _this48.id
7632
7775
  }
7633
7776
  });
7634
- _this47.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
7777
+ _this48.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
7635
7778
  return _promise.default.reject(error);
7636
7779
  });
7637
7780
  }
@@ -7654,10 +7797,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7654
7797
  }, {
7655
7798
  key: "requestScreenShareFloorIfPending",
7656
7799
  value: function requestScreenShareFloorIfPending() {
7657
- var _this48 = this;
7800
+ var _this49 = this;
7658
7801
  if (this.floorGrantPending && this.state === _constants.MEETING_STATE.STATES.JOINED) {
7659
7802
  this.requestScreenShareFloor().then(function () {
7660
- _this48.floorGrantPending = false;
7803
+ _this49.floorGrantPending = false;
7661
7804
  });
7662
7805
  }
7663
7806
  }
@@ -7671,7 +7814,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7671
7814
  }, {
7672
7815
  key: "releaseScreenShareFloor",
7673
7816
  value: function releaseScreenShareFloor() {
7674
- var _this49 = this;
7817
+ var _this50 = this;
7675
7818
  var content = this.locusInfo.mediaShares.find(function (element) {
7676
7819
  return element.name === _constants.CONTENT;
7677
7820
  });
@@ -7706,8 +7849,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7706
7849
  }).catch(function (error) {
7707
7850
  _loggerProxy.default.logger.error('Meeting:index#releaseScreenShareFloor --> Error ', error);
7708
7851
  _metrics.default.sendBehavioralMetric(_constants2.default.STOP_FLOOR_REQUEST_FAILURE, {
7709
- correlation_id: _this49.correlationId,
7710
- locus_id: _this49.locusUrl.split('/').pop(),
7852
+ correlation_id: _this50.correlationId,
7853
+ locus_id: _this50.locusUrl.split('/').pop(),
7711
7854
  reason: error.message,
7712
7855
  stack: error.stack
7713
7856
  });
@@ -7763,13 +7906,14 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7763
7906
  * @param {boolean} mutedEnabled
7764
7907
  * @param {boolean} disallowUnmuteEnabled
7765
7908
  * @param {boolean} muteOnEntryEnabled
7909
+ * @param {array} roles
7766
7910
  * @public
7767
7911
  * @memberof Meeting
7768
7912
  */
7769
7913
  }, {
7770
7914
  key: "setMuteAll",
7771
- value: function setMuteAll(mutedEnabled, disallowUnmuteEnabled, muteOnEntryEnabled) {
7772
- return this.controlsOptionsManager.setMuteAll(mutedEnabled, disallowUnmuteEnabled, muteOnEntryEnabled);
7915
+ value: function setMuteAll(mutedEnabled, disallowUnmuteEnabled, muteOnEntryEnabled, roles) {
7916
+ return this.controlsOptionsManager.setMuteAll(mutedEnabled, disallowUnmuteEnabled, muteOnEntryEnabled, roles);
7773
7917
  }
7774
7918
 
7775
7919
  /**
@@ -7886,7 +8030,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7886
8030
  }, {
7887
8031
  key: "changeVideoLayout",
7888
8032
  value: function changeVideoLayout(layoutType) {
7889
- var _this50 = this;
8033
+ var _this51 = this;
7890
8034
  var renderInfo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
7891
8035
  var main = renderInfo.main,
7892
8036
  content = renderInfo.content;
@@ -7940,7 +8084,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7940
8084
  }
7941
8085
  this.lastVideoLayoutInfo = (0, _lodash.cloneDeep)(layoutInfo);
7942
8086
  this.locusInfo.once(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_LAYOUT_UPDATED, function (envelope) {
7943
- _triggerProxy.default.trigger(_this50, {
8087
+ _triggerProxy.default.trigger(_this51, {
7944
8088
  file: 'meeting/index',
7945
8089
  function: 'changeVideoLayout'
7946
8090
  }, _constants.EVENT_TRIGGERS.MEETING_CONTROLS_LAYOUT_UPDATE, {
@@ -8056,7 +8200,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8056
8200
  }, {
8057
8201
  key: "endMeetingForAll",
8058
8202
  value: function endMeetingForAll() {
8059
- var _this51 = this;
8203
+ var _this52 = this;
8060
8204
  // @ts-ignore
8061
8205
  this.webex.internal.newMetrics.submitClientEvent({
8062
8206
  name: 'client.call.leave',
@@ -8074,25 +8218,25 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8074
8218
  locus_id: this.locusId
8075
8219
  });
8076
8220
  return _util2.default.endMeetingForAll(this).then(function (end) {
8077
- _this51.meetingFiniteStateMachine.end();
8078
- _this51.clearMeetingData();
8221
+ _this52.meetingFiniteStateMachine.end();
8222
+ _this52.clearMeetingData();
8079
8223
  // upload logs on leave irrespective of meeting delete
8080
- _triggerProxy.default.trigger(_this51, {
8224
+ _triggerProxy.default.trigger(_this52, {
8081
8225
  file: 'meeting/index',
8082
8226
  function: 'endMeetingForAll'
8083
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this51);
8227
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this52);
8084
8228
  return end;
8085
8229
  }).catch(function (error) {
8086
- _this51.meetingFiniteStateMachine.fail(error);
8230
+ _this52.meetingFiniteStateMachine.fail(error);
8087
8231
  _loggerProxy.default.logger.error('Meeting:index#endMeetingForAll --> Failed to end meeting ', error);
8088
8232
  // upload logs on leave irrespective of meeting delete
8089
- _triggerProxy.default.trigger(_this51, {
8233
+ _triggerProxy.default.trigger(_this52, {
8090
8234
  file: 'meeting/index',
8091
8235
  function: 'endMeetingForAll'
8092
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this51);
8236
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this52);
8093
8237
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_END_ALL_FAILURE, {
8094
- correlation_id: _this51.correlationId,
8095
- locus_id: _this51.locusUrl.split('/').pop(),
8238
+ correlation_id: _this52.correlationId,
8239
+ locus_id: _this52.locusUrl.split('/').pop(),
8096
8240
  reason: error.message,
8097
8241
  stack: error.stack,
8098
8242
  code: error.code
@@ -8181,37 +8325,37 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8181
8325
  }, {
8182
8326
  key: "enableMusicMode",
8183
8327
  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) {
8328
+ var _enableMusicMode = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee35(shouldEnableMusicMode) {
8329
+ return _regenerator.default.wrap(function _callee35$(_context35) {
8330
+ while (1) switch (_context35.prev = _context35.next) {
8187
8331
  case 0:
8188
8332
  this.checkMediaConnection();
8189
8333
  if (this.isMultistream) {
8190
- _context34.next = 3;
8334
+ _context35.next = 3;
8191
8335
  break;
8192
8336
  }
8193
8337
  throw new Error('enableMusicMode() only supported with multistream');
8194
8338
  case 3:
8195
8339
  if (!shouldEnableMusicMode) {
8196
- _context34.next = 8;
8340
+ _context35.next = 8;
8197
8341
  break;
8198
8342
  }
8199
- _context34.next = 6;
8343
+ _context35.next = 6;
8200
8344
  return this.sendSlotManager.setCodecParameters(_internalMediaCore.MediaType.AudioMain, {
8201
8345
  maxaveragebitrate: '64000',
8202
8346
  maxplaybackrate: '48000'
8203
8347
  });
8204
8348
  case 6:
8205
- _context34.next = 10;
8349
+ _context35.next = 10;
8206
8350
  break;
8207
8351
  case 8:
8208
- _context34.next = 10;
8352
+ _context35.next = 10;
8209
8353
  return this.sendSlotManager.deleteCodecParameters(_internalMediaCore.MediaType.AudioMain, ['maxaveragebitrate', 'maxplaybackrate']);
8210
8354
  case 10:
8211
8355
  case "end":
8212
- return _context34.stop();
8356
+ return _context35.stop();
8213
8357
  }
8214
- }, _callee34, this);
8358
+ }, _callee35, this);
8215
8359
  }));
8216
8360
  function enableMusicMode(_x36) {
8217
8361
  return _enableMusicMode.apply(this, arguments);
@@ -8234,7 +8378,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8234
8378
  _this$mediaProperties41,
8235
8379
  _this$mediaProperties42,
8236
8380
  _this$mediaProperties43,
8237
- _this52 = this;
8381
+ _this53 = this;
8238
8382
  var LOG_HEADER = 'Meeting:index#updateTranscodedMediaConnection -->';
8239
8383
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " starting"));
8240
8384
  if (!this.canUpdateMedia()) {
@@ -8259,8 +8403,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8259
8403
  }).catch(function (error) {
8260
8404
  _loggerProxy.default.logger.error("".concat(LOG_HEADER, " Error: "), error);
8261
8405
  _metrics.default.sendBehavioralMetric(_constants2.default.UPDATE_MEDIA_FAILURE, {
8262
- correlation_id: _this52.correlationId,
8263
- locus_id: _this52.locusUrl.split('/').pop(),
8406
+ correlation_id: _this53.correlationId,
8407
+ locus_id: _this53.locusUrl.split('/').pop(),
8264
8408
  reason: error.message,
8265
8409
  stack: error.stack
8266
8410
  });
@@ -8304,25 +8448,25 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8304
8448
  }, {
8305
8449
  key: "publishStream",
8306
8450
  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) {
8451
+ var _publishStream = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee36(mediaType, stream) {
8452
+ return _regenerator.default.wrap(function _callee36$(_context36) {
8453
+ while (1) switch (_context36.prev = _context36.next) {
8310
8454
  case 0:
8311
8455
  if (stream) {
8312
- _context35.next = 2;
8456
+ _context36.next = 2;
8313
8457
  break;
8314
8458
  }
8315
- return _context35.abrupt("return");
8459
+ return _context36.abrupt("return");
8316
8460
  case 2:
8317
8461
  if (!this.mediaProperties.webrtcMediaConnection) {
8318
- _context35.next = 7;
8462
+ _context36.next = 7;
8319
8463
  break;
8320
8464
  }
8321
8465
  if (!(this.isMultistream && this.mediaProperties.webrtcMediaConnection)) {
8322
- _context35.next = 6;
8466
+ _context36.next = 6;
8323
8467
  break;
8324
8468
  }
8325
- _context35.next = 6;
8469
+ _context36.next = 6;
8326
8470
  return this.sendSlotManager.publishStream(mediaType, stream);
8327
8471
  case 6:
8328
8472
  this.emitPublishStateChangeEvent({
@@ -8333,9 +8477,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8333
8477
  });
8334
8478
  case 7:
8335
8479
  case "end":
8336
- return _context35.stop();
8480
+ return _context36.stop();
8337
8481
  }
8338
- }, _callee35, this);
8482
+ }, _callee36, this);
8339
8483
  }));
8340
8484
  function publishStream(_x37, _x38) {
8341
8485
  return _publishStream.apply(this, arguments);
@@ -8353,21 +8497,21 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8353
8497
  }, {
8354
8498
  key: "unpublishStream",
8355
8499
  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) {
8500
+ var _unpublishStream = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee37(mediaType, stream) {
8501
+ return _regenerator.default.wrap(function _callee37$(_context37) {
8502
+ while (1) switch (_context37.prev = _context37.next) {
8359
8503
  case 0:
8360
8504
  if (stream) {
8361
- _context36.next = 2;
8505
+ _context37.next = 2;
8362
8506
  break;
8363
8507
  }
8364
- return _context36.abrupt("return");
8508
+ return _context37.abrupt("return");
8365
8509
  case 2:
8366
8510
  if (!(this.isMultistream && this.mediaProperties.webrtcMediaConnection)) {
8367
- _context36.next = 5;
8511
+ _context37.next = 5;
8368
8512
  break;
8369
8513
  }
8370
- _context36.next = 5;
8514
+ _context37.next = 5;
8371
8515
  return this.sendSlotManager.unpublishStream(mediaType);
8372
8516
  case 5:
8373
8517
  this.emitPublishStateChangeEvent({
@@ -8378,9 +8522,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8378
8522
  });
8379
8523
  case 6:
8380
8524
  case "end":
8381
- return _context36.stop();
8525
+ return _context37.stop();
8382
8526
  }
8383
- }, _callee36, this);
8527
+ }, _callee37, this);
8384
8528
  }));
8385
8529
  function unpublishStream(_x39, _x40) {
8386
8530
  return _unpublishStream.apply(this, arguments);
@@ -8397,67 +8541,92 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8397
8541
  }, {
8398
8542
  key: "publishStreams",
8399
8543
  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) {
8544
+ var _publishStreams = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee38(streams) {
8545
+ var _streams$screenShare, _streams$screenShare2, _streams$screenShare3, _streams$screenShare4, _streams$screenShare5, _streams$screenShare6;
8546
+ var streamChecks, _i, _streamChecks, _streamChecks$_i, stream, name, floorRequestNeeded, _streams$screenShare7;
8547
+ return _regenerator.default.wrap(function _callee38$(_context38) {
8548
+ while (1) switch (_context38.prev = _context38.next) {
8405
8549
  case 0:
8550
+ _loggerProxy.default.logger.info("Meeting:index#publishStreams --> called with: ".concat((0, _stringify.default)(streams)));
8406
8551
  this.checkMediaConnection();
8407
8552
  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;
8553
+ _context38.next = 4;
8409
8554
  break;
8410
8555
  }
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;
8556
+ return _context38.abrupt("return");
8557
+ case 4:
8558
+ streamChecks = [{
8559
+ stream: streams === null || streams === void 0 ? void 0 : streams.microphone,
8560
+ name: 'microphone'
8561
+ }, {
8562
+ stream: streams === null || streams === void 0 ? void 0 : streams.camera,
8563
+ name: 'camera'
8564
+ }, {
8565
+ stream: streams === null || streams === void 0 ? void 0 : (_streams$screenShare3 = streams.screenShare) === null || _streams$screenShare3 === void 0 ? void 0 : _streams$screenShare3.audio,
8566
+ name: 'screenShare audio'
8567
+ }, {
8568
+ stream: streams === null || streams === void 0 ? void 0 : (_streams$screenShare4 = streams.screenShare) === null || _streams$screenShare4 === void 0 ? void 0 : _streams$screenShare4.video,
8569
+ name: 'screenShare video'
8570
+ }];
8571
+ _i = 0, _streamChecks = streamChecks;
8572
+ case 6:
8573
+ if (!(_i < _streamChecks.length)) {
8574
+ _context38.next = 13;
8415
8575
  break;
8416
8576
  }
8417
- throw new Error("Attempted to publish stream with ended readyState, correlationId=".concat(this.correlationId));
8418
- case 5:
8577
+ _streamChecks$_i = _streamChecks[_i], stream = _streamChecks$_i.stream, name = _streamChecks$_i.name;
8578
+ if (!((stream === null || stream === void 0 ? void 0 : stream.readyState) === 'ended')) {
8579
+ _context38.next = 10;
8580
+ break;
8581
+ }
8582
+ throw new Error("Attempted to publish ".concat(name, " stream with ended readyState, correlationId=").concat(this.correlationId));
8583
+ case 10:
8584
+ _i++;
8585
+ _context38.next = 6;
8586
+ break;
8587
+ case 13:
8419
8588
  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;
8589
+ if (!(this.isMultistream && (_streams$screenShare5 = streams.screenShare) !== null && _streams$screenShare5 !== void 0 && _streams$screenShare5.audio)) {
8590
+ _context38.next = 18;
8422
8591
  break;
8423
8592
  }
8424
- _context37.next = 9;
8593
+ _context38.next = 17;
8425
8594
  return this.setLocalShareAudioStream(streams.screenShare.audio);
8426
- case 9:
8595
+ case 17:
8427
8596
  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;
8597
+ case 18:
8598
+ if (!((_streams$screenShare6 = streams.screenShare) !== null && _streams$screenShare6 !== void 0 && _streams$screenShare6.video)) {
8599
+ _context38.next = 22;
8431
8600
  break;
8432
8601
  }
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:
8602
+ _context38.next = 21;
8603
+ return this.setLocalShareVideoStream((_streams$screenShare7 = streams.screenShare) === null || _streams$screenShare7 === void 0 ? void 0 : _streams$screenShare7.video);
8604
+ case 21:
8436
8605
  floorRequestNeeded = this.screenShareFloorState === ScreenShareFloorStatus.RELEASED;
8437
- case 14:
8606
+ case 22:
8438
8607
  if (!streams.microphone) {
8439
- _context37.next = 17;
8608
+ _context38.next = 25;
8440
8609
  break;
8441
8610
  }
8442
- _context37.next = 17;
8611
+ _context38.next = 25;
8443
8612
  return this.setLocalAudioStream(streams.microphone);
8444
- case 17:
8613
+ case 25:
8445
8614
  if (!streams.camera) {
8446
- _context37.next = 20;
8615
+ _context38.next = 28;
8447
8616
  break;
8448
8617
  }
8449
- _context37.next = 20;
8618
+ _context38.next = 28;
8450
8619
  return this.setLocalVideoStream(streams.camera);
8451
- case 20:
8620
+ case 28:
8452
8621
  if (this.isMultistream) {
8453
- _context37.next = 23;
8622
+ _context38.next = 31;
8454
8623
  break;
8455
8624
  }
8456
- _context37.next = 23;
8625
+ _context38.next = 31;
8457
8626
  return this.updateTranscodedMediaConnection();
8458
- case 23:
8627
+ case 31:
8459
8628
  if (!floorRequestNeeded) {
8460
- _context37.next = 29;
8629
+ _context38.next = 37;
8461
8630
  break;
8462
8631
  }
8463
8632
  this.localShareInstanceId = _uuid.default.v4();
@@ -8481,13 +8650,13 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8481
8650
  // we're sending the http request to Locus to request the screen share floor
8482
8651
  // only after the SDP update, because that's how it's always been done for transcoded meetings
8483
8652
  // and also if sharing from the start, we need confluence to have been created
8484
- _context37.next = 29;
8653
+ _context38.next = 37;
8485
8654
  return this.enqueueScreenShareFloorRequest();
8486
- case 29:
8655
+ case 37:
8487
8656
  case "end":
8488
- return _context37.stop();
8657
+ return _context38.stop();
8489
8658
  }
8490
- }, _callee37, this);
8659
+ }, _callee38, this);
8491
8660
  }));
8492
8661
  function publishStreams(_x41) {
8493
8662
  return _publishStreams.apply(this, arguments);
@@ -8504,11 +8673,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8504
8673
  }, {
8505
8674
  key: "unpublishStreams",
8506
8675
  value: (function () {
8507
- var _unpublishStreams = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee38(streams) {
8676
+ var _unpublishStreams = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee39(streams) {
8508
8677
  var promises, _iterator, _step, stream;
8509
- return _regenerator.default.wrap(function _callee38$(_context38) {
8510
- while (1) switch (_context38.prev = _context38.next) {
8678
+ return _regenerator.default.wrap(function _callee39$(_context39) {
8679
+ while (1) switch (_context39.prev = _context39.next) {
8511
8680
  case 0:
8681
+ _loggerProxy.default.logger.info("Meeting:index#unpublishStreams --> called with: ".concat((0, _stringify.default)(streams)));
8512
8682
  this.checkMediaConnection();
8513
8683
  promises = [];
8514
8684
  _iterator = _createForOfIteratorHelper(streams.filter(function (t) {
@@ -8538,9 +8708,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8538
8708
  if (!this.isMultistream) {
8539
8709
  promises.push(this.updateTranscodedMediaConnection());
8540
8710
  }
8541
- _context38.next = 7;
8711
+ _context39.next = 8;
8542
8712
  return _promise.default.all(promises);
8543
- case 7:
8713
+ case 8:
8544
8714
  // we're allowing for the SDK to support just audio share as well
8545
8715
  // so a share could be active with only video, only audio, or both
8546
8716
  // we're only releasing the floor if both streams have ended
@@ -8557,11 +8727,11 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8557
8727
  // nothing to do here, error is logged already inside releaseScreenShareFloor()
8558
8728
  }
8559
8729
  }
8560
- case 8:
8730
+ case 9:
8561
8731
  case "end":
8562
- return _context38.stop();
8732
+ return _context39.stop();
8563
8733
  }
8564
- }, _callee38, this);
8734
+ }, _callee39, this);
8565
8735
  }));
8566
8736
  function unpublishStreams(_x42) {
8567
8737
  return _unpublishStreams.apply(this, arguments);
@@ -8623,55 +8793,55 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8623
8793
  }], [{
8624
8794
  key: "handleDeviceLogging",
8625
8795
  value: (function () {
8626
- var _handleDeviceLogging = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee39(isAudioEnabled, isVideoEnabled) {
8796
+ var _handleDeviceLogging = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee40(isAudioEnabled, isVideoEnabled) {
8627
8797
  var devices;
8628
- return _regenerator.default.wrap(function _callee39$(_context39) {
8629
- while (1) switch (_context39.prev = _context39.next) {
8798
+ return _regenerator.default.wrap(function _callee40$(_context40) {
8799
+ while (1) switch (_context40.prev = _context40.next) {
8630
8800
  case 0:
8631
- _context39.prev = 0;
8801
+ _context40.prev = 0;
8632
8802
  devices = [];
8633
8803
  if (!(isVideoEnabled && isAudioEnabled)) {
8634
- _context39.next = 8;
8804
+ _context40.next = 8;
8635
8805
  break;
8636
8806
  }
8637
- _context39.next = 5;
8807
+ _context40.next = 5;
8638
8808
  return (0, _mediaHelpers.getDevices)();
8639
8809
  case 5:
8640
- devices = _context39.sent;
8641
- _context39.next = 18;
8810
+ devices = _context40.sent;
8811
+ _context40.next = 18;
8642
8812
  break;
8643
8813
  case 8:
8644
8814
  if (!isVideoEnabled) {
8645
- _context39.next = 14;
8815
+ _context40.next = 14;
8646
8816
  break;
8647
8817
  }
8648
- _context39.next = 11;
8818
+ _context40.next = 11;
8649
8819
  return (0, _mediaHelpers.getDevices)(_media.default.DeviceKind.VIDEO_INPUT);
8650
8820
  case 11:
8651
- devices = _context39.sent;
8652
- _context39.next = 18;
8821
+ devices = _context40.sent;
8822
+ _context40.next = 18;
8653
8823
  break;
8654
8824
  case 14:
8655
8825
  if (!isAudioEnabled) {
8656
- _context39.next = 18;
8826
+ _context40.next = 18;
8657
8827
  break;
8658
8828
  }
8659
- _context39.next = 17;
8829
+ _context40.next = 17;
8660
8830
  return (0, _mediaHelpers.getDevices)(_media.default.DeviceKind.AUDIO_INPUT);
8661
8831
  case 17:
8662
- devices = _context39.sent;
8832
+ devices = _context40.sent;
8663
8833
  case 18:
8664
8834
  _util2.default.handleDeviceLogging(devices);
8665
- _context39.next = 23;
8835
+ _context40.next = 23;
8666
8836
  break;
8667
8837
  case 21:
8668
- _context39.prev = 21;
8669
- _context39.t0 = _context39["catch"](0);
8838
+ _context40.prev = 21;
8839
+ _context40.t0 = _context40["catch"](0);
8670
8840
  case 23:
8671
8841
  case "end":
8672
- return _context39.stop();
8842
+ return _context40.stop();
8673
8843
  }
8674
- }, _callee39, null, [[0, 21]]);
8844
+ }, _callee40, null, [[0, 21]]);
8675
8845
  }));
8676
8846
  function handleDeviceLogging(_x43, _x44) {
8677
8847
  return _handleDeviceLogging.apply(this, arguments);