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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +4 -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 +762 -528
  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 +98 -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 +3 -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 +33 -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 +3 -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 +219 -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 +31 -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 +329 -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 +71 -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
@@ -39,6 +39,7 @@ var _lodash = require("lodash");
39
39
  var _jwtDecode = _interopRequireDefault(require("jwt-decode"));
40
40
  var _webexCore = require("@webex/webex-core");
41
41
  var _common = require("@webex/common");
42
+ var _commonTimers = require("@webex/common-timers");
42
43
  var _internalPluginMetrics = require("@webex/internal-plugin-metrics");
43
44
  var _internalMediaCore = require("@webex/internal-media-core");
44
45
  var _mediaHelpers = require("@webex/media-helpers");
@@ -86,6 +87,7 @@ var _controlsOptionsManager = _interopRequireDefault(require("../controls-option
86
87
  var _permission = _interopRequireDefault(require("../common/errors/permission"));
87
88
  var _locusMediaRequest = require("./locusMediaRequest");
88
89
  var _connectionStateHandler = require("./connectionStateHandler");
90
+ var _webinarRegistrationError = _interopRequireDefault(require("../common/errors/webinar-registration-error"));
89
91
  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
92
  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
93
  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; }
@@ -551,6 +553,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
551
553
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "iceCandidateErrors", void 0);
552
554
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "iceCandidatesCount", void 0);
553
555
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "rtcMetrics", void 0);
556
+ (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "uploadLogsTimer", void 0);
557
+ (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "logUploadIntervalIndex", void 0);
554
558
  /**
555
559
  * Callback called when a relay event is received from meeting LLM Connection
556
560
  * @param {RelayEvent} e Event object coming from LLM Connection
@@ -1003,7 +1007,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
1003
1007
  });
1004
1008
  _this.iceCandidatesCount = 0;
1005
1009
  _this.mediaProperties.webrtcMediaConnection.on(_internalMediaCore.MediaConnectionEventNames.ICE_CANDIDATE, function (event) {
1006
- if (event.candidate) {
1010
+ if (event.candidate && event.candidate.candidate && event.candidate.candidate.length > 0) {
1007
1011
  _this.iceCandidatesCount += 1;
1008
1012
  }
1009
1013
  });
@@ -1218,31 +1222,35 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
1218
1222
  return _regenerator.default.wrap(function _callee2$(_context2) {
1219
1223
  while (1) switch (_context2.prev = _context2.next) {
1220
1224
  case 0:
1225
+ _loggerProxy.default.logger.info("Meeting:index#handleShareAudioStreamEnded --> audio share stream ended");
1226
+ // current share audio stream has ended, but there might be an active
1227
+ // share video stream. we only leave from wireless share if share has
1228
+ // completely ended, which means no share audio or video streams active
1221
1229
  if (!(_this.wirelessShare && !_this.mediaProperties.shareVideoStream)) {
1222
- _context2.next = 4;
1230
+ _context2.next = 5;
1223
1231
  break;
1224
1232
  }
1225
1233
  _this.leave({
1226
1234
  reason: _constants.MEETING_REMOVED_REASON.USER_ENDED_SHARE_STREAMS
1227
1235
  });
1228
- _context2.next = 12;
1236
+ _context2.next = 13;
1229
1237
  break;
1230
- case 4:
1231
- _context2.prev = 4;
1232
- _context2.next = 7;
1238
+ case 5:
1239
+ _context2.prev = 5;
1240
+ _context2.next = 8;
1233
1241
  return _this.unpublishStreams([_this.mediaProperties.shareAudioStream]);
1234
- case 7:
1235
- _context2.next = 12;
1242
+ case 8:
1243
+ _context2.next = 13;
1236
1244
  break;
1237
- case 9:
1238
- _context2.prev = 9;
1239
- _context2.t0 = _context2["catch"](4);
1245
+ case 10:
1246
+ _context2.prev = 10;
1247
+ _context2.t0 = _context2["catch"](5);
1240
1248
  _loggerProxy.default.logger.log('Meeting:index#handleShareAudioStreamEnded --> Error stopping share: ', _context2.t0);
1241
- case 12:
1249
+ case 13:
1242
1250
  case "end":
1243
1251
  return _context2.stop();
1244
1252
  }
1245
- }, _callee2, null, [[4, 9]]);
1253
+ }, _callee2, null, [[5, 10]]);
1246
1254
  })));
1247
1255
  /**
1248
1256
  * Functionality for when a share video is muted or unmuted.
@@ -1270,33 +1278,37 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
1270
1278
  return _regenerator.default.wrap(function _callee3$(_context3) {
1271
1279
  while (1) switch (_context3.prev = _context3.next) {
1272
1280
  case 0:
1281
+ _loggerProxy.default.logger.info("Meeting:index#handleShareVideoStreamEnded --> video share stream ended");
1282
+ // current share video stream has ended, but there might be an active
1283
+ // share audio stream. we only leave from wireless share if share has
1284
+ // completely ended, which means no share audio or video streams active
1273
1285
  if (!(_this.wirelessShare && !_this.mediaProperties.shareAudioStream)) {
1274
- _context3.next = 4;
1286
+ _context3.next = 5;
1275
1287
  break;
1276
1288
  }
1277
1289
  _this.leave({
1278
1290
  reason: _constants.MEETING_REMOVED_REASON.USER_ENDED_SHARE_STREAMS
1279
1291
  });
1280
- _context3.next = 12;
1292
+ _context3.next = 13;
1281
1293
  break;
1282
- case 4:
1283
- _context3.prev = 4;
1284
- _context3.next = 7;
1294
+ case 5:
1295
+ _context3.prev = 5;
1296
+ _context3.next = 8;
1285
1297
  return _this.unpublishStreams([_this.mediaProperties.shareVideoStream]);
1286
- case 7:
1287
- _context3.next = 12;
1298
+ case 8:
1299
+ _context3.next = 13;
1288
1300
  break;
1289
- case 9:
1290
- _context3.prev = 9;
1291
- _context3.t0 = _context3["catch"](4);
1301
+ case 10:
1302
+ _context3.prev = 10;
1303
+ _context3.t0 = _context3["catch"](5);
1292
1304
  _loggerProxy.default.logger.log('Meeting:index#handleShareVideoStreamEnded --> Error stopping share: ', _context3.t0);
1293
- case 12:
1294
- _this.triggerStoppedSharing();
1295
1305
  case 13:
1306
+ _this.triggerStoppedSharing();
1307
+ case 14:
1296
1308
  case "end":
1297
1309
  return _context3.stop();
1298
1310
  }
1299
- }, _callee3, null, [[4, 9]]);
1311
+ }, _callee3, null, [[5, 10]]);
1300
1312
  })));
1301
1313
  /**
1302
1314
  * Emits meeting:stoppedSharingLocal
@@ -1425,6 +1437,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
1425
1437
  _loggerProxy.default.logger.log("Meetings:index#constructor --> Initializing the meeting object with generated correlation id from sdk ".concat(_this.id));
1426
1438
  _this.callStateForMetrics.correlationId = _this.id;
1427
1439
  }
1440
+ _this.logUploadIntervalIndex = 0;
1441
+
1428
1442
  /**
1429
1443
  * @instance
1430
1444
  * @type {String}
@@ -2413,8 +2427,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2413
2427
  }
2414
2428
  throw new _permission.default();
2415
2429
  case 21:
2430
+ if (!(_context5.t0 instanceof _meetingInfoV.MeetingInfoV2WebinarRegistrationError)) {
2431
+ _context5.next = 28;
2432
+ break;
2433
+ }
2434
+ this.meetingInfoFailureReason = _constants.MEETING_INFO_FAILURE_REASON.WEBINAR_REGISTRATION;
2435
+ this.meetingInfoFailureCode = _context5.t0.wbxAppApiCode;
2436
+ if (_context5.t0.meetingInfo) {
2437
+ this.meetingInfo = _context5.t0.meetingInfo;
2438
+ }
2439
+ throw new _webinarRegistrationError.default();
2440
+ case 28:
2416
2441
  if (!(_context5.t0 instanceof _meetingInfoV.MeetingInfoV2PasswordError)) {
2417
- _context5.next = 33;
2442
+ _context5.next = 40;
2418
2443
  break;
2419
2444
  }
2420
2445
  _loggerProxy.default.logger.info( // @ts-ignore
@@ -2429,16 +2454,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2429
2454
  this.passwordStatus = _constants.PASSWORD_STATUS.REQUIRED;
2430
2455
  this.meetingInfoFailureReason = _constants.MEETING_INFO_FAILURE_REASON.WRONG_PASSWORD;
2431
2456
  if (!this.requiredCaptcha) {
2432
- _context5.next = 30;
2457
+ _context5.next = 37;
2433
2458
  break;
2434
2459
  }
2435
- _context5.next = 30;
2460
+ _context5.next = 37;
2436
2461
  return this.refreshCaptcha();
2437
- case 30:
2462
+ case 37:
2438
2463
  throw new _passwordError.default();
2439
- case 33:
2464
+ case 40:
2440
2465
  if (!(_context5.t0 instanceof _meetingInfoV.MeetingInfoV2CaptchaError)) {
2441
- _context5.next = 42;
2466
+ _context5.next = 49;
2442
2467
  break;
2443
2468
  }
2444
2469
  _loggerProxy.default.logger.info( // @ts-ignore
@@ -2450,10 +2475,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2450
2475
  }
2451
2476
  this.requiredCaptcha = _context5.t0.captchaInfo;
2452
2477
  throw new _captchaError.default();
2453
- case 42:
2478
+ case 49:
2454
2479
  this.meetingInfoFailureReason = _constants.MEETING_INFO_FAILURE_REASON.OTHER;
2455
2480
  throw _context5.t0;
2456
- case 44:
2481
+ case 51:
2457
2482
  case "end":
2458
2483
  return _context5.stop();
2459
2484
  }
@@ -2682,6 +2707,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2682
2707
  this.setUpLocusInfoSelfListener();
2683
2708
  this.setUpLocusInfoMeetingListener();
2684
2709
  this.setUpLocusServicesListener();
2710
+ this.setUpLocusResourcesListener();
2685
2711
  // members update listeners
2686
2712
  this.setUpLocusFullStateListener();
2687
2713
  this.setUpLocusUrlListener();
@@ -3198,8 +3224,44 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3198
3224
  state: state
3199
3225
  });
3200
3226
  });
3201
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_VIDEO_CHANGED, function (_ref22) {
3227
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_WEBCAST_CHANGED, function (_ref22) {
3202
3228
  var state = _ref22.state;
3229
+ _triggerProxy.default.trigger(_this13, {
3230
+ file: 'meeting/index',
3231
+ function: 'setupLocusControlsListener'
3232
+ }, _constants.EVENT_TRIGGERS.MEETING_CONTROLS_WEBCAST_UPDATED, {
3233
+ state: state
3234
+ });
3235
+ });
3236
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_FULL_CHANGED, function (_ref23) {
3237
+ var state = _ref23.state;
3238
+ _triggerProxy.default.trigger(_this13, {
3239
+ file: 'meeting/index',
3240
+ function: 'setupLocusControlsListener'
3241
+ }, _constants.EVENT_TRIGGERS.MEETING_CONTROLS_MEETING_FULL_UPDATED, {
3242
+ state: state
3243
+ });
3244
+ });
3245
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_PRACTICE_SESSION_STATUS_UPDATED, function (_ref24) {
3246
+ var state = _ref24.state;
3247
+ _triggerProxy.default.trigger(_this13, {
3248
+ file: 'meeting/index',
3249
+ function: 'setupLocusControlsListener'
3250
+ }, _constants.EVENT_TRIGGERS.MEETING_CONTROLS_PRACTICE_SESSION_STATUS_UPDATED, {
3251
+ state: state
3252
+ });
3253
+ });
3254
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_STAGE_VIEW_UPDATED, function (_ref25) {
3255
+ var state = _ref25.state;
3256
+ _triggerProxy.default.trigger(_this13, {
3257
+ file: 'meeting/index',
3258
+ function: 'setupLocusControlsListener'
3259
+ }, _constants.EVENT_TRIGGERS.MEETING_CONTROLS_STAGE_VIEW_UPDATED, {
3260
+ state: state
3261
+ });
3262
+ });
3263
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_VIDEO_CHANGED, function (_ref26) {
3264
+ var state = _ref26.state;
3203
3265
  _triggerProxy.default.trigger(_this13, {
3204
3266
  file: 'meeting/index',
3205
3267
  function: 'setupLocusControlsListener'
@@ -3246,7 +3308,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3246
3308
  var _this14 = this;
3247
3309
  // Will get triggered on local and remote share
3248
3310
  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) {
3311
+ var _ref27 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8(payload) {
3250
3312
  var _payload$previous, _payload$previous2;
3251
3313
  var _payload$current, contentShare, whiteboardShare, previousContentShare, previousWhiteboardShare, newShareStatus, oldShareStatus, sendStartedSharingRemote, _this14$mediaProperti;
3252
3314
  return _regenerator.default.wrap(function _callee8$(_context8) {
@@ -3288,8 +3350,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3288
3350
  else if ((previousContentShare && contentShare.disposition === _constants.FLOOR_ACTION.RELEASED || contentShare.disposition === null) && (previousWhiteboardShare && whiteboardShare.disposition === _constants.FLOOR_ACTION.RELEASED || whiteboardShare.disposition === null)) {
3289
3351
  newShareStatus = _constants.SHARE_STATUS.NO_SHARE;
3290
3352
  }
3353
+ _loggerProxy.default.logger.info("Meeting:index#setUpLocusInfoMediaInactiveListener --> this.shareStatus=".concat(_this14.shareStatus, " newShareStatus=").concat(newShareStatus));
3291
3354
  if (!(newShareStatus !== _this14.shareStatus)) {
3292
- _context8.next = 45;
3355
+ _context8.next = 46;
3293
3356
  break;
3294
3357
  }
3295
3358
  oldShareStatus = _this14.shareStatus; // update our state before we send out any notifications
@@ -3297,37 +3360,37 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3297
3360
 
3298
3361
  // send out "stop" notifications for the old state
3299
3362
  _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;
3363
+ _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
3364
  break;
3302
- case 14:
3365
+ case 15:
3303
3366
  _triggerProxy.default.trigger(_this14, {
3304
3367
  file: 'meetings/index',
3305
3368
  function: 'remoteShare'
3306
3369
  }, _constants.EVENT_TRIGGERS.MEETING_STOPPED_SHARING_REMOTE);
3307
- return _context8.abrupt("break", 22);
3308
- case 16:
3370
+ return _context8.abrupt("break", 23);
3371
+ case 17:
3309
3372
  _triggerProxy.default.trigger(_this14, {
3310
3373
  file: 'meeting/index',
3311
3374
  function: 'localShare'
3312
3375
  }, _constants.EVENT_TRIGGERS.MEETING_STOPPED_SHARING_LOCAL, {
3313
3376
  reason: _constants.SHARE_STOPPED_REASON.SELF_STOPPED
3314
3377
  });
3315
- return _context8.abrupt("break", 22);
3316
- case 18:
3378
+ return _context8.abrupt("break", 23);
3379
+ case 19:
3317
3380
  _triggerProxy.default.trigger(_this14, {
3318
3381
  file: 'meeting/index',
3319
3382
  function: 'stopWhiteboardShare'
3320
3383
  }, _constants.EVENT_TRIGGERS.MEETING_STOPPED_SHARING_WHITEBOARD);
3321
- return _context8.abrupt("break", 22);
3322
- case 20:
3323
- return _context8.abrupt("break", 22);
3384
+ return _context8.abrupt("break", 23);
3324
3385
  case 21:
3325
- return _context8.abrupt("break", 22);
3386
+ return _context8.abrupt("break", 23);
3326
3387
  case 22:
3388
+ return _context8.abrupt("break", 23);
3389
+ case 23:
3327
3390
  _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;
3391
+ _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
3392
  break;
3330
- case 25:
3393
+ case 26:
3331
3394
  sendStartedSharingRemote = function sendStartedSharingRemote() {
3332
3395
  _this14.remoteShareInstanceId = contentShare.shareInstanceId;
3333
3396
  _triggerProxy.default.trigger(_this14, {
@@ -3341,20 +3404,20 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3341
3404
  resourceType: contentShare.resourceType
3342
3405
  });
3343
3406
  };
3344
- _context8.prev = 26;
3407
+ _context8.prev = 27;
3345
3408
  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;
3409
+ _context8.next = 31;
3347
3410
  break;
3348
3411
  }
3349
- _context8.next = 30;
3412
+ _context8.next = 31;
3350
3413
  return _this14.unpublishStreams([_this14.mediaProperties.shareVideoStream, _this14.mediaProperties.shareAudioStream]);
3351
- case 30:
3352
- _context8.prev = 30;
3414
+ case 31:
3415
+ _context8.prev = 31;
3353
3416
  sendStartedSharingRemote();
3354
- return _context8.finish(30);
3355
- case 33:
3356
- return _context8.abrupt("break", 42);
3417
+ return _context8.finish(31);
3357
3418
  case 34:
3419
+ return _context8.abrupt("break", 43);
3420
+ case 35:
3358
3421
  _triggerProxy.default.trigger(_this14, {
3359
3422
  file: 'meeting/index',
3360
3423
  function: 'share'
@@ -3370,8 +3433,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3370
3433
  meetingId: _this14.id
3371
3434
  }
3372
3435
  });
3373
- return _context8.abrupt("break", 42);
3374
- case 37:
3436
+ return _context8.abrupt("break", 43);
3437
+ case 38:
3375
3438
  _triggerProxy.default.trigger(_this14, {
3376
3439
  file: 'meeting/index',
3377
3440
  function: 'startWhiteboardShare'
@@ -3389,16 +3452,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3389
3452
  meetingId: _this14.id
3390
3453
  }
3391
3454
  });
3392
- return _context8.abrupt("break", 42);
3393
- case 40:
3394
- return _context8.abrupt("break", 42);
3455
+ return _context8.abrupt("break", 43);
3395
3456
  case 41:
3396
- return _context8.abrupt("break", 42);
3457
+ return _context8.abrupt("break", 43);
3397
3458
  case 42:
3459
+ return _context8.abrupt("break", 43);
3460
+ case 43:
3398
3461
  _this14.members.locusMediaSharesUpdate(payload);
3399
- _context8.next = 46;
3462
+ _context8.next = 47;
3400
3463
  break;
3401
- case 45:
3464
+ case 46:
3402
3465
  if (newShareStatus === _constants.SHARE_STATUS.REMOTE_SHARE_ACTIVE) {
3403
3466
  // if we got here, then some remote participant has stolen
3404
3467
  // the presentation from another remote participant
@@ -3436,14 +3499,14 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3436
3499
  });
3437
3500
  _this14.members.locusMediaSharesUpdate(payload);
3438
3501
  }
3439
- case 46:
3502
+ case 47:
3440
3503
  case "end":
3441
3504
  return _context8.stop();
3442
3505
  }
3443
- }, _callee8, null, [[26,, 30, 33]]);
3506
+ }, _callee8, null, [[27,, 31, 34]]);
3444
3507
  }));
3445
3508
  return function (_x8) {
3446
- return _ref23.apply(this, arguments);
3509
+ return _ref27.apply(this, arguments);
3447
3510
  };
3448
3511
  }());
3449
3512
  }
@@ -3493,14 +3556,29 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3493
3556
  value: function setUpLocusServicesListener() {
3494
3557
  var _this16 = this;
3495
3558
  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;
3559
+ 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
3560
  _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
3561
  _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
3562
  _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
3563
  _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
3564
  _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);
3565
+ });
3566
+ }
3567
+
3568
+ /**
3569
+ * Set up the locus info resources link listener
3570
+ * update the locusInfo for webcast instance url
3571
+ * @param {Object} payload - The event payload
3572
+ * @returns {undefined}
3573
+ * @private
3574
+ * @memberof Meeting
3575
+ */
3576
+ }, {
3577
+ key: "setUpLocusResourcesListener",
3578
+ value: function setUpLocusResourcesListener() {
3579
+ var _this17 = this;
3580
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.LINKS_RESOURCES, function (payload) {
3581
+ _this17.webinar.updateWebcastUrl(payload);
3504
3582
  });
3505
3583
  }
3506
3584
 
@@ -3513,10 +3591,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3513
3591
  }, {
3514
3592
  key: "setUpLocusInfoMeetingInfoListener",
3515
3593
  value: function setUpLocusInfoMeetingInfoListener() {
3516
- var _this17 = this;
3594
+ var _this18 = this;
3517
3595
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.MEETING_LOCKED, function (payload) {
3518
3596
  if (payload) {
3519
- _triggerProxy.default.trigger(_this17, {
3597
+ _triggerProxy.default.trigger(_this18, {
3520
3598
  file: 'meeting/index',
3521
3599
  function: 'setUpLocusInfoMeetingInfoListener'
3522
3600
  }, _constants.EVENT_TRIGGERS.MEETING_LOCKED, {
@@ -3526,7 +3604,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3526
3604
  });
3527
3605
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.MEETING_UNLOCKED, function (payload) {
3528
3606
  if (payload) {
3529
- _triggerProxy.default.trigger(_this17, {
3607
+ _triggerProxy.default.trigger(_this18, {
3530
3608
  file: 'meeting/index',
3531
3609
  function: 'setUpLocusInfoMeetingInfoListener'
3532
3610
  }, _constants.EVENT_TRIGGERS.MEETING_UNLOCKED, {
@@ -3534,16 +3612,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3534
3612
  });
3535
3613
  }
3536
3614
  });
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);
3615
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.MEETING_INFO_UPDATED, function (_ref28) {
3616
+ var isInitializing = _ref28.isInitializing;
3617
+ _this18.updateMeetingActions();
3618
+ _this18.recordingController.setDisplayHints(_this18.userDisplayHints);
3619
+ _this18.recordingController.setUserPolicy(_this18.selfUserPolicies);
3620
+ _this18.controlsOptionsManager.setDisplayHints(_this18.userDisplayHints);
3621
+ _this18.handleDataChannelUrlChange(_this18.datachannelUrl);
3544
3622
  if (!isInitializing) {
3545
3623
  // send updated trigger only if locus is not initializing the meeting
3546
- _triggerProxy.default.trigger(_this17, {
3624
+ _triggerProxy.default.trigger(_this18, {
3547
3625
  file: 'meetings',
3548
3626
  function: 'setUpLocusInfoMeetingInfoListener'
3549
3627
  }, _constants.EVENT_TRIGGERS.MEETING_INFO_UPDATED);
@@ -3574,10 +3652,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3574
3652
  }, {
3575
3653
  key: "setUpLocusEmbeddedAppsListener",
3576
3654
  value: function setUpLocusEmbeddedAppsListener() {
3577
- var _this18 = this;
3655
+ var _this19 = this;
3578
3656
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.EMBEDDED_APPS_UPDATED, function (embeddedApps) {
3579
3657
  if (embeddedApps) {
3580
- _triggerProxy.default.trigger(_this18, {
3658
+ _triggerProxy.default.trigger(_this19, {
3581
3659
  file: 'meeting/index',
3582
3660
  function: 'setUpLocusEmbeddedAppsListener'
3583
3661
  }, _constants.EVENT_TRIGGERS.MEETING_EMBEDDED_APPS_UPDATE, embeddedApps);
@@ -3594,11 +3672,11 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3594
3672
  }, {
3595
3673
  key: "setUpLocusInfoSelfListener",
3596
3674
  value: function setUpLocusInfoSelfListener() {
3597
- var _this19 = this;
3675
+ var _this20 = this;
3598
3676
  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, {
3677
+ if (_this20.audio) {
3678
+ _this20.audio.handleServerLocalUnmuteRequired(_this20, payload.unmuteAllowed);
3679
+ _triggerProxy.default.trigger(_this20, {
3602
3680
  file: 'meeting/index',
3603
3681
  function: 'setUpLocusInfoSelfListener'
3604
3682
  }, _constants.EVENT_TRIGGERS.MEETING_SELF_UNMUTED_BY_OTHERS, {
@@ -3608,13 +3686,13 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3608
3686
  });
3609
3687
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED, function (payload) {
3610
3688
  if (payload) {
3611
- if (_this19.video) {
3689
+ if (_this20.video) {
3612
3690
  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);
3691
+ payload.muted = (_payload$muted = payload.muted) !== null && _payload$muted !== void 0 ? _payload$muted : _this20.video.isRemotelyMuted();
3692
+ payload.unmuteAllowed = (_payload$unmuteAllowe = payload.unmuteAllowed) !== null && _payload$unmuteAllowe !== void 0 ? _payload$unmuteAllowe : _this20.video.isUnmuteAllowed();
3693
+ _this20.video.handleServerRemoteMuteUpdate(_this20, payload.muted, payload.unmuteAllowed);
3616
3694
  }
3617
- _triggerProxy.default.trigger(_this19, {
3695
+ _triggerProxy.default.trigger(_this20, {
3618
3696
  file: 'meeting/index',
3619
3697
  function: 'setUpLocusInfoSelfListener'
3620
3698
  }, payload.muted ? _constants.EVENT_TRIGGERS.MEETING_SELF_VIDEO_MUTED_BY_OTHERS : _constants.EVENT_TRIGGERS.MEETING_SELF_VIDEO_UNMUTED_BY_OTHERS, {
@@ -3624,15 +3702,15 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3624
3702
  });
3625
3703
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_REMOTE_MUTE_STATUS_UPDATED, function (payload) {
3626
3704
  if (payload) {
3627
- var _this19$audio;
3628
- if (_this19.audio) {
3629
- _this19.audio.handleServerRemoteMuteUpdate(_this19, payload.muted, payload.unmuteAllowed);
3705
+ var _this20$audio;
3706
+ if (_this20.audio) {
3707
+ _this20.audio.handleServerRemoteMuteUpdate(_this20, payload.muted, payload.unmuteAllowed);
3630
3708
  }
3631
3709
  // with "mute on entry" server will send us remote mute even if we don't have media configured,
3632
3710
  // so if being muted by others, always send the notification,
3633
3711
  // 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, {
3712
+ if (payload.muted || !((_this20$audio = _this20.audio) !== null && _this20$audio !== void 0 && _this20$audio.isMuted())) {
3713
+ _triggerProxy.default.trigger(_this20, {
3636
3714
  file: 'meeting/index',
3637
3715
  function: 'setUpLocusInfoSelfListener'
3638
3716
  }, payload.muted ? _constants.EVENT_TRIGGERS.MEETING_SELF_MUTED_BY_OTHERS : _constants.EVENT_TRIGGERS.MEETING_SELF_UNMUTED_BY_OTHERS, {
@@ -3642,7 +3720,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3642
3720
  }
3643
3721
  });
3644
3722
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.LOCAL_UNMUTE_REQUESTED, function (payload) {
3645
- _triggerProxy.default.trigger(_this19, {
3723
+ _triggerProxy.default.trigger(_this20, {
3646
3724
  file: 'meeting/index',
3647
3725
  function: 'setUpLocusInfoSelfListener'
3648
3726
  }, _constants.EVENT_TRIGGERS.MEETING_SELF_REQUESTED_TO_UNMUTE, {
@@ -3651,8 +3729,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3651
3729
  });
3652
3730
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_UNADMITTED_GUEST, function (payload) {
3653
3731
  if (payload) {
3654
- _this19.startKeepAlive();
3655
- _triggerProxy.default.trigger(_this19, {
3732
+ _this20.startKeepAlive();
3733
+ _triggerProxy.default.trigger(_this20, {
3656
3734
  file: 'meeting/index',
3657
3735
  function: 'setUpLocusInfoSelfListener'
3658
3736
  }, _constants.EVENT_TRIGGERS.MEETING_SELF_LOBBY_WAITING, {
@@ -3660,24 +3738,24 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3660
3738
  });
3661
3739
 
3662
3740
  // @ts-ignore
3663
- _this19.webex.internal.newMetrics.submitClientEvent({
3741
+ _this20.webex.internal.newMetrics.submitClientEvent({
3664
3742
  name: 'client.lobby.entered',
3665
3743
  options: {
3666
- meetingId: _this19.id
3744
+ meetingId: _this20.id
3667
3745
  }
3668
3746
  });
3669
3747
  }
3670
- _this19.updateLLMConnection();
3748
+ _this20.updateLLMConnection();
3671
3749
  });
3672
3750
  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;
3751
+ var _ref29 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9(payload) {
3752
+ var _this20$rtcMetrics;
3675
3753
  return _regenerator.default.wrap(function _callee9$(_context9) {
3676
3754
  while (1) switch (_context9.prev = _context9.next) {
3677
3755
  case 0:
3678
- _this19.stopKeepAlive();
3756
+ _this20.stopKeepAlive();
3679
3757
  if (payload) {
3680
- _triggerProxy.default.trigger(_this19, {
3758
+ _triggerProxy.default.trigger(_this20, {
3681
3759
  file: 'meeting/index',
3682
3760
  function: 'setUpLocusInfoSelfListener'
3683
3761
  }, _constants.EVENT_TRIGGERS.MEETING_SELF_GUEST_ADMITTED, {
@@ -3685,15 +3763,15 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3685
3763
  });
3686
3764
 
3687
3765
  // @ts-ignore
3688
- _this19.webex.internal.newMetrics.submitClientEvent({
3766
+ _this20.webex.internal.newMetrics.submitClientEvent({
3689
3767
  name: 'client.lobby.exited',
3690
3768
  options: {
3691
- meetingId: _this19.id
3769
+ meetingId: _this20.id
3692
3770
  }
3693
3771
  });
3694
3772
  }
3695
- (_this19$rtcMetrics = _this19.rtcMetrics) === null || _this19$rtcMetrics === void 0 ? void 0 : _this19$rtcMetrics.sendNextMetrics();
3696
- _this19.updateLLMConnection();
3773
+ (_this20$rtcMetrics = _this20.rtcMetrics) === null || _this20$rtcMetrics === void 0 ? void 0 : _this20$rtcMetrics.sendNextMetrics();
3774
+ _this20.updateLLMConnection();
3697
3775
  case 4:
3698
3776
  case "end":
3699
3777
  return _context9.stop();
@@ -3701,42 +3779,42 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3701
3779
  }, _callee9);
3702
3780
  }));
3703
3781
  return function (_x9) {
3704
- return _ref25.apply(this, arguments);
3782
+ return _ref29.apply(this, arguments);
3705
3783
  };
3706
3784
  }());
3707
3785
 
3708
3786
  // @ts-ignore - check if MEDIA_INACTIVITY exists
3709
3787
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.MEDIA_INACTIVITY, function () {
3710
3788
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_MEDIA_INACTIVE, {
3711
- correlation_id: _this19.correlationId,
3712
- locus_id: _this19.locusId
3789
+ correlation_id: _this20.correlationId,
3790
+ locus_id: _this20.locusId
3713
3791
  });
3714
3792
  _loggerProxy.default.logger.info('Meeting:index#setUpLocusInfoSelfListener --> MEDIA_INACTIVITY received, reconnecting...');
3715
- _this19.reconnect();
3793
+ _this20.reconnect();
3716
3794
  });
3717
3795
 
3718
3796
  // There is two stats for mute one is the actual media being sent or received
3719
3797
  // The second on is if the audio is muted, we need to tell the statsAnalyzer when
3720
3798
  // the audio is muted or the user is not willing to send media
3721
3799
  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({
3800
+ if (_this20.statsAnalyzer) {
3801
+ var _this20$mediaProperti, _this20$audio2, _this20$mediaProperti2, _this20$video, _this20$mediaProperti3, _this20$mediaProperti4, _this20$mediaProperti5, _this20$mediaProperti6;
3802
+ _this20.statsAnalyzer.updateMediaStatus({
3725
3803
  actual: status,
3726
3804
  expected: {
3727
3805
  // 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
3806
+ 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()),
3807
+ 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()),
3808
+ sendShare: (_this20$mediaProperti3 = _this20.mediaProperties.mediaDirection) === null || _this20$mediaProperti3 === void 0 ? void 0 : _this20$mediaProperti3.sendShare,
3809
+ receiveAudio: (_this20$mediaProperti4 = _this20.mediaProperties.mediaDirection) === null || _this20$mediaProperti4 === void 0 ? void 0 : _this20$mediaProperti4.receiveAudio,
3810
+ receiveVideo: (_this20$mediaProperti5 = _this20.mediaProperties.mediaDirection) === null || _this20$mediaProperti5 === void 0 ? void 0 : _this20$mediaProperti5.receiveVideo,
3811
+ receiveShare: (_this20$mediaProperti6 = _this20.mediaProperties.mediaDirection) === null || _this20$mediaProperti6 === void 0 ? void 0 : _this20$mediaProperti6.receiveShare
3734
3812
  }
3735
3813
  });
3736
3814
  }
3737
3815
  });
3738
3816
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE, function (payload) {
3739
- _triggerProxy.default.trigger(_this19, {
3817
+ _triggerProxy.default.trigger(_this20, {
3740
3818
  file: 'meeting/index',
3741
3819
  function: 'setUpLocusInfoSelfListener'
3742
3820
  }, _constants.EVENT_TRIGGERS.MEETING_SELF_CANNOT_VIEW_PARTICIPANT_LIST, {
@@ -3744,29 +3822,29 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3744
3822
  });
3745
3823
  });
3746
3824
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_MEETING_BREAKOUTS_CHANGED, function (payload) {
3747
- _this19.breakouts.updateBreakoutSessions(payload);
3748
- _triggerProxy.default.trigger(_this19, {
3825
+ _this20.breakouts.updateBreakoutSessions(payload);
3826
+ _triggerProxy.default.trigger(_this20, {
3749
3827
  file: 'meeting/index',
3750
3828
  function: 'setUpLocusInfoSelfListener'
3751
3829
  }, _constants.EVENT_TRIGGERS.MEETING_BREAKOUTS_UPDATE);
3752
3830
  });
3753
3831
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_MEETING_INTERPRETATION_CHANGED, function (payload) {
3754
- var targetChanged = _this19.simultaneousInterpretation.updateSelfInterpretation(payload);
3755
- _triggerProxy.default.trigger(_this19, {
3832
+ var targetChanged = _this20.simultaneousInterpretation.updateSelfInterpretation(payload);
3833
+ _triggerProxy.default.trigger(_this20, {
3756
3834
  file: 'meeting/index',
3757
3835
  function: 'setUpLocusInfoSelfListener'
3758
3836
  }, _constants.EVENT_TRIGGERS.MEETING_INTERPRETATION_UPDATE);
3759
- if (targetChanged && _this19.mediaProperties.audioStream) {
3760
- _this19.setSendNamedMediaGroup(_internalMediaCore.MediaType.AudioMain);
3837
+ if (targetChanged && _this20.mediaProperties.audioStream) {
3838
+ _this20.setSendNamedMediaGroup(_internalMediaCore.MediaType.AudioMain);
3761
3839
  }
3762
3840
  });
3763
3841
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_ROLES_CHANGED, function (payload) {
3764
- var _payload$newRoles, _payload$newRoles2, _payload$newRoles3, _payload$newRoles4;
3842
+ var _payload$newRoles, _payload$newRoles2, _payload$newRoles3;
3765
3843
  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, {
3844
+ _this20.breakouts.updateCanManageBreakouts(isModeratorOrCohost);
3845
+ _this20.simultaneousInterpretation.updateCanManageInterpreters((_payload$newRoles3 = payload.newRoles) === null || _payload$newRoles3 === void 0 ? void 0 : _payload$newRoles3.includes(_constants.SELF_ROLES.MODERATOR));
3846
+ _this20.webinar.updateRoleChanged(payload);
3847
+ _triggerProxy.default.trigger(_this20, {
3770
3848
  file: 'meeting/index',
3771
3849
  function: 'setUpLocusInfoSelfListener'
3772
3850
  }, _constants.EVENT_TRIGGERS.MEETING_SELF_ROLES_CHANGED, {
@@ -3774,7 +3852,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3774
3852
  });
3775
3853
  });
3776
3854
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_IS_SHARING_BLOCKED_CHANGE, function (payload) {
3777
- _triggerProxy.default.trigger(_this19, {
3855
+ _triggerProxy.default.trigger(_this20, {
3778
3856
  file: 'meeting/index',
3779
3857
  function: 'setUpLocusInfoSelfListener'
3780
3858
  }, _constants.EVENT_TRIGGERS.MEETING_SELF_IS_SHARING_BLOCKED, {
@@ -3792,42 +3870,42 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3792
3870
  }, {
3793
3871
  key: "setUpLocusInfoMeetingListener",
3794
3872
  value: function setUpLocusInfoMeetingListener() {
3795
- var _this20 = this;
3873
+ var _this21 = this;
3796
3874
  this.locusInfo.on(_constants.EVENTS.REMOTE_RESPONSE, function (payload) {
3797
- _this20.meetingFiniteStateMachine.remote(payload);
3875
+ _this21.meetingFiniteStateMachine.remote(payload);
3798
3876
  if (payload.remoteDeclined) {
3799
- _this20.leave({
3877
+ _this21.leave({
3800
3878
  reason: payload.reason
3801
3879
  }).then(function () {
3802
3880
  _loggerProxy.default.logger.info('Meeting:index#setUpLocusInfoMeetingListener --> REMOTE_RESPONSE. Attempting to leave meeting.');
3803
3881
  }).catch(function (error) {
3804
3882
  // @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));
3883
+ _loggerProxy.default.logger.error("Meeting:index#setUpLocusInfoMeetingListener --> REMOTE_RESPONSE. Issue with leave for meeting, meeting still in collection: ".concat(_this21, ", error: ").concat(error));
3806
3884
  });
3807
3885
  }
3808
3886
  });
3809
3887
  this.locusInfo.on(_constants.EVENTS.DESTROY_MEETING, /*#__PURE__*/function () {
3810
- var _ref26 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10(payload) {
3888
+ var _ref30 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10(payload) {
3811
3889
  return _regenerator.default.wrap(function _callee10$(_context10) {
3812
3890
  while (1) switch (_context10.prev = _context10.next) {
3813
3891
  case 0:
3814
- if (!_this20.wirelessShare) {
3892
+ if (!_this21.wirelessShare) {
3815
3893
  _context10.next = 7;
3816
3894
  break;
3817
3895
  }
3818
- if (!_this20.mediaProperties.shareVideoStream) {
3896
+ if (!_this21.mediaProperties.shareVideoStream) {
3819
3897
  _context10.next = 4;
3820
3898
  break;
3821
3899
  }
3822
3900
  _context10.next = 4;
3823
- return _this20.setLocalShareVideoStream(undefined);
3901
+ return _this21.setLocalShareVideoStream(undefined);
3824
3902
  case 4:
3825
- if (!_this20.mediaProperties.shareAudioStream) {
3903
+ if (!_this21.mediaProperties.shareAudioStream) {
3826
3904
  _context10.next = 7;
3827
3905
  break;
3828
3906
  }
3829
3907
  _context10.next = 7;
3830
- return _this20.setLocalShareAudioStream(undefined);
3908
+ return _this21.setLocalShareAudioStream(undefined);
3831
3909
  case 7:
3832
3910
  if (!payload.shouldLeave) {
3833
3911
  _context10.next = 19;
@@ -3835,7 +3913,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3835
3913
  }
3836
3914
  _context10.prev = 8;
3837
3915
  _context10.next = 11;
3838
- return _this20.leave({
3916
+ return _this21.leave({
3839
3917
  reason: payload.reason
3840
3918
  });
3841
3919
  case 11:
@@ -3846,19 +3924,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3846
3924
  _context10.prev = 14;
3847
3925
  _context10.t0 = _context10["catch"](8);
3848
3926
  // @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));
3927
+ _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
3928
  case 17:
3851
3929
  _context10.next = 22;
3852
3930
  break;
3853
3931
  case 19:
3854
3932
  _loggerProxy.default.logger.info('Meeting:index#setUpLocusInfoMeetingListener --> MEETING_REMOVED_REASON', payload.reason);
3855
- _util2.default.cleanUp(_this20);
3856
- _triggerProxy.default.trigger(_this20, {
3933
+ _util2.default.cleanUp(_this21);
3934
+ _triggerProxy.default.trigger(_this21, {
3857
3935
  file: 'meeting/index',
3858
3936
  function: 'setUpLocusInfoMeetingListener'
3859
3937
  }, _constants.EVENTS.DESTROY_MEETING, {
3860
3938
  reason: payload.reason,
3861
- meetingId: _this20.id
3939
+ meetingId: _this21.id
3862
3940
  });
3863
3941
  case 22:
3864
3942
  case "end":
@@ -3867,7 +3945,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3867
3945
  }, _callee10, null, [[8, 14]]);
3868
3946
  }));
3869
3947
  return function (_x10) {
3870
- return _ref26.apply(this, arguments);
3948
+ return _ref30.apply(this, arguments);
3871
3949
  };
3872
3950
  }());
3873
3951
  }
@@ -3883,13 +3961,13 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3883
3961
  }, {
3884
3962
  key: "updateMeetingObject",
3885
3963
  value: function updateMeetingObject(object) {
3886
- var _this21 = this;
3964
+ var _this22 = this;
3887
3965
  // Validate if these are valid meeting object property
3888
3966
  // TODO: add a check to make sure the value passed in the constructor
3889
3967
  // is not changed by any delta event
3890
3968
  if (object && (0, _keys.default)(object).length) {
3891
3969
  (0, _keys.default)(object).forEach(function (key) {
3892
- _this21[key] = object[key];
3970
+ _this22[key] = object[key];
3893
3971
  });
3894
3972
  }
3895
3973
  }
@@ -4219,6 +4297,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4219
4297
  requiredHints: [_constants.DISPLAY_HINTS.DISABLE_VIEW_THE_PARTICIPANT_LIST],
4220
4298
  displayHints: this.userDisplayHints
4221
4299
  }),
4300
+ canEnableViewTheParticipantsListPanelist: _util5.default.hasHints({
4301
+ requiredHints: [_constants.DISPLAY_HINTS.ENABLE_VIEW_THE_PARTICIPANT_LIST_PANELIST],
4302
+ displayHints: this.userDisplayHints
4303
+ }),
4304
+ canDisableViewTheParticipantsListPanelist: _util5.default.hasHints({
4305
+ requiredHints: [_constants.DISPLAY_HINTS.DISABLE_VIEW_THE_PARTICIPANT_LIST_PANELIST],
4306
+ displayHints: this.userDisplayHints
4307
+ }),
4308
+ canEnableShowAttendeeCount: _util5.default.hasHints({
4309
+ requiredHints: [_constants.DISPLAY_HINTS.ENABLE_SHOW_ATTENDEE_COUNT],
4310
+ displayHints: this.userDisplayHints
4311
+ }),
4312
+ canDisableShowAttendeeCount: _util5.default.hasHints({
4313
+ requiredHints: [_constants.DISPLAY_HINTS.DISABLE_SHOW_ATTENDEE_COUNT],
4314
+ displayHints: this.userDisplayHints
4315
+ }),
4222
4316
  canEnableRaiseHand: _util5.default.hasHints({
4223
4317
  requiredHints: [_constants.DISPLAY_HINTS.ENABLE_RAISE_HAND],
4224
4318
  displayHints: this.userDisplayHints
@@ -4235,6 +4329,26 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4235
4329
  requiredHints: [_constants.DISPLAY_HINTS.DISABLE_VIDEO],
4236
4330
  displayHints: this.userDisplayHints
4237
4331
  }),
4332
+ canStartWebcast: _util5.default.hasHints({
4333
+ requiredHints: [_constants.DISPLAY_HINTS.WEBCAST_CONTROL_START],
4334
+ displayHints: this.userDisplayHints
4335
+ }),
4336
+ canStopWebcast: _util5.default.hasHints({
4337
+ requiredHints: [_constants.DISPLAY_HINTS.WEBCAST_CONTROL_STOP],
4338
+ displayHints: this.userDisplayHints
4339
+ }),
4340
+ canShowStageView: _util5.default.hasHints({
4341
+ requiredHints: [_constants.DISPLAY_HINTS.STAGE_VIEW_ACTIVE],
4342
+ displayHints: this.userDisplayHints
4343
+ }),
4344
+ canEnableStageView: _util5.default.hasHints({
4345
+ requiredHints: [_constants.DISPLAY_HINTS.ENABLE_STAGE_VIEW],
4346
+ displayHints: this.userDisplayHints
4347
+ }),
4348
+ canDisableStageView: _util5.default.hasHints({
4349
+ requiredHints: [_constants.DISPLAY_HINTS.DISABLE_STAGE_VIEW],
4350
+ displayHints: this.userDisplayHints
4351
+ }),
4238
4352
  canShareFile: _util5.default.hasHints({
4239
4353
  requiredHints: [_constants.DISPLAY_HINTS.SHARE_FILE],
4240
4354
  displayHints: this.userDisplayHints
@@ -4379,6 +4493,64 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4379
4493
  _triggerProxy.default.trigger(this, options, _constants.EVENTS.REQUEST_UPLOAD_LOGS, this);
4380
4494
  }
4381
4495
 
4496
+ /**
4497
+ * sets the timer for periodic log upload
4498
+ * @returns {void}
4499
+ */
4500
+ }, {
4501
+ key: "setLogUploadTimer",
4502
+ value: function setLogUploadTimer() {
4503
+ var _this23 = this;
4504
+ // start with short timeouts and increase them later on so in case users have very long multi-hour meetings we don't get too fragmented logs
4505
+ var LOG_UPLOAD_INTERVALS = [0.1, 1, 15, 15, 30, 30, 30, 60];
4506
+ var delay = 1000 *
4507
+ // @ts-ignore - config coming from registerPlugin
4508
+ this.config.logUploadIntervalMultiplicationFactor * LOG_UPLOAD_INTERVALS[this.logUploadIntervalIndex];
4509
+ if (this.logUploadIntervalIndex < LOG_UPLOAD_INTERVALS.length - 1) {
4510
+ this.logUploadIntervalIndex += 1;
4511
+ }
4512
+ this.uploadLogsTimer = (0, _commonTimers.safeSetTimeout)(function () {
4513
+ _this23.uploadLogsTimer = undefined;
4514
+ _this23.uploadLogs();
4515
+
4516
+ // just as an extra precaution, to avoid uploading logs forever in case something goes wrong
4517
+ // and the page remains opened, we stop it if there is no media connection
4518
+ if (!_this23.mediaProperties.webrtcMediaConnection) {
4519
+ return;
4520
+ }
4521
+ _this23.setLogUploadTimer();
4522
+ }, delay);
4523
+ }
4524
+
4525
+ /**
4526
+ * Starts a periodic upload of logs
4527
+ *
4528
+ * @returns {undefined}
4529
+ */
4530
+ }, {
4531
+ key: "startPeriodicLogUpload",
4532
+ value: function startPeriodicLogUpload() {
4533
+ // @ts-ignore - config coming from registerPlugin
4534
+ if (this.config.logUploadIntervalMultiplicationFactor && !this.uploadLogsTimer) {
4535
+ this.logUploadIntervalIndex = 0;
4536
+ this.setLogUploadTimer();
4537
+ }
4538
+ }
4539
+
4540
+ /**
4541
+ * Stops the periodic upload of logs
4542
+ *
4543
+ * @returns {undefined}
4544
+ */
4545
+ }, {
4546
+ key: "stopPeriodicLogUpload",
4547
+ value: function stopPeriodicLogUpload() {
4548
+ if (this.uploadLogsTimer) {
4549
+ clearTimeout(this.uploadLogsTimer);
4550
+ this.uploadLogsTimer = undefined;
4551
+ }
4552
+ }
4553
+
4382
4554
  /**
4383
4555
  * Removes remote audio, video and share streams from class instance's mediaProperties
4384
4556
  * @returns {undefined}
@@ -4413,7 +4585,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4413
4585
  }, {
4414
4586
  key: "closeRemoteStreams",
4415
4587
  value: function closeRemoteStreams() {
4416
- var _this22 = this;
4588
+ var _this24 = this;
4417
4589
  var _this$mediaProperties4 = this.mediaProperties,
4418
4590
  remoteAudioStream = _this$mediaProperties4.remoteAudioStream,
4419
4591
  remoteVideoStream = _this$mediaProperties4.remoteVideoStream,
@@ -4427,7 +4599,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4427
4599
  */
4428
4600
  // eslint-disable-next-line @typescript-eslint/no-shadow
4429
4601
  var triggerMediaStoppedEvent = function triggerMediaStoppedEvent(mediaType) {
4430
- _triggerProxy.default.trigger(_this22, {
4602
+ _triggerProxy.default.trigger(_this24, {
4431
4603
  file: 'meeting/index',
4432
4604
  function: 'closeRemoteStreams'
4433
4605
  }, _constants.EVENT_TRIGGERS.MEDIA_STOPPED, {
@@ -4735,7 +4907,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4735
4907
  }, {
4736
4908
  key: "setMercuryListener",
4737
4909
  value: function setMercuryListener() {
4738
- var _this23 = this;
4910
+ var _this25 = this;
4739
4911
  // Client will have a socket manager and handle reconnecting to mercury, when we reconnect to mercury
4740
4912
  // if the meeting has active peer connections, it should try to reconnect.
4741
4913
  // @ts-ignore
@@ -4743,33 +4915,33 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4743
4915
  _loggerProxy.default.logger.info('Meeting:index#setMercuryListener --> Web socket online');
4744
4916
 
4745
4917
  // Only send restore event when it was disconnected before and for connected later
4746
- if (!_this23.hasWebsocketConnected) {
4918
+ if (!_this25.hasWebsocketConnected) {
4747
4919
  // @ts-ignore
4748
- _this23.webex.internal.newMetrics.submitClientEvent({
4920
+ _this25.webex.internal.newMetrics.submitClientEvent({
4749
4921
  name: 'client.mercury.connection.restored',
4750
4922
  options: {
4751
- meetingId: _this23.id
4923
+ meetingId: _this25.id
4752
4924
  }
4753
4925
  });
4754
4926
  _metrics.default.sendBehavioralMetric(_constants2.default.MERCURY_CONNECTION_RESTORED, {
4755
- correlation_id: _this23.correlationId
4927
+ correlation_id: _this25.correlationId
4756
4928
  });
4757
4929
  }
4758
- _this23.hasWebsocketConnected = true;
4930
+ _this25.hasWebsocketConnected = true;
4759
4931
  });
4760
4932
 
4761
4933
  // @ts-ignore
4762
4934
  this.webex.internal.mercury.on(_constants.OFFLINE, function () {
4763
4935
  _loggerProxy.default.logger.error('Meeting:index#setMercuryListener --> Web socket offline');
4764
4936
  // @ts-ignore
4765
- _this23.webex.internal.newMetrics.submitClientEvent({
4937
+ _this25.webex.internal.newMetrics.submitClientEvent({
4766
4938
  name: 'client.mercury.connection.lost',
4767
4939
  options: {
4768
- meetingId: _this23.id
4940
+ meetingId: _this25.id
4769
4941
  }
4770
4942
  });
4771
4943
  _metrics.default.sendBehavioralMetric(_constants2.default.MERCURY_CONNECTION_FAILURE, {
4772
- correlation_id: _this23.correlationId
4944
+ correlation_id: _this25.correlationId
4773
4945
  });
4774
4946
  });
4775
4947
  }
@@ -4871,7 +5043,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4871
5043
  }, {
4872
5044
  key: "muteAudio",
4873
5045
  value: function muteAudio() {
4874
- var _this24 = this;
5046
+ var _this26 = this;
4875
5047
  if (!_util2.default.isUserInJoinedState(this.locusInfo)) {
4876
5048
  return _promise.default.reject(new _webexErrors.UserNotJoinedError());
4877
5049
  }
@@ -4887,22 +5059,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4887
5059
 
4888
5060
  // First, stop sending the local audio media
4889
5061
  return logRequest(this.audio.handleClientRequest(this, true).then(function () {
4890
- _util2.default.handleAudioLogging(_this24.mediaProperties.audioStream);
5062
+ _util2.default.handleAudioLogging(_this26.mediaProperties.audioStream);
4891
5063
  // @ts-ignore
4892
- _this24.webex.internal.newMetrics.submitClientEvent({
5064
+ _this26.webex.internal.newMetrics.submitClientEvent({
4893
5065
  name: 'client.muted',
4894
5066
  payload: {
4895
5067
  trigger: 'user-interaction',
4896
5068
  mediaType: 'audio'
4897
5069
  },
4898
5070
  options: {
4899
- meetingId: _this24.id
5071
+ meetingId: _this26.id
4900
5072
  }
4901
5073
  });
4902
5074
  }).catch(function (error) {
4903
5075
  _metrics.default.sendBehavioralMetric(_constants2.default.MUTE_AUDIO_FAILURE, {
4904
- correlation_id: _this24.correlationId,
4905
- locus_id: _this24.locusUrl.split('/').pop(),
5076
+ correlation_id: _this26.correlationId,
5077
+ locus_id: _this26.locusUrl.split('/').pop(),
4906
5078
  reason: error.message,
4907
5079
  stack: error.stack
4908
5080
  });
@@ -4921,7 +5093,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4921
5093
  }, {
4922
5094
  key: "unmuteAudio",
4923
5095
  value: function unmuteAudio() {
4924
- var _this25 = this;
5096
+ var _this27 = this;
4925
5097
  if (!_util2.default.isUserInJoinedState(this.locusInfo)) {
4926
5098
  return _promise.default.reject(new _webexErrors.UserNotJoinedError());
4927
5099
  }
@@ -4937,22 +5109,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4937
5109
 
4938
5110
  // First, send the control to unmute the participant on the server
4939
5111
  return logRequest(this.audio.handleClientRequest(this, false).then(function () {
4940
- _util2.default.handleAudioLogging(_this25.mediaProperties.audioStream);
5112
+ _util2.default.handleAudioLogging(_this27.mediaProperties.audioStream);
4941
5113
  // @ts-ignore
4942
- _this25.webex.internal.newMetrics.submitClientEvent({
5114
+ _this27.webex.internal.newMetrics.submitClientEvent({
4943
5115
  name: 'client.unmuted',
4944
5116
  payload: {
4945
5117
  trigger: 'user-interaction',
4946
5118
  mediaType: 'audio'
4947
5119
  },
4948
5120
  options: {
4949
- meetingId: _this25.id
5121
+ meetingId: _this27.id
4950
5122
  }
4951
5123
  });
4952
5124
  }).catch(function (error) {
4953
5125
  _metrics.default.sendBehavioralMetric(_constants2.default.UNMUTE_AUDIO_FAILURE, {
4954
- correlation_id: _this25.correlationId,
4955
- locus_id: _this25.locusUrl.split('/').pop(),
5126
+ correlation_id: _this27.correlationId,
5127
+ locus_id: _this27.locusUrl.split('/').pop(),
4956
5128
  reason: error.message,
4957
5129
  stack: error.stack
4958
5130
  });
@@ -4971,7 +5143,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4971
5143
  }, {
4972
5144
  key: "muteVideo",
4973
5145
  value: function muteVideo() {
4974
- var _this26 = this;
5146
+ var _this28 = this;
4975
5147
  if (!_util2.default.isUserInJoinedState(this.locusInfo)) {
4976
5148
  return _promise.default.reject(new _webexErrors.UserNotJoinedError());
4977
5149
  }
@@ -4985,22 +5157,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4985
5157
  return _promise.default.reject(new _parameter.default('no video control associated to the meeting'));
4986
5158
  }
4987
5159
  return logRequest(this.video.handleClientRequest(this, true).then(function () {
4988
- _util2.default.handleVideoLogging(_this26.mediaProperties.videoStream);
5160
+ _util2.default.handleVideoLogging(_this28.mediaProperties.videoStream);
4989
5161
  // @ts-ignore
4990
- _this26.webex.internal.newMetrics.submitClientEvent({
5162
+ _this28.webex.internal.newMetrics.submitClientEvent({
4991
5163
  name: 'client.muted',
4992
5164
  payload: {
4993
5165
  trigger: 'user-interaction',
4994
5166
  mediaType: 'video'
4995
5167
  },
4996
5168
  options: {
4997
- meetingId: _this26.id
5169
+ meetingId: _this28.id
4998
5170
  }
4999
5171
  });
5000
5172
  }).catch(function (error) {
5001
5173
  _metrics.default.sendBehavioralMetric(_constants2.default.MUTE_VIDEO_FAILURE, {
5002
- correlation_id: _this26.correlationId,
5003
- locus_id: _this26.locusUrl.split('/').pop(),
5174
+ correlation_id: _this28.correlationId,
5175
+ locus_id: _this28.locusUrl.split('/').pop(),
5004
5176
  reason: error.message,
5005
5177
  stack: error.stack
5006
5178
  });
@@ -5019,7 +5191,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5019
5191
  }, {
5020
5192
  key: "unmuteVideo",
5021
5193
  value: function unmuteVideo() {
5022
- var _this27 = this;
5194
+ var _this29 = this;
5023
5195
  if (!_util2.default.isUserInJoinedState(this.locusInfo)) {
5024
5196
  return _promise.default.reject(new _webexErrors.UserNotJoinedError());
5025
5197
  }
@@ -5033,22 +5205,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5033
5205
  return _promise.default.reject(new _parameter.default('no audio control associated to the meeting'));
5034
5206
  }
5035
5207
  return logRequest(this.video.handleClientRequest(this, false).then(function () {
5036
- _util2.default.handleVideoLogging(_this27.mediaProperties.videoStream);
5208
+ _util2.default.handleVideoLogging(_this29.mediaProperties.videoStream);
5037
5209
  // @ts-ignore
5038
- _this27.webex.internal.newMetrics.submitClientEvent({
5210
+ _this29.webex.internal.newMetrics.submitClientEvent({
5039
5211
  name: 'client.unmuted',
5040
5212
  payload: {
5041
5213
  trigger: 'user-interaction',
5042
5214
  mediaType: 'video'
5043
5215
  },
5044
5216
  options: {
5045
- meetingId: _this27.id
5217
+ meetingId: _this29.id
5046
5218
  }
5047
5219
  });
5048
5220
  }).catch(function (error) {
5049
5221
  _metrics.default.sendBehavioralMetric(_constants2.default.UNMUTE_VIDEO_FAILURE, {
5050
- correlation_id: _this27.correlationId,
5051
- locus_id: _this27.locusUrl.split('/').pop(),
5222
+ correlation_id: _this29.correlationId,
5223
+ locus_id: _this29.locusUrl.split('/').pop(),
5052
5224
  reason: error.message,
5053
5225
  stack: error.stack
5054
5226
  });
@@ -5078,7 +5250,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5078
5250
  key: "joinWithMedia",
5079
5251
  value: (function () {
5080
5252
  var _joinWithMedia = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee15() {
5081
- var _this28 = this;
5253
+ var _this30 = this;
5082
5254
  var options,
5083
5255
  mediaOptions,
5084
5256
  _options$joinOptions,
@@ -5118,34 +5290,30 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5118
5290
  _context15.prev = 9;
5119
5291
  forceTurnDiscovery = false;
5120
5292
  if (joinResponse) {
5121
- _context15.next = 36;
5293
+ _context15.next = 33;
5122
5294
  break;
5123
5295
  }
5124
5296
  _context15.next = 14;
5125
- return this.webex.meetings.reachability.getReachabilityResults();
5126
- case 14:
5127
- joinOptions.reachability = _context15.sent;
5128
- _context15.next = 17;
5129
5297
  return this.roap.generateTurnDiscoveryRequestMessage(this, true);
5130
- case 17:
5298
+ case 14:
5131
5299
  turnDiscoveryRequest = _context15.sent;
5132
5300
  turnDiscoverySkippedReason = turnDiscoveryRequest.turnDiscoverySkippedReason;
5133
5301
  joinOptions.roapMessage = turnDiscoveryRequest.roapMessage;
5134
5302
  _loggerProxy.default.logger.info('Meeting:index#joinWithMedia ---> calling join with joinOptions, ', joinOptions);
5135
- _context15.next = 23;
5303
+ _context15.next = 20;
5136
5304
  return this.join(joinOptions);
5137
- case 23:
5305
+ case 20:
5138
5306
  joinResponse = _context15.sent;
5139
5307
  joined = true;
5140
5308
 
5141
5309
  // if we sent out TURN discovery Roap message with join, process the TURN discovery response
5142
5310
  if (!joinOptions.roapMessage) {
5143
- _context15.next = 34;
5311
+ _context15.next = 31;
5144
5312
  break;
5145
5313
  }
5146
- _context15.next = 28;
5314
+ _context15.next = 25;
5147
5315
  return this.roap.handleTurnDiscoveryHttpResponse(this, joinResponse);
5148
- case 28:
5316
+ case 25:
5149
5317
  _yield$this$roap$hand = _context15.sent;
5150
5318
  turnServerInfo = _yield$this$roap$hand.turnServerInfo;
5151
5319
  turnDiscoverySkippedReason = _yield$this$roap$hand.turnDiscoverySkippedReason;
@@ -5154,20 +5322,20 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5154
5322
  if (turnServerInfo === undefined) {
5155
5323
  this.roap.abortTurnDiscovery();
5156
5324
  }
5157
- case 34:
5158
- _context15.next = 38;
5325
+ case 31:
5326
+ _context15.next = 35;
5159
5327
  break;
5160
- case 36:
5328
+ case 33:
5161
5329
  // This is a retry, when join succeeded but addMedia failed, so we'll just call addMedia() again,
5162
5330
  // but we need to ensure that it also does a new TURN discovery
5163
5331
  forceTurnDiscovery = true;
5164
5332
  joined = true;
5165
- case 38:
5166
- _context15.next = 40;
5333
+ case 35:
5334
+ _context15.next = 37;
5167
5335
  return this.addMediaInternal(function () {
5168
- return _this28.joinWithMediaRetryInfo.isRetry ? 'JOIN_MEETING_FINAL' : 'JOIN_MEETING_RETRY';
5336
+ return _this30.joinWithMediaRetryInfo.isRetry ? 'JOIN_MEETING_FINAL' : 'JOIN_MEETING_RETRY';
5169
5337
  }, turnServerInfo, forceTurnDiscovery, mediaOptions);
5170
- case 40:
5338
+ case 37:
5171
5339
  mediaResponse = _context15.sent;
5172
5340
  this.joinWithMediaRetryInfo = {
5173
5341
  isRetry: false,
@@ -5177,30 +5345,30 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5177
5345
  join: joinResponse,
5178
5346
  media: mediaResponse
5179
5347
  });
5180
- case 45:
5181
- _context15.prev = 45;
5348
+ case 42:
5349
+ _context15.prev = 42;
5182
5350
  _context15.t0 = _context15["catch"](9);
5183
5351
  _loggerProxy.default.logger.error('Meeting:index#joinWithMedia --> ', _context15.t0);
5184
5352
  this.roap.abortTurnDiscovery();
5185
5353
  if (!(joined && isRetry)) {
5186
- _context15.next = 59;
5354
+ _context15.next = 56;
5187
5355
  break;
5188
5356
  }
5189
- _context15.prev = 50;
5190
- _context15.next = 53;
5357
+ _context15.prev = 47;
5358
+ _context15.next = 50;
5191
5359
  return this.leave({
5192
5360
  resourceId: joinOptions === null || joinOptions === void 0 ? void 0 : joinOptions.resourceId,
5193
5361
  reason: 'joinWithMedia failure'
5194
5362
  });
5195
- case 53:
5196
- _context15.next = 59;
5363
+ case 50:
5364
+ _context15.next = 56;
5197
5365
  break;
5198
- case 55:
5199
- _context15.prev = 55;
5200
- _context15.t1 = _context15["catch"](50);
5366
+ case 52:
5367
+ _context15.prev = 52;
5368
+ _context15.t1 = _context15["catch"](47);
5201
5369
  _loggerProxy.default.logger.error('Meeting:index#joinWithMedia --> leave error', _context15.t1);
5202
5370
  leaveError = _context15.t1;
5203
- case 59:
5371
+ case 56:
5204
5372
  _metrics.default.sendBehavioralMetric(_constants2.default.JOIN_WITH_MEDIA_FAILURE, {
5205
5373
  correlation_id: this.correlationId,
5206
5374
  locus_id: (_this$locusUrl = this.locusUrl) === null || _this$locusUrl === void 0 ? void 0 : _this$locusUrl.split('/').pop(),
@@ -5221,24 +5389,24 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5221
5389
  shouldRetry = false;
5222
5390
  }
5223
5391
  if (!shouldRetry) {
5224
- _context15.next = 67;
5392
+ _context15.next = 64;
5225
5393
  break;
5226
5394
  }
5227
5395
  _loggerProxy.default.logger.warn('Meeting:index#joinWithMedia --> retrying call to joinWithMedia');
5228
5396
  this.joinWithMediaRetryInfo.isRetry = true;
5229
5397
  this.joinWithMediaRetryInfo.prevJoinResponse = joinResponse;
5230
5398
  return _context15.abrupt("return", this.joinWithMedia(options));
5231
- case 67:
5399
+ case 64:
5232
5400
  this.joinWithMediaRetryInfo = {
5233
5401
  isRetry: false,
5234
5402
  prevJoinResponse: undefined
5235
5403
  };
5236
5404
  throw _context15.t0;
5237
- case 69:
5405
+ case 66:
5238
5406
  case "end":
5239
5407
  return _context15.stop();
5240
5408
  }
5241
- }, _callee15, this, [[9, 45], [50, 55]]);
5409
+ }, _callee15, this, [[9, 42], [47, 52]]);
5242
5410
  }));
5243
5411
  function joinWithMedia() {
5244
5412
  return _joinWithMedia.apply(this, arguments);
@@ -5257,7 +5425,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5257
5425
  }, {
5258
5426
  key: "reconnect",
5259
5427
  value: function reconnect(options) {
5260
- var _this29 = this;
5428
+ var _this31 = this;
5261
5429
  _loggerProxy.default.logger.log("Meeting:index#reconnect --> attempting to reconnect meeting ".concat(this.id));
5262
5430
  if (!this.reconnectionManager || !this.reconnectionManager.reconnect) {
5263
5431
  return _promise.default.reject(new _parameter.default('Cannot reconnect, ReconnectionManager must first be defined.'));
@@ -5267,15 +5435,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5267
5435
  if (!_util2.default.isMediaEstablished(this.currentMediaStatus)) {
5268
5436
  return _promise.default.reject(new _parameter.default('Cannot reconnect, Media has not established to reconnect'));
5269
5437
  }
5438
+ this.cleanUpBeforeReconnection();
5270
5439
  return this.reconnectionManager.reconnect(options, /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee16() {
5271
5440
  return _regenerator.default.wrap(function _callee16$(_context16) {
5272
5441
  while (1) switch (_context16.prev = _context16.next) {
5273
5442
  case 0:
5274
5443
  _context16.next = 2;
5275
- return _this29.waitForRemoteSDPAnswer();
5444
+ return _this31.waitForRemoteSDPAnswer();
5276
5445
  case 2:
5277
5446
  _context16.next = 4;
5278
- return _this29.waitForMediaConnectionConnected();
5447
+ return _this31.waitForMediaConnectionConnected();
5279
5448
  case 4:
5280
5449
  case "end":
5281
5450
  return _context16.stop();
@@ -5289,7 +5458,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5289
5458
  return _promise.default.resolve();
5290
5459
  }
5291
5460
  _loggerProxy.default.logger.error('Meeting:index#reconnect --> Meeting reconnect failed', error);
5292
- _this29.uploadLogs({
5461
+ _this31.uploadLogs({
5293
5462
  file: 'meeting/index',
5294
5463
  function: 'reconnect'
5295
5464
  });
@@ -5336,19 +5505,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5336
5505
  }, {
5337
5506
  key: "setCaptionLanguage",
5338
5507
  value: function setCaptionLanguage(language) {
5339
- var _this30 = this;
5508
+ var _this32 = this;
5340
5509
  return new _promise.default(function (resolve, reject) {
5341
- if (!_this30.isTranscriptionSupported()) {
5510
+ if (!_this32.isTranscriptionSupported()) {
5342
5511
  _loggerProxy.default.logger.error('Meeting:index#setCaptionLanguage --> Webex Assistant is not enabled/supported');
5343
5512
  reject(new Error('Webex Assistant is not enabled/supported'));
5344
5513
  }
5345
5514
  try {
5346
5515
  var voiceaListenerCaptionUpdate = function voiceaListenerCaptionUpdate(payload) {
5347
5516
  // @ts-ignore
5348
- _this30.webex.internal.voicea.off(_internalPluginVoicea.EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, voiceaListenerCaptionUpdate);
5517
+ _this32.webex.internal.voicea.off(_internalPluginVoicea.EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, voiceaListenerCaptionUpdate);
5349
5518
  var statusCode = payload.statusCode;
5350
5519
  if (statusCode === 200) {
5351
- _this30.transcription.languageOptions = _objectSpread(_objectSpread({}, _this30.transcription.languageOptions), {}, {
5520
+ _this32.transcription.languageOptions = _objectSpread(_objectSpread({}, _this32.transcription.languageOptions), {}, {
5352
5521
  currentCaptionLanguage: language
5353
5522
  });
5354
5523
  resolve(language);
@@ -5357,9 +5526,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5357
5526
  }
5358
5527
  };
5359
5528
  // @ts-ignore
5360
- _this30.webex.internal.voicea.on(_internalPluginVoicea.EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, voiceaListenerCaptionUpdate);
5529
+ _this32.webex.internal.voicea.on(_internalPluginVoicea.EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, voiceaListenerCaptionUpdate);
5361
5530
  // @ts-ignore
5362
- _this30.webex.internal.voicea.requestLanguage(language);
5531
+ _this32.webex.internal.voicea.requestLanguage(language);
5363
5532
  } catch (error) {
5364
5533
  _loggerProxy.default.logger.error("Meeting:index#setCaptionLanguage --> ".concat(error));
5365
5534
  reject(error);
@@ -5375,23 +5544,23 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5375
5544
  }, {
5376
5545
  key: "setSpokenLanguage",
5377
5546
  value: function setSpokenLanguage(language) {
5378
- var _this31 = this;
5547
+ var _this33 = this;
5379
5548
  return new _promise.default(function (resolve, reject) {
5380
- if (!_this31.isTranscriptionSupported()) {
5549
+ if (!_this33.isTranscriptionSupported()) {
5381
5550
  _loggerProxy.default.logger.error('Meeting:index#setCaptionLanguage --> Webex Assistant is not enabled/supported');
5382
5551
  reject(new Error('Webex Assistant is not enabled/supported'));
5383
5552
  }
5384
- if (_this31.getCurUserType() !== 'host') {
5553
+ if (_this33.getCurUserType() !== 'host') {
5385
5554
  _loggerProxy.default.logger.error('Meeting:index#setSpokenLanguage --> Only host can set spoken language');
5386
5555
  reject(new Error('Only host can set spoken language'));
5387
5556
  }
5388
5557
  try {
5389
5558
  var voiceaListenerLanguageUpdate = function voiceaListenerLanguageUpdate(payload) {
5390
5559
  // @ts-ignore
5391
- _this31.webex.internal.voicea.off(_internalPluginVoicea.EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE, voiceaListenerLanguageUpdate);
5560
+ _this33.webex.internal.voicea.off(_internalPluginVoicea.EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE, voiceaListenerLanguageUpdate);
5392
5561
  var languageCode = payload.languageCode;
5393
5562
  if (languageCode) {
5394
- _this31.transcription.languageOptions = _objectSpread(_objectSpread({}, _this31.transcription.languageOptions), {}, {
5563
+ _this33.transcription.languageOptions = _objectSpread(_objectSpread({}, _this33.transcription.languageOptions), {}, {
5395
5564
  currentSpokenLanguage: languageCode
5396
5565
  });
5397
5566
  resolve(languageCode);
@@ -5401,10 +5570,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5401
5570
  };
5402
5571
 
5403
5572
  // @ts-ignore
5404
- _this31.webex.internal.voicea.on(_internalPluginVoicea.EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE, voiceaListenerLanguageUpdate);
5573
+ _this33.webex.internal.voicea.on(_internalPluginVoicea.EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE, voiceaListenerLanguageUpdate);
5405
5574
 
5406
5575
  // @ts-ignore
5407
- _this31.webex.internal.voicea.setSpokenLanguage(language);
5576
+ _this33.webex.internal.voicea.setSpokenLanguage(language);
5408
5577
  } catch (error) {
5409
5578
  _loggerProxy.default.logger.error("Meeting:index#setSpokenLanguage --> ".concat(error));
5410
5579
  reject(error);
@@ -5524,7 +5693,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5524
5693
  */
5525
5694
  function () {
5526
5695
  var _join = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee18() {
5527
- var _this32 = this;
5696
+ var _this34 = this;
5528
5697
  var options,
5529
5698
  errorMessage,
5530
5699
  error,
@@ -5670,62 +5839,62 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5670
5839
  return _context18.abrupt("return", _promise.default.reject(_context18.t0));
5671
5840
  case 51:
5672
5841
  return _context18.abrupt("return", _util2.default.joinMeetingOptions(this, options).then(function (join) {
5673
- _this32.meetingFiniteStateMachine.join();
5674
- _this32.setupLocusMediaRequest();
5842
+ _this34.meetingFiniteStateMachine.join();
5843
+ _this34.setupLocusMediaRequest();
5675
5844
 
5676
5845
  // @ts-ignore
5677
- _this32.webex.internal.device.meetingStarted();
5678
- (0, _classPrivateFieldSet2.default)(_this32, _isoLocalClientMeetingJoinTime, new Date().toISOString());
5846
+ _this34.webex.internal.device.meetingStarted();
5847
+ (0, _classPrivateFieldSet2.default)(_this34, _isoLocalClientMeetingJoinTime, new Date().toISOString());
5679
5848
  _loggerProxy.default.logger.log('Meeting:index#join --> Success');
5680
5849
  _metrics.default.sendBehavioralMetric(_constants2.default.JOIN_SUCCESS, {
5681
- correlation_id: _this32.correlationId
5850
+ correlation_id: _this34.correlationId
5682
5851
  });
5683
5852
  joinSuccess(join);
5684
- _this32.deferJoin = undefined;
5853
+ _this34.deferJoin = undefined;
5685
5854
  return join;
5686
5855
  }).catch(function (error) {
5687
- var _this32$meetingInfo, _error$error;
5688
- _this32.meetingFiniteStateMachine.fail(error);
5856
+ var _this34$meetingInfo, _error$error;
5857
+ _this34.meetingFiniteStateMachine.fail(error);
5689
5858
  _loggerProxy.default.logger.error('Meeting:index#join --> Failed', error);
5690
5859
 
5691
5860
  // @ts-ignore
5692
- _this32.webex.internal.newMetrics.submitClientEvent({
5861
+ _this34.webex.internal.newMetrics.submitClientEvent({
5693
5862
  name: 'client.locus.join.response',
5694
5863
  payload: {
5695
5864
  identifiers: {
5696
- meetingLookupUrl: (_this32$meetingInfo = _this32.meetingInfo) === null || _this32$meetingInfo === void 0 ? void 0 : _this32$meetingInfo.meetingLookupUrl
5865
+ meetingLookupUrl: (_this34$meetingInfo = _this34.meetingInfo) === null || _this34$meetingInfo === void 0 ? void 0 : _this34$meetingInfo.meetingLookupUrl
5697
5866
  }
5698
5867
  },
5699
5868
  options: {
5700
- meetingId: _this32.id,
5869
+ meetingId: _this34.id,
5701
5870
  rawError: error
5702
5871
  }
5703
5872
  });
5704
5873
 
5705
5874
  // TODO: change this to error codes and pre defined dictionary
5706
5875
  _metrics.default.sendBehavioralMetric(_constants2.default.JOIN_FAILURE, {
5707
- correlation_id: _this32.correlationId,
5876
+ correlation_id: _this34.correlationId,
5708
5877
  reason: (_error$error = error.error) === null || _error$error === void 0 ? void 0 : _error$error.message,
5709
5878
  stack: error.stack
5710
5879
  });
5711
5880
 
5712
5881
  // Upload logs on join Failure
5713
- _triggerProxy.default.trigger(_this32, {
5882
+ _triggerProxy.default.trigger(_this34, {
5714
5883
  file: 'meeting/index',
5715
5884
  function: 'join'
5716
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this32);
5885
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this34);
5717
5886
  joinFailed(error);
5718
- _this32.deferJoin = undefined;
5887
+ _this34.deferJoin = undefined;
5719
5888
  return _promise.default.reject(error);
5720
5889
  }).then(function (join) {
5721
5890
  // @ts-ignore - config coming from registerPlugin
5722
- if (_this32.config.enableAutomaticLLM) {
5891
+ if (_this34.config.enableAutomaticLLM) {
5723
5892
  // @ts-ignore
5724
- _this32.webex.internal.llm.on('online', _this32.handleLLMOnline);
5725
- _this32.updateLLMConnection().catch(function (error) {
5893
+ _this34.webex.internal.llm.on('online', _this34.handleLLMOnline);
5894
+ _this34.updateLLMConnection().catch(function (error) {
5726
5895
  _loggerProxy.default.logger.error('Meeting:index#join --> Transcription Socket Connection Failed', error);
5727
5896
  _metrics.default.sendBehavioralMetric(_constants2.default.LLM_CONNECTION_AFTER_JOIN_FAILURE, {
5728
- correlation_id: _this32.correlationId,
5897
+ correlation_id: _this34.correlationId,
5729
5898
  reason: error === null || error === void 0 ? void 0 : error.message,
5730
5899
  stack: error.stack
5731
5900
  });
@@ -5757,7 +5926,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5757
5926
  key: "updateLLMConnection",
5758
5927
  value: (function () {
5759
5928
  var _updateLLMConnection = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee19() {
5760
- var _this33 = this;
5929
+ var _this35 = this;
5761
5930
  var _this$locusInfo6, url, _this$locusInfo6$info, _this$locusInfo6$info2, datachannelUrl, isJoined;
5762
5931
  return _regenerator.default.wrap(function _callee19$(_context19) {
5763
5932
  while (1) switch (_context19.prev = _context19.next) {
@@ -5793,9 +5962,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5793
5962
  case 10:
5794
5963
  return _context19.abrupt("return", this.webex.internal.llm.registerAndConnect(url, datachannelUrl).then(function (registerAndConnectResult) {
5795
5964
  // @ts-ignore - Fix type
5796
- _this33.webex.internal.llm.off('event:relay.event', _this33.processRelayEvent);
5965
+ _this35.webex.internal.llm.off('event:relay.event', _this35.processRelayEvent);
5797
5966
  // @ts-ignore - Fix type
5798
- _this33.webex.internal.llm.on('event:relay.event', _this33.processRelayEvent);
5967
+ _this35.webex.internal.llm.on('event:relay.event', _this35.processRelayEvent);
5799
5968
  _loggerProxy.default.logger.info('Meeting:index#updateLLMConnection --> enabled to receive relay events!');
5800
5969
  return _promise.default.resolve(registerAndConnectResult);
5801
5970
  }));
@@ -5849,7 +6018,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5849
6018
  }, {
5850
6019
  key: "dialInPstn",
5851
6020
  value: function dialInPstn() {
5852
- var _this34 = this;
6021
+ var _this36 = this;
5853
6022
  if (this.isPhoneProvisioned(this.dialInDeviceStatus)) return _promise.default.resolve(); // prevent multiple dial in devices from being provisioned
5854
6023
 
5855
6024
  var correlationId = this.correlationId,
@@ -5865,10 +6034,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5865
6034
  }).catch(function (error) {
5866
6035
  var _error$error2;
5867
6036
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_DIAL_IN_FAILURE, {
5868
- correlation_id: _this34.correlationId,
5869
- dial_in_url: _this34.dialInUrl,
6037
+ correlation_id: _this36.correlationId,
6038
+ dial_in_url: _this36.dialInUrl,
5870
6039
  locus_id: locusUrl.split('/').pop(),
5871
- client_url: _this34.deviceUrl,
6040
+ client_url: _this36.deviceUrl,
5872
6041
  reason: (_error$error2 = error.error) === null || _error$error2 === void 0 ? void 0 : _error$error2.message,
5873
6042
  stack: error.stack
5874
6043
  });
@@ -5886,7 +6055,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5886
6055
  }, {
5887
6056
  key: "dialOutPstn",
5888
6057
  value: function dialOutPstn(phoneNumber) {
5889
- var _this35 = this;
6058
+ var _this37 = this;
5890
6059
  if (this.isPhoneProvisioned(this.dialOutDeviceStatus)) return _promise.default.resolve(); // prevent multiple dial out devices from being provisioned
5891
6060
 
5892
6061
  var correlationId = this.correlationId,
@@ -5903,10 +6072,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5903
6072
  }).catch(function (error) {
5904
6073
  var _error$error3;
5905
6074
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_DIAL_OUT_FAILURE, {
5906
- correlation_id: _this35.correlationId,
5907
- dial_out_url: _this35.dialOutUrl,
6075
+ correlation_id: _this37.correlationId,
6076
+ dial_out_url: _this37.dialOutUrl,
5908
6077
  locus_id: locusUrl.split('/').pop(),
5909
- client_url: _this35.deviceUrl,
6078
+ client_url: _this37.deviceUrl,
5910
6079
  reason: (_error$error3 = error.error) === null || _error$error3 === void 0 ? void 0 : _error$error3.message,
5911
6080
  stack: error.stack
5912
6081
  });
@@ -5937,7 +6106,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5937
6106
  }, {
5938
6107
  key: "moveTo",
5939
6108
  value: function moveTo(resourceId) {
5940
- var _this36 = this;
6109
+ var _this38 = this;
5941
6110
  if (!resourceId) {
5942
6111
  throw new _parameter.default('Cannot move call without a resourceId.');
5943
6112
  }
@@ -5981,12 +6150,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5981
6150
  while (1) switch (_context20.prev = _context20.next) {
5982
6151
  case 0:
5983
6152
  _context20.prev = 0;
5984
- if (!(_this36.screenShareFloorState === ScreenShareFloorStatus.GRANTED)) {
6153
+ if (!(_this38.screenShareFloorState === ScreenShareFloorStatus.GRANTED)) {
5985
6154
  _context20.next = 4;
5986
6155
  break;
5987
6156
  }
5988
6157
  _context20.next = 4;
5989
- return _this36.releaseScreenShareFloor();
6158
+ return _this38.releaseScreenShareFloor();
5990
6159
  case 4:
5991
6160
  mediaSettings = {
5992
6161
  mediaDirection: {
@@ -5998,37 +6167,37 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5998
6167
  receiveShare: true
5999
6168
  }
6000
6169
  };
6001
- _this36.mediaProperties.setMediaDirection(mediaSettings.mediaDirection);
6002
- _this36.mediaProperties.unsetRemoteMedia();
6170
+ _this38.mediaProperties.setMediaDirection(mediaSettings.mediaDirection);
6171
+ _this38.mediaProperties.unsetRemoteMedia();
6003
6172
 
6004
6173
  // 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
6174
  // once the device answers we close the old connection and create new media server connection with only share enabled
6006
- if (!_this36.statsAnalyzer) {
6175
+ if (!_this38.statsAnalyzer) {
6007
6176
  _context20.next = 10;
6008
6177
  break;
6009
6178
  }
6010
6179
  _context20.next = 10;
6011
- return _this36.statsAnalyzer.stopAnalyzer();
6180
+ return _this38.statsAnalyzer.stopAnalyzer();
6012
6181
  case 10:
6013
6182
  _context20.next = 12;
6014
- return _this36.closeRemoteStreams();
6183
+ return _this38.closeRemoteStreams();
6015
6184
  case 12:
6016
6185
  _context20.next = 14;
6017
- return _this36.closePeerConnections();
6186
+ return _this38.closePeerConnections();
6018
6187
  case 14:
6019
- _this36.cleanupLocalStreams();
6020
- _this36.unsetRemoteStreams();
6021
- _this36.unsetPeerConnections();
6022
- _this36.reconnectionManager.cleanUp();
6188
+ _this38.cleanupLocalStreams();
6189
+ _this38.unsetRemoteStreams();
6190
+ _this38.unsetPeerConnections();
6191
+ _this38.reconnectionManager.cleanUp();
6023
6192
  _context20.next = 20;
6024
- return _this36.addMedia({
6193
+ return _this38.addMedia({
6025
6194
  audioEnabled: false,
6026
6195
  videoEnabled: false,
6027
6196
  shareVideoEnabled: true
6028
6197
  });
6029
6198
  case 20:
6030
6199
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_TO_SUCCESS);
6031
- _this36.isMoveToInProgress = false;
6200
+ _this38.isMoveToInProgress = false;
6032
6201
  _context20.next = 29;
6033
6202
  break;
6034
6203
  case 24:
@@ -6036,12 +6205,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6036
6205
  _context20.t0 = _context20["catch"](0);
6037
6206
  _loggerProxy.default.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId', _context20.t0);
6038
6207
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_TO_FAILURE, {
6039
- correlation_id: _this36.correlationId,
6040
- locus_id: _this36.locusUrl.split('/').pop(),
6208
+ correlation_id: _this38.correlationId,
6209
+ locus_id: _this38.locusUrl.split('/').pop(),
6041
6210
  reason: _context20.t0.message,
6042
6211
  stack: _context20.t0.stack
6043
6212
  });
6044
- _this36.isMoveToInProgress = false;
6213
+ _this38.isMoveToInProgress = false;
6045
6214
  case 29:
6046
6215
  case "end":
6047
6216
  return _context20.stop();
@@ -6057,17 +6226,17 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6057
6226
  resourceId: resourceId,
6058
6227
  moveToResource: true
6059
6228
  }).then(function () {
6060
- _this36.meetingFiniteStateMachine.join();
6229
+ _this38.meetingFiniteStateMachine.join();
6061
6230
  }).catch(function (error) {
6062
- _this36.meetingFiniteStateMachine.fail(error);
6231
+ _this38.meetingFiniteStateMachine.fail(error);
6063
6232
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_TO_FAILURE, {
6064
- correlation_id: _this36.correlationId,
6065
- locus_id: _this36.locusUrl.split('/').pop(),
6233
+ correlation_id: _this38.correlationId,
6234
+ locus_id: _this38.locusUrl.split('/').pop(),
6066
6235
  reason: error.message,
6067
6236
  stack: error.stack
6068
6237
  });
6069
6238
  _loggerProxy.default.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId', error);
6070
- _this36.isMoveToInProgress = false;
6239
+ _this38.isMoveToInProgress = false;
6071
6240
  return _promise.default.reject(error);
6072
6241
  });
6073
6242
  }
@@ -6082,7 +6251,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6082
6251
  }, {
6083
6252
  key: "moveFrom",
6084
6253
  value: function moveFrom(resourceId) {
6085
- var _this37 = this;
6254
+ var _this39 = this;
6086
6255
  // On moveFrom ask the developer to re capture it moveFrom then updateMedia
6087
6256
  if (!resourceId) {
6088
6257
  throw new _parameter.default('Cannot move call without a resourceId.');
@@ -6097,19 +6266,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6097
6266
  }
6098
6267
  });
6099
6268
  return _util2.default.joinMeetingOptions(this).then(function () {
6100
- return _util2.default.leaveMeeting(_this37, {
6269
+ return _util2.default.leaveMeeting(_this39, {
6101
6270
  resourceId: resourceId,
6102
6271
  correlationId: oldCorrelationId,
6103
6272
  moveMeeting: true
6104
6273
  }).then(function () {
6105
- _this37.resourceId = '';
6274
+ _this39.resourceId = '';
6106
6275
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_FROM_SUCCESS);
6107
6276
  });
6108
6277
  }).catch(function (error) {
6109
- _this37.meetingFiniteStateMachine.fail(error);
6278
+ _this39.meetingFiniteStateMachine.fail(error);
6110
6279
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_FROM_FAILURE, {
6111
- correlation_id: _this37.correlationId,
6112
- locus_id: _this37.locusUrl.split('/').pop(),
6280
+ correlation_id: _this39.correlationId,
6281
+ locus_id: _this39.locusUrl.split('/').pop(),
6113
6282
  reason: error.message,
6114
6283
  stack: error.stack
6115
6284
  });
@@ -6222,9 +6391,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6222
6391
  }, {
6223
6392
  key: "forwardEvent",
6224
6393
  value: function forwardEvent(eventEmitter, eventTypeToForward, meetingEventType) {
6225
- var _this38 = this;
6394
+ var _this40 = this;
6226
6395
  eventEmitter.on(eventTypeToForward, function (data) {
6227
- return _triggerProxy.default.trigger(_this38, {
6396
+ return _triggerProxy.default.trigger(_this40, {
6228
6397
  file: 'meetings',
6229
6398
  function: 'addMedia'
6230
6399
  }, meetingEventType, data);
@@ -6411,7 +6580,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6411
6580
  */
6412
6581
  function () {
6413
6582
  var _waitForRemoteSDPAnswer = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee24() {
6414
- var _this39 = this;
6583
+ var _this41 = this;
6415
6584
  var LOG_HEADER, deferSDPAnswer;
6416
6585
  return _regenerator.default.wrap(function _callee24$(_context24) {
6417
6586
  while (1) switch (_context24.prev = _context24.next) {
@@ -6428,18 +6597,18 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6428
6597
  this.sdpResponseTimer = setTimeout(function () {
6429
6598
  _loggerProxy.default.logger.warn("".concat(LOG_HEADER, " timeout! no REMOTE SDP ANSWER received within ").concat(_constants.ROAP_OFFER_ANSWER_EXCHANGE_TIMEOUT / 1000, " seconds"));
6430
6599
  // @ts-ignore
6431
- _this39.webex.internal.newMetrics.submitClientEvent({
6600
+ _this41.webex.internal.newMetrics.submitClientEvent({
6432
6601
  name: 'client.media-engine.remote-sdp-received',
6433
6602
  payload: {
6434
6603
  canProceed: false,
6435
6604
  errors: [
6436
6605
  // @ts-ignore
6437
- _this39.webex.internal.newMetrics.callDiagnosticMetrics.getErrorPayloadForClientErrorCode({
6606
+ _this41.webex.internal.newMetrics.callDiagnosticMetrics.getErrorPayloadForClientErrorCode({
6438
6607
  clientErrorCode: _internalPluginMetrics.CALL_DIAGNOSTIC_CONFIG.MISSING_ROAP_ANSWER_CLIENT_CODE
6439
6608
  })]
6440
6609
  },
6441
6610
  options: {
6442
- meetingId: _this39.id,
6611
+ meetingId: _this41.id,
6443
6612
  rawError: new Error('Timeout waiting for SDP answer')
6444
6613
  }
6445
6614
  });
@@ -6825,6 +6994,43 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6825
6994
  return _cleanUpBeforeRetryWithTurnServer.apply(this, arguments);
6826
6995
  }
6827
6996
  return cleanUpBeforeRetryWithTurnServer;
6997
+ }())
6998
+ }, {
6999
+ key: "cleanUpBeforeReconnection",
7000
+ value: function () {
7001
+ var _cleanUpBeforeReconnection = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee32() {
7002
+ return _regenerator.default.wrap(function _callee32$(_context32) {
7003
+ while (1) switch (_context32.prev = _context32.next) {
7004
+ case 0:
7005
+ _context32.prev = 0;
7006
+ _context32.next = 3;
7007
+ return this.forceSendStatsReport({
7008
+ callFrom: 'cleanUpBeforeReconnection'
7009
+ });
7010
+ case 3:
7011
+ if (!this.statsAnalyzer) {
7012
+ _context32.next = 6;
7013
+ break;
7014
+ }
7015
+ _context32.next = 6;
7016
+ return this.statsAnalyzer.stopAnalyzer();
7017
+ case 6:
7018
+ _context32.next = 11;
7019
+ break;
7020
+ case 8:
7021
+ _context32.prev = 8;
7022
+ _context32.t0 = _context32["catch"](0);
7023
+ _loggerProxy.default.logger.error('Meeting:index#cleanUpBeforeReconnection --> Error during cleanup: ', _context32.t0);
7024
+ case 11:
7025
+ case "end":
7026
+ return _context32.stop();
7027
+ }
7028
+ }, _callee32, this, [[0, 8]]);
7029
+ }));
7030
+ function cleanUpBeforeReconnection() {
7031
+ return _cleanUpBeforeReconnection.apply(this, arguments);
7032
+ }
7033
+ return cleanUpBeforeReconnection;
6828
7034
  }()
6829
7035
  /**
6830
7036
  * Creates an instance of LocusMediaRequest for this meeting - it is needed for doing any calls
@@ -6832,7 +7038,6 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6832
7038
  *
6833
7039
  * @returns {void}
6834
7040
  */
6835
- )
6836
7041
  }, {
6837
7042
  key: "setupLocusMediaRequest",
6838
7043
  value: function setupLocusMediaRequest() {
@@ -6867,10 +7072,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6867
7072
  }, {
6868
7073
  key: "addMedia",
6869
7074
  value: function addMedia() {
6870
- var _this40 = this;
7075
+ var _this42 = this;
6871
7076
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
6872
7077
  return this.addMediaInternal(function () {
6873
- return _this40.turnServerUsed ? 'JOIN_MEETING_FINAL' : 'JOIN_MEETING_RETRY';
7078
+ return _this42.turnServerUsed ? 'JOIN_MEETING_FINAL' : 'JOIN_MEETING_RETRY';
6874
7079
  }, undefined, false, options);
6875
7080
  }
6876
7081
 
@@ -6888,7 +7093,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6888
7093
  }, {
6889
7094
  key: "addMediaInternal",
6890
7095
  value: (function () {
6891
- var _addMediaInternal = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee32(icePhaseCallback, turnServerInfo, forceTurnDiscovery) {
7096
+ var _addMediaInternal = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee33(icePhaseCallback, turnServerInfo, forceTurnDiscovery) {
6892
7097
  var options,
6893
7098
  LOG_HEADER,
6894
7099
  localStreams,
@@ -6901,6 +7106,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6901
7106
  _options$shareVideoEn,
6902
7107
  shareVideoEnabled,
6903
7108
  remoteMediaManagerConfig,
7109
+ _options$bundlePolicy,
6904
7110
  bundlePolicy,
6905
7111
  _this$remoteMediaMana,
6906
7112
  _yield$this$mediaProp,
@@ -6935,35 +7141,35 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6935
7141
  _selectedCandidatePairChanges,
6936
7142
  _numTransports,
6937
7143
  _iceCandidateErrors,
6938
- _args32 = arguments;
6939
- return _regenerator.default.wrap(function _callee32$(_context32) {
6940
- while (1) switch (_context32.prev = _context32.next) {
7144
+ _args33 = arguments;
7145
+ return _regenerator.default.wrap(function _callee33$(_context33) {
7146
+ while (1) switch (_context33.prev = _context33.next) {
6941
7147
  case 0:
6942
- options = _args32.length > 3 && _args32[3] !== undefined ? _args32[3] : {};
7148
+ options = _args33.length > 3 && _args33[3] !== undefined ? _args33[3] : {};
6943
7149
  this.addMediaData.retriedWithTurnServer = false;
6944
7150
  this.addMediaData.icePhaseCallback = icePhaseCallback;
6945
7151
  this.hasMediaConnectionConnectedAtLeastOnce = false;
6946
7152
  LOG_HEADER = 'Meeting:index#addMedia -->';
6947
7153
  _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
7154
  if (!(options.allowMediaInLobby !== true && this.meetingState !== _constants.FULL_STATE.ACTIVE)) {
6949
- _context32.next = 8;
7155
+ _context33.next = 8;
6950
7156
  break;
6951
7157
  }
6952
7158
  throw new _webexErrors.MeetingNotActiveError();
6953
7159
  case 8:
6954
7160
  if (!_util2.default.isUserInLeftState(this.locusInfo)) {
6955
- _context32.next = 10;
7161
+ _context33.next = 10;
6956
7162
  break;
6957
7163
  }
6958
7164
  throw new _webexErrors.UserNotJoinedError();
6959
7165
  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;
7166
+ 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
7167
  this.allowMediaInLobby = options === null || options === void 0 ? void 0 : options.allowMediaInLobby;
6962
7168
 
6963
7169
  // If the user is unjoined or guest waiting in lobby dont allow the user to addMedia
6964
7170
  // @ts-ignore - isUserUnadmitted coming from SelfUtil
6965
7171
  if (!(this.isUserUnadmitted && !this.wirelessShare && !this.allowMediaInLobby)) {
6966
- _context32.next = 14;
7172
+ _context33.next = 14;
6967
7173
  break;
6968
7174
  }
6969
7175
  throw new _webexErrors.UserInLobbyError();
@@ -7006,45 +7212,45 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7006
7212
  });
7007
7213
  this.audio = (0, _muteState.createMuteState)(_constants.AUDIO, this, audioEnabled);
7008
7214
  this.video = (0, _muteState.createMuteState)(_constants.VIDEO, this, videoEnabled);
7009
- _context32.prev = 18;
7010
- _context32.next = 21;
7215
+ _context33.prev = 18;
7216
+ _context33.next = 21;
7011
7217
  return this.setUpLocalStreamReferences(localStreams);
7012
7218
  case 21:
7013
7219
  this.setMercuryListener();
7014
7220
  this.createStatsAnalyzer();
7015
- _context32.next = 25;
7221
+ _context33.next = 25;
7016
7222
  return this.establishMediaConnection(remoteMediaManagerConfig, bundlePolicy, forceTurnDiscovery, turnServerInfo);
7017
7223
  case 25:
7018
7224
  if (!(audioEnabled || videoEnabled)) {
7019
- _context32.next = 30;
7225
+ _context33.next = 30;
7020
7226
  break;
7021
7227
  }
7022
- _context32.next = 28;
7228
+ _context33.next = 28;
7023
7229
  return Meeting.handleDeviceLogging(audioEnabled, videoEnabled);
7024
7230
  case 28:
7025
- _context32.next = 31;
7231
+ _context33.next = 31;
7026
7232
  break;
7027
7233
  case 30:
7028
7234
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " device logging not required"));
7029
7235
  case 31:
7030
7236
  if (!this.mediaProperties.hasLocalShareStream()) {
7031
- _context32.next = 34;
7237
+ _context33.next = 34;
7032
7238
  break;
7033
7239
  }
7034
- _context32.next = 34;
7240
+ _context33.next = 34;
7035
7241
  return this.enqueueScreenShareFloorRequest();
7036
7242
  case 34:
7037
- _context32.next = 36;
7243
+ _context33.next = 36;
7038
7244
  return this.mediaProperties.getCurrentConnectionInfo();
7039
7245
  case 36:
7040
- _yield$this$mediaProp = _context32.sent;
7246
+ _yield$this$mediaProp = _context33.sent;
7041
7247
  connectionType = _yield$this$mediaProp.connectionType;
7042
7248
  selectedCandidatePairChanges = _yield$this$mediaProp.selectedCandidatePairChanges;
7043
7249
  numTransports = _yield$this$mediaProp.numTransports;
7044
- _context32.next = 42;
7250
+ _context33.next = 42;
7045
7251
  return this.webex.meetings.reachability.getReachabilityMetrics();
7046
7252
  case 42:
7047
- reachabilityStats = _context32.sent;
7253
+ reachabilityStats = _context33.sent;
7048
7254
  iceCandidateErrors = Object.fromEntries(this.iceCandidateErrors);
7049
7255
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_MEDIA_SUCCESS, _objectSpread(_objectSpread(_objectSpread({
7050
7256
  correlation_id: this.correlationId,
@@ -7069,31 +7275,32 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7069
7275
 
7070
7276
  // We can log ReceiveSlot SSRCs only after the SDP exchange, so doing it here:
7071
7277
  (_this$remoteMediaMana = this.remoteMediaManager) === null || _this$remoteMediaMana === void 0 ? void 0 : _this$remoteMediaMana.logAllReceiveSlots();
7072
- _context32.next = 68;
7278
+ this.startPeriodicLogUpload();
7279
+ _context33.next = 69;
7073
7280
  break;
7074
- 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);
7281
+ case 51:
7282
+ _context33.prev = 51;
7283
+ _context33.t0 = _context33["catch"](18);
7284
+ _loggerProxy.default.logger.error("".concat(LOG_HEADER, " failed to establish media connection: "), _context33.t0);
7078
7285
 
7079
7286
  // @ts-ignore
7080
- _context32.next = 55;
7287
+ _context33.next = 56;
7081
7288
  return this.webex.meetings.reachability.getReachabilityMetrics();
7082
- case 55:
7083
- reachabilityMetrics = _context32.sent;
7084
- _context32.next = 58;
7289
+ case 56:
7290
+ reachabilityMetrics = _context33.sent;
7291
+ _context33.next = 59;
7085
7292
  return this.mediaProperties.getCurrentConnectionInfo();
7086
- case 58:
7087
- _yield$this$mediaProp2 = _context32.sent;
7293
+ case 59:
7294
+ _yield$this$mediaProp2 = _context33.sent;
7088
7295
  _selectedCandidatePairChanges = _yield$this$mediaProp2.selectedCandidatePairChanges;
7089
7296
  _numTransports = _yield$this$mediaProp2.numTransports;
7090
7297
  _iceCandidateErrors = Object.fromEntries(this.iceCandidateErrors);
7091
7298
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_MEDIA_FAILURE, _objectSpread(_objectSpread(_objectSpread({
7092
7299
  correlation_id: this.correlationId,
7093
7300
  locus_id: this.locusUrl.split('/').pop(),
7094
- reason: _context32.t0.message,
7095
- stack: _context32.t0.stack,
7096
- code: _context32.t0.code,
7301
+ reason: _context33.t0.message,
7302
+ stack: _context33.t0.stack,
7303
+ code: _context33.t0.code,
7097
7304
  selectedCandidatePairChanges: _selectedCandidatePairChanges,
7098
7305
  numTransports: _numTransports,
7099
7306
  turnDiscoverySkippedReason: this.turnDiscoverySkippedReason,
@@ -7107,29 +7314,29 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7107
7314
  }, reachabilityMetrics), _iceCandidateErrors), {}, {
7108
7315
  iceCandidatesCount: this.iceCandidatesCount
7109
7316
  }));
7110
- _context32.next = 65;
7317
+ _context33.next = 66;
7111
7318
  return this.cleanUpOnAddMediaFailure();
7112
- case 65:
7319
+ case 66:
7113
7320
  // Upload logs on error while adding media
7114
7321
  _triggerProxy.default.trigger(this, {
7115
7322
  file: 'meeting/index',
7116
7323
  function: 'addMedia'
7117
7324
  }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, this);
7118
- if (_context32.t0 instanceof _internalMediaCore.Errors.SdpError) {
7325
+ if (_context33.t0 instanceof _internalMediaCore.Errors.SdpError) {
7119
7326
  this.leave({
7120
7327
  reason: _constants.MEETING_REMOVED_REASON.MEETING_CONNECTION_FAILED
7121
7328
  });
7122
7329
  }
7123
- throw _context32.t0;
7124
- case 68:
7125
- _context32.prev = 68;
7330
+ throw _context33.t0;
7331
+ case 69:
7332
+ _context33.prev = 69;
7126
7333
  this.addMediaData.icePhaseCallback = DEFAULT_ICE_PHASE_CALLBACK;
7127
- return _context32.finish(68);
7128
- case 71:
7334
+ return _context33.finish(69);
7335
+ case 72:
7129
7336
  case "end":
7130
- return _context32.stop();
7337
+ return _context33.stop();
7131
7338
  }
7132
- }, _callee32, this, [[18, 50, 68, 71]]);
7339
+ }, _callee33, this, [[18, 51, 69, 72]]);
7133
7340
  }));
7134
7341
  function addMediaInternal(_x32, _x33, _x34) {
7135
7342
  return _addMediaInternal.apply(this, arguments);
@@ -7161,7 +7368,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7161
7368
  * @memberof Meeting
7162
7369
  */
7163
7370
  function enqueueMediaUpdate(mediaUpdateType) {
7164
- var _this41 = this;
7371
+ var _this43 = this;
7165
7372
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
7166
7373
  var canUpdateMediaNow = this.canUpdateMedia();
7167
7374
  return new _promise.default(function (resolve, reject) {
@@ -7172,9 +7379,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7172
7379
  options: options
7173
7380
  };
7174
7381
  _loggerProxy.default.logger.log("Meeting:index#enqueueMediaUpdate --> enqueuing media update type=".concat(mediaUpdateType));
7175
- _this41.queuedMediaUpdates.push(queueItem);
7382
+ _this43.queuedMediaUpdates.push(queueItem);
7176
7383
  if (canUpdateMediaNow) {
7177
- _this41.processNextQueuedMediaUpdate();
7384
+ _this43.processNextQueuedMediaUpdate();
7178
7385
  }
7179
7386
  });
7180
7387
  }
@@ -7197,35 +7404,35 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7197
7404
  * @memberof Meeting
7198
7405
  */
7199
7406
  function () {
7200
- var _updateMedia = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee33(options) {
7407
+ var _updateMedia = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee34(options) {
7201
7408
  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) {
7409
+ return _regenerator.default.wrap(function _callee34$(_context34) {
7410
+ while (1) switch (_context34.prev = _context34.next) {
7204
7411
  case 0:
7205
7412
  this.checkMediaConnection();
7206
7413
  audioEnabled = options.audioEnabled, videoEnabled = options.videoEnabled, shareAudioEnabled = options.shareAudioEnabled, shareVideoEnabled = options.shareVideoEnabled;
7207
7414
  _loggerProxy.default.logger.log("Meeting:index#updateMedia --> called with options=".concat((0, _stringify.default)(options)));
7208
7415
  if (this.canUpdateMedia()) {
7209
- _context33.next = 5;
7416
+ _context34.next = 5;
7210
7417
  break;
7211
7418
  }
7212
- return _context33.abrupt("return", this.enqueueMediaUpdate(MEDIA_UPDATE_TYPE.UPDATE_MEDIA, options));
7419
+ return _context34.abrupt("return", this.enqueueMediaUpdate(MEDIA_UPDATE_TYPE.UPDATE_MEDIA, options));
7213
7420
  case 5:
7214
7421
  if (!this.isMultistream) {
7215
- _context33.next = 10;
7422
+ _context34.next = 10;
7216
7423
  break;
7217
7424
  }
7218
7425
  if (!(shareAudioEnabled !== undefined || shareVideoEnabled !== undefined)) {
7219
- _context33.next = 8;
7426
+ _context34.next = 8;
7220
7427
  break;
7221
7428
  }
7222
7429
  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
7430
  case 8:
7224
- _context33.next = 12;
7431
+ _context34.next = 12;
7225
7432
  break;
7226
7433
  case 10:
7227
7434
  if (!(shareAudioEnabled !== undefined)) {
7228
- _context33.next = 12;
7435
+ _context34.next = 12;
7229
7436
  break;
7230
7437
  }
7231
7438
  throw new Error('toggling shareAudioEnabled in a transcoded meeting is not supported as of now');
@@ -7250,18 +7457,18 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7250
7457
  this.mediaProperties.mediaDirection.receiveShare = !!(shareAudioEnabled || shareVideoEnabled);
7251
7458
  }
7252
7459
  if (this.isMultistream) {
7253
- _context33.next = 18;
7460
+ _context34.next = 18;
7254
7461
  break;
7255
7462
  }
7256
- _context33.next = 18;
7463
+ _context34.next = 18;
7257
7464
  return this.updateTranscodedMediaConnection();
7258
7465
  case 18:
7259
- return _context33.abrupt("return", undefined);
7466
+ return _context34.abrupt("return", undefined);
7260
7467
  case 19:
7261
7468
  case "end":
7262
- return _context33.stop();
7469
+ return _context34.stop();
7263
7470
  }
7264
- }, _callee33, this);
7471
+ }, _callee34, this);
7265
7472
  }));
7266
7473
  function updateMedia(_x35) {
7267
7474
  return _updateMedia.apply(this, arguments);
@@ -7279,7 +7486,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7279
7486
  }, {
7280
7487
  key: "acknowledge",
7281
7488
  value: function acknowledge(type) {
7282
- var _this42 = this;
7489
+ var _this44 = this;
7283
7490
  if (!type) {
7284
7491
  return _promise.default.reject(new _parameter.default('Type must be set to acknowledge the meeting.'));
7285
7492
  }
@@ -7291,12 +7498,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7291
7498
  }).then(function (response) {
7292
7499
  return _promise.default.resolve(response);
7293
7500
  }).then(function (response) {
7294
- _this42.meetingFiniteStateMachine.ring(type);
7501
+ _this44.meetingFiniteStateMachine.ring(type);
7295
7502
  // @ts-ignore
7296
- _this42.webex.internal.newMetrics.submitClientEvent({
7503
+ _this44.webex.internal.newMetrics.submitClientEvent({
7297
7504
  name: 'client.alert.displayed',
7298
7505
  options: {
7299
- meetingId: _this42.id
7506
+ meetingId: _this44.id
7300
7507
  }
7301
7508
  });
7302
7509
  return _promise.default.resolve({
@@ -7321,12 +7528,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7321
7528
  }, {
7322
7529
  key: "decline",
7323
7530
  value: function decline(reason) {
7324
- var _this43 = this;
7531
+ var _this45 = this;
7325
7532
  return _util2.default.declineMeeting(this, reason).then(function (decline) {
7326
- _this43.meetingFiniteStateMachine.decline();
7533
+ _this45.meetingFiniteStateMachine.decline();
7327
7534
  return _promise.default.resolve(decline);
7328
7535
  }).catch(function (error) {
7329
- _this43.meetingFiniteStateMachine.fail(error);
7536
+ _this45.meetingFiniteStateMachine.fail(error);
7330
7537
  return _promise.default.reject(error);
7331
7538
  });
7332
7539
  }
@@ -7377,7 +7584,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7377
7584
  }, {
7378
7585
  key: "leave",
7379
7586
  value: function leave() {
7380
- var _this44 = this;
7587
+ var _this46 = this;
7381
7588
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
7382
7589
  var leaveReason = options.reason || _constants.MEETING_REMOVED_REASON.CLIENT_LEAVE_REQUEST;
7383
7590
 
@@ -7389,7 +7596,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7389
7596
  var payload = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
7390
7597
  return (
7391
7598
  // @ts-ignore
7392
- _this44.webex.internal.newMetrics.submitClientEvent({
7599
+ _this46.webex.internal.newMetrics.submitClientEvent({
7393
7600
  name: 'client.call.leave',
7394
7601
  payload: _objectSpread({
7395
7602
  trigger: 'user-interaction',
@@ -7397,7 +7604,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7397
7604
  leaveReason: options.clientEventLeaveReason
7398
7605
  }, payload),
7399
7606
  options: {
7400
- meetingId: _this44.id
7607
+ meetingId: _this46.id
7401
7608
  }
7402
7609
  })
7403
7610
  );
@@ -7406,24 +7613,24 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7406
7613
  return _util2.default.leaveMeeting(this, options).then(function (leave) {
7407
7614
  // CA team recommends submitting this *after* locus /leave
7408
7615
  submitLeaveMetric();
7409
- _this44.meetingFiniteStateMachine.leave();
7410
- _this44.clearMeetingData();
7616
+ _this46.meetingFiniteStateMachine.leave();
7617
+ _this46.clearMeetingData();
7411
7618
 
7412
7619
  // upload logs on leave irrespective of meeting delete
7413
- _triggerProxy.default.trigger(_this44, {
7620
+ _triggerProxy.default.trigger(_this46, {
7414
7621
  file: 'meeting/index',
7415
7622
  function: 'leave'
7416
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this44);
7623
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this46);
7417
7624
 
7418
7625
  // TODO: more testing before we remove this code, we are not sure the scenarios for destroy here
7419
- if (_this44.wirelessShare || _this44.guest) {
7626
+ if (_this46.wirelessShare || _this46.guest) {
7420
7627
  // If screen sharing clean the meeting object
7421
- _triggerProxy.default.trigger(_this44, {
7628
+ _triggerProxy.default.trigger(_this46, {
7422
7629
  file: 'meeting/index',
7423
7630
  function: 'leave'
7424
7631
  }, _constants.EVENTS.DESTROY_MEETING, {
7425
7632
  reason: options.reason,
7426
- meetingId: _this44.id
7633
+ meetingId: _this46.id
7427
7634
  });
7428
7635
  }
7429
7636
  _loggerProxy.default.logger.log('Meeting:index#leave --> LEAVE REASON ', leaveReason);
@@ -7440,16 +7647,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7440
7647
  shownToUser: false
7441
7648
  }]
7442
7649
  });
7443
- _this44.meetingFiniteStateMachine.fail(error);
7650
+ _this46.meetingFiniteStateMachine.fail(error);
7444
7651
  _loggerProxy.default.logger.error('Meeting:index#leave --> Failed to leave ', error);
7445
7652
  // upload logs on leave irrespective of meeting delete
7446
- _triggerProxy.default.trigger(_this44, {
7653
+ _triggerProxy.default.trigger(_this46, {
7447
7654
  file: 'meeting/index',
7448
7655
  function: 'leave'
7449
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this44);
7656
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this46);
7450
7657
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_LEAVE_FAILURE, {
7451
- correlation_id: _this44.correlationId,
7452
- locus_id: _this44.locusUrl.split('/').pop(),
7658
+ correlation_id: _this46.correlationId,
7659
+ locus_id: _this46.locusUrl.split('/').pop(),
7453
7660
  reason: error.message,
7454
7661
  stack: error.stack,
7455
7662
  code: error.code
@@ -7469,7 +7676,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7469
7676
  }, {
7470
7677
  key: "startWhiteboardShare",
7471
7678
  value: function startWhiteboardShare(channelUrl, resourceToken) {
7472
- var _this45 = this;
7679
+ var _this47 = this;
7473
7680
  var whiteboard = this.locusInfo.mediaShares.find(function (element) {
7474
7681
  return element.name === 'whiteboard';
7475
7682
  });
@@ -7498,13 +7705,13 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7498
7705
  body.resourceToken = resourceToken;
7499
7706
  }
7500
7707
  return this.meetingRequest.changeMeetingFloor(body).then(function () {
7501
- _this45.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
7708
+ _this47.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
7502
7709
  return _promise.default.resolve();
7503
7710
  }).catch(function (error) {
7504
7711
  _loggerProxy.default.logger.error('Meeting:index#startWhiteboardShare --> Error ', error);
7505
7712
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_START_WHITEBOARD_SHARE_FAILURE, {
7506
- correlation_id: _this45.correlationId,
7507
- locus_id: _this45.locusUrl.split('/').pop(),
7713
+ correlation_id: _this47.correlationId,
7714
+ locus_id: _this47.locusUrl.split('/').pop(),
7508
7715
  reason: error.message,
7509
7716
  stack: error.stack,
7510
7717
  board: {
@@ -7527,7 +7734,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7527
7734
  }, {
7528
7735
  key: "stopWhiteboardShare",
7529
7736
  value: function stopWhiteboardShare(channelUrl) {
7530
- var _this46 = this;
7737
+ var _this48 = this;
7531
7738
  var whiteboard = this.locusInfo.mediaShares.find(function (element) {
7532
7739
  return element.name === 'whiteboard';
7533
7740
  });
@@ -7550,8 +7757,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7550
7757
  }).catch(function (error) {
7551
7758
  _loggerProxy.default.logger.error('Meeting:index#stopWhiteboardShare --> Error ', error);
7552
7759
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_STOP_WHITEBOARD_SHARE_FAILURE, {
7553
- correlation_id: _this46.correlationId,
7554
- locus_id: _this46.locusUrl.split('/').pop(),
7760
+ correlation_id: _this48.correlationId,
7761
+ locus_id: _this48.locusUrl.split('/').pop(),
7555
7762
  reason: error.message,
7556
7763
  stack: error.stack,
7557
7764
  board: {
@@ -7573,7 +7780,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7573
7780
  }, {
7574
7781
  key: "requestScreenShareFloor",
7575
7782
  value: function requestScreenShareFloor() {
7576
- var _this47 = this;
7783
+ var _this49 = this;
7577
7784
  if (!this.mediaProperties.hasLocalShareStream() || !this.mediaProperties.mediaDirection.sendShare) {
7578
7785
  _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
7786
  this.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
@@ -7604,34 +7811,34 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7604
7811
  resourceUrl: this.resourceUrl,
7605
7812
  shareInstanceId: this.localShareInstanceId
7606
7813
  }).then(function () {
7607
- _this47.screenShareFloorState = ScreenShareFloorStatus.GRANTED;
7814
+ _this49.screenShareFloorState = ScreenShareFloorStatus.GRANTED;
7608
7815
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_SHARE_SUCCESS, {
7609
- correlation_id: _this47.correlationId,
7610
- locus_id: _this47.locusUrl.split('/').pop()
7816
+ correlation_id: _this49.correlationId,
7817
+ locus_id: _this49.locusUrl.split('/').pop()
7611
7818
  });
7612
7819
  return _promise.default.resolve();
7613
7820
  }).catch(function (error) {
7614
7821
  _loggerProxy.default.logger.error('Meeting:index#share --> Error ', error);
7615
7822
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_SHARE_FAILURE, {
7616
- correlation_id: _this47.correlationId,
7617
- locus_id: _this47.locusUrl.split('/').pop(),
7823
+ correlation_id: _this49.correlationId,
7824
+ locus_id: _this49.locusUrl.split('/').pop(),
7618
7825
  reason: error.message,
7619
7826
  stack: error.stack
7620
7827
  });
7621
7828
 
7622
7829
  // @ts-ignore
7623
- _this47.webex.internal.newMetrics.submitClientEvent({
7830
+ _this49.webex.internal.newMetrics.submitClientEvent({
7624
7831
  name: 'client.share.floor-granted.local',
7625
7832
  payload: {
7626
7833
  mediaType: 'share',
7627
7834
  errors: _util2.default.getChangeMeetingFloorErrorPayload(error.message),
7628
- shareInstanceId: _this47.localShareInstanceId
7835
+ shareInstanceId: _this49.localShareInstanceId
7629
7836
  },
7630
7837
  options: {
7631
- meetingId: _this47.id
7838
+ meetingId: _this49.id
7632
7839
  }
7633
7840
  });
7634
- _this47.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
7841
+ _this49.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
7635
7842
  return _promise.default.reject(error);
7636
7843
  });
7637
7844
  }
@@ -7654,10 +7861,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7654
7861
  }, {
7655
7862
  key: "requestScreenShareFloorIfPending",
7656
7863
  value: function requestScreenShareFloorIfPending() {
7657
- var _this48 = this;
7864
+ var _this50 = this;
7658
7865
  if (this.floorGrantPending && this.state === _constants.MEETING_STATE.STATES.JOINED) {
7659
7866
  this.requestScreenShareFloor().then(function () {
7660
- _this48.floorGrantPending = false;
7867
+ _this50.floorGrantPending = false;
7661
7868
  });
7662
7869
  }
7663
7870
  }
@@ -7671,7 +7878,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7671
7878
  }, {
7672
7879
  key: "releaseScreenShareFloor",
7673
7880
  value: function releaseScreenShareFloor() {
7674
- var _this49 = this;
7881
+ var _this51 = this;
7675
7882
  var content = this.locusInfo.mediaShares.find(function (element) {
7676
7883
  return element.name === _constants.CONTENT;
7677
7884
  });
@@ -7706,8 +7913,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7706
7913
  }).catch(function (error) {
7707
7914
  _loggerProxy.default.logger.error('Meeting:index#releaseScreenShareFloor --> Error ', error);
7708
7915
  _metrics.default.sendBehavioralMetric(_constants2.default.STOP_FLOOR_REQUEST_FAILURE, {
7709
- correlation_id: _this49.correlationId,
7710
- locus_id: _this49.locusUrl.split('/').pop(),
7916
+ correlation_id: _this51.correlationId,
7917
+ locus_id: _this51.locusUrl.split('/').pop(),
7711
7918
  reason: error.message,
7712
7919
  stack: error.stack
7713
7920
  });
@@ -7763,13 +7970,14 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7763
7970
  * @param {boolean} mutedEnabled
7764
7971
  * @param {boolean} disallowUnmuteEnabled
7765
7972
  * @param {boolean} muteOnEntryEnabled
7973
+ * @param {array} roles
7766
7974
  * @public
7767
7975
  * @memberof Meeting
7768
7976
  */
7769
7977
  }, {
7770
7978
  key: "setMuteAll",
7771
- value: function setMuteAll(mutedEnabled, disallowUnmuteEnabled, muteOnEntryEnabled) {
7772
- return this.controlsOptionsManager.setMuteAll(mutedEnabled, disallowUnmuteEnabled, muteOnEntryEnabled);
7979
+ value: function setMuteAll(mutedEnabled, disallowUnmuteEnabled, muteOnEntryEnabled, roles) {
7980
+ return this.controlsOptionsManager.setMuteAll(mutedEnabled, disallowUnmuteEnabled, muteOnEntryEnabled, roles);
7773
7981
  }
7774
7982
 
7775
7983
  /**
@@ -7886,7 +8094,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7886
8094
  }, {
7887
8095
  key: "changeVideoLayout",
7888
8096
  value: function changeVideoLayout(layoutType) {
7889
- var _this50 = this;
8097
+ var _this52 = this;
7890
8098
  var renderInfo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
7891
8099
  var main = renderInfo.main,
7892
8100
  content = renderInfo.content;
@@ -7940,7 +8148,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7940
8148
  }
7941
8149
  this.lastVideoLayoutInfo = (0, _lodash.cloneDeep)(layoutInfo);
7942
8150
  this.locusInfo.once(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_LAYOUT_UPDATED, function (envelope) {
7943
- _triggerProxy.default.trigger(_this50, {
8151
+ _triggerProxy.default.trigger(_this52, {
7944
8152
  file: 'meeting/index',
7945
8153
  function: 'changeVideoLayout'
7946
8154
  }, _constants.EVENT_TRIGGERS.MEETING_CONTROLS_LAYOUT_UPDATE, {
@@ -8056,7 +8264,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8056
8264
  }, {
8057
8265
  key: "endMeetingForAll",
8058
8266
  value: function endMeetingForAll() {
8059
- var _this51 = this;
8267
+ var _this53 = this;
8060
8268
  // @ts-ignore
8061
8269
  this.webex.internal.newMetrics.submitClientEvent({
8062
8270
  name: 'client.call.leave',
@@ -8074,25 +8282,25 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8074
8282
  locus_id: this.locusId
8075
8283
  });
8076
8284
  return _util2.default.endMeetingForAll(this).then(function (end) {
8077
- _this51.meetingFiniteStateMachine.end();
8078
- _this51.clearMeetingData();
8285
+ _this53.meetingFiniteStateMachine.end();
8286
+ _this53.clearMeetingData();
8079
8287
  // upload logs on leave irrespective of meeting delete
8080
- _triggerProxy.default.trigger(_this51, {
8288
+ _triggerProxy.default.trigger(_this53, {
8081
8289
  file: 'meeting/index',
8082
8290
  function: 'endMeetingForAll'
8083
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this51);
8291
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this53);
8084
8292
  return end;
8085
8293
  }).catch(function (error) {
8086
- _this51.meetingFiniteStateMachine.fail(error);
8294
+ _this53.meetingFiniteStateMachine.fail(error);
8087
8295
  _loggerProxy.default.logger.error('Meeting:index#endMeetingForAll --> Failed to end meeting ', error);
8088
8296
  // upload logs on leave irrespective of meeting delete
8089
- _triggerProxy.default.trigger(_this51, {
8297
+ _triggerProxy.default.trigger(_this53, {
8090
8298
  file: 'meeting/index',
8091
8299
  function: 'endMeetingForAll'
8092
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this51);
8300
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this53);
8093
8301
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_END_ALL_FAILURE, {
8094
- correlation_id: _this51.correlationId,
8095
- locus_id: _this51.locusUrl.split('/').pop(),
8302
+ correlation_id: _this53.correlationId,
8303
+ locus_id: _this53.locusUrl.split('/').pop(),
8096
8304
  reason: error.message,
8097
8305
  stack: error.stack,
8098
8306
  code: error.code
@@ -8181,37 +8389,37 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8181
8389
  }, {
8182
8390
  key: "enableMusicMode",
8183
8391
  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) {
8392
+ var _enableMusicMode = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee35(shouldEnableMusicMode) {
8393
+ return _regenerator.default.wrap(function _callee35$(_context35) {
8394
+ while (1) switch (_context35.prev = _context35.next) {
8187
8395
  case 0:
8188
8396
  this.checkMediaConnection();
8189
8397
  if (this.isMultistream) {
8190
- _context34.next = 3;
8398
+ _context35.next = 3;
8191
8399
  break;
8192
8400
  }
8193
8401
  throw new Error('enableMusicMode() only supported with multistream');
8194
8402
  case 3:
8195
8403
  if (!shouldEnableMusicMode) {
8196
- _context34.next = 8;
8404
+ _context35.next = 8;
8197
8405
  break;
8198
8406
  }
8199
- _context34.next = 6;
8407
+ _context35.next = 6;
8200
8408
  return this.sendSlotManager.setCodecParameters(_internalMediaCore.MediaType.AudioMain, {
8201
8409
  maxaveragebitrate: '64000',
8202
8410
  maxplaybackrate: '48000'
8203
8411
  });
8204
8412
  case 6:
8205
- _context34.next = 10;
8413
+ _context35.next = 10;
8206
8414
  break;
8207
8415
  case 8:
8208
- _context34.next = 10;
8416
+ _context35.next = 10;
8209
8417
  return this.sendSlotManager.deleteCodecParameters(_internalMediaCore.MediaType.AudioMain, ['maxaveragebitrate', 'maxplaybackrate']);
8210
8418
  case 10:
8211
8419
  case "end":
8212
- return _context34.stop();
8420
+ return _context35.stop();
8213
8421
  }
8214
- }, _callee34, this);
8422
+ }, _callee35, this);
8215
8423
  }));
8216
8424
  function enableMusicMode(_x36) {
8217
8425
  return _enableMusicMode.apply(this, arguments);
@@ -8234,7 +8442,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8234
8442
  _this$mediaProperties41,
8235
8443
  _this$mediaProperties42,
8236
8444
  _this$mediaProperties43,
8237
- _this52 = this;
8445
+ _this54 = this;
8238
8446
  var LOG_HEADER = 'Meeting:index#updateTranscodedMediaConnection -->';
8239
8447
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " starting"));
8240
8448
  if (!this.canUpdateMedia()) {
@@ -8259,8 +8467,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8259
8467
  }).catch(function (error) {
8260
8468
  _loggerProxy.default.logger.error("".concat(LOG_HEADER, " Error: "), error);
8261
8469
  _metrics.default.sendBehavioralMetric(_constants2.default.UPDATE_MEDIA_FAILURE, {
8262
- correlation_id: _this52.correlationId,
8263
- locus_id: _this52.locusUrl.split('/').pop(),
8470
+ correlation_id: _this54.correlationId,
8471
+ locus_id: _this54.locusUrl.split('/').pop(),
8264
8472
  reason: error.message,
8265
8473
  stack: error.stack
8266
8474
  });
@@ -8304,25 +8512,25 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8304
8512
  }, {
8305
8513
  key: "publishStream",
8306
8514
  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) {
8515
+ var _publishStream = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee36(mediaType, stream) {
8516
+ return _regenerator.default.wrap(function _callee36$(_context36) {
8517
+ while (1) switch (_context36.prev = _context36.next) {
8310
8518
  case 0:
8311
8519
  if (stream) {
8312
- _context35.next = 2;
8520
+ _context36.next = 2;
8313
8521
  break;
8314
8522
  }
8315
- return _context35.abrupt("return");
8523
+ return _context36.abrupt("return");
8316
8524
  case 2:
8317
8525
  if (!this.mediaProperties.webrtcMediaConnection) {
8318
- _context35.next = 7;
8526
+ _context36.next = 7;
8319
8527
  break;
8320
8528
  }
8321
8529
  if (!(this.isMultistream && this.mediaProperties.webrtcMediaConnection)) {
8322
- _context35.next = 6;
8530
+ _context36.next = 6;
8323
8531
  break;
8324
8532
  }
8325
- _context35.next = 6;
8533
+ _context36.next = 6;
8326
8534
  return this.sendSlotManager.publishStream(mediaType, stream);
8327
8535
  case 6:
8328
8536
  this.emitPublishStateChangeEvent({
@@ -8333,9 +8541,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8333
8541
  });
8334
8542
  case 7:
8335
8543
  case "end":
8336
- return _context35.stop();
8544
+ return _context36.stop();
8337
8545
  }
8338
- }, _callee35, this);
8546
+ }, _callee36, this);
8339
8547
  }));
8340
8548
  function publishStream(_x37, _x38) {
8341
8549
  return _publishStream.apply(this, arguments);
@@ -8353,21 +8561,21 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8353
8561
  }, {
8354
8562
  key: "unpublishStream",
8355
8563
  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) {
8564
+ var _unpublishStream = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee37(mediaType, stream) {
8565
+ return _regenerator.default.wrap(function _callee37$(_context37) {
8566
+ while (1) switch (_context37.prev = _context37.next) {
8359
8567
  case 0:
8360
8568
  if (stream) {
8361
- _context36.next = 2;
8569
+ _context37.next = 2;
8362
8570
  break;
8363
8571
  }
8364
- return _context36.abrupt("return");
8572
+ return _context37.abrupt("return");
8365
8573
  case 2:
8366
8574
  if (!(this.isMultistream && this.mediaProperties.webrtcMediaConnection)) {
8367
- _context36.next = 5;
8575
+ _context37.next = 5;
8368
8576
  break;
8369
8577
  }
8370
- _context36.next = 5;
8578
+ _context37.next = 5;
8371
8579
  return this.sendSlotManager.unpublishStream(mediaType);
8372
8580
  case 5:
8373
8581
  this.emitPublishStateChangeEvent({
@@ -8378,9 +8586,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8378
8586
  });
8379
8587
  case 6:
8380
8588
  case "end":
8381
- return _context36.stop();
8589
+ return _context37.stop();
8382
8590
  }
8383
- }, _callee36, this);
8591
+ }, _callee37, this);
8384
8592
  }));
8385
8593
  function unpublishStream(_x39, _x40) {
8386
8594
  return _unpublishStream.apply(this, arguments);
@@ -8397,67 +8605,92 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8397
8605
  }, {
8398
8606
  key: "publishStreams",
8399
8607
  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) {
8608
+ var _publishStreams = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee38(streams) {
8609
+ var _streams$screenShare, _streams$screenShare2, _streams$screenShare3, _streams$screenShare4, _streams$screenShare5, _streams$screenShare6;
8610
+ var streamChecks, _i, _streamChecks, _streamChecks$_i, stream, name, floorRequestNeeded, _streams$screenShare7;
8611
+ return _regenerator.default.wrap(function _callee38$(_context38) {
8612
+ while (1) switch (_context38.prev = _context38.next) {
8405
8613
  case 0:
8614
+ _loggerProxy.default.logger.info("Meeting:index#publishStreams --> called with: ".concat((0, _stringify.default)(streams)));
8406
8615
  this.checkMediaConnection();
8407
8616
  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;
8617
+ _context38.next = 4;
8409
8618
  break;
8410
8619
  }
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;
8620
+ return _context38.abrupt("return");
8621
+ case 4:
8622
+ streamChecks = [{
8623
+ stream: streams === null || streams === void 0 ? void 0 : streams.microphone,
8624
+ name: 'microphone'
8625
+ }, {
8626
+ stream: streams === null || streams === void 0 ? void 0 : streams.camera,
8627
+ name: 'camera'
8628
+ }, {
8629
+ stream: streams === null || streams === void 0 ? void 0 : (_streams$screenShare3 = streams.screenShare) === null || _streams$screenShare3 === void 0 ? void 0 : _streams$screenShare3.audio,
8630
+ name: 'screenShare audio'
8631
+ }, {
8632
+ stream: streams === null || streams === void 0 ? void 0 : (_streams$screenShare4 = streams.screenShare) === null || _streams$screenShare4 === void 0 ? void 0 : _streams$screenShare4.video,
8633
+ name: 'screenShare video'
8634
+ }];
8635
+ _i = 0, _streamChecks = streamChecks;
8636
+ case 6:
8637
+ if (!(_i < _streamChecks.length)) {
8638
+ _context38.next = 13;
8415
8639
  break;
8416
8640
  }
8417
- throw new Error("Attempted to publish stream with ended readyState, correlationId=".concat(this.correlationId));
8418
- case 5:
8641
+ _streamChecks$_i = _streamChecks[_i], stream = _streamChecks$_i.stream, name = _streamChecks$_i.name;
8642
+ if (!((stream === null || stream === void 0 ? void 0 : stream.readyState) === 'ended')) {
8643
+ _context38.next = 10;
8644
+ break;
8645
+ }
8646
+ throw new Error("Attempted to publish ".concat(name, " stream with ended readyState, correlationId=").concat(this.correlationId));
8647
+ case 10:
8648
+ _i++;
8649
+ _context38.next = 6;
8650
+ break;
8651
+ case 13:
8419
8652
  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;
8653
+ if (!(this.isMultistream && (_streams$screenShare5 = streams.screenShare) !== null && _streams$screenShare5 !== void 0 && _streams$screenShare5.audio)) {
8654
+ _context38.next = 18;
8422
8655
  break;
8423
8656
  }
8424
- _context37.next = 9;
8657
+ _context38.next = 17;
8425
8658
  return this.setLocalShareAudioStream(streams.screenShare.audio);
8426
- case 9:
8659
+ case 17:
8427
8660
  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;
8661
+ case 18:
8662
+ if (!((_streams$screenShare6 = streams.screenShare) !== null && _streams$screenShare6 !== void 0 && _streams$screenShare6.video)) {
8663
+ _context38.next = 22;
8431
8664
  break;
8432
8665
  }
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:
8666
+ _context38.next = 21;
8667
+ return this.setLocalShareVideoStream((_streams$screenShare7 = streams.screenShare) === null || _streams$screenShare7 === void 0 ? void 0 : _streams$screenShare7.video);
8668
+ case 21:
8436
8669
  floorRequestNeeded = this.screenShareFloorState === ScreenShareFloorStatus.RELEASED;
8437
- case 14:
8670
+ case 22:
8438
8671
  if (!streams.microphone) {
8439
- _context37.next = 17;
8672
+ _context38.next = 25;
8440
8673
  break;
8441
8674
  }
8442
- _context37.next = 17;
8675
+ _context38.next = 25;
8443
8676
  return this.setLocalAudioStream(streams.microphone);
8444
- case 17:
8677
+ case 25:
8445
8678
  if (!streams.camera) {
8446
- _context37.next = 20;
8679
+ _context38.next = 28;
8447
8680
  break;
8448
8681
  }
8449
- _context37.next = 20;
8682
+ _context38.next = 28;
8450
8683
  return this.setLocalVideoStream(streams.camera);
8451
- case 20:
8684
+ case 28:
8452
8685
  if (this.isMultistream) {
8453
- _context37.next = 23;
8686
+ _context38.next = 31;
8454
8687
  break;
8455
8688
  }
8456
- _context37.next = 23;
8689
+ _context38.next = 31;
8457
8690
  return this.updateTranscodedMediaConnection();
8458
- case 23:
8691
+ case 31:
8459
8692
  if (!floorRequestNeeded) {
8460
- _context37.next = 29;
8693
+ _context38.next = 37;
8461
8694
  break;
8462
8695
  }
8463
8696
  this.localShareInstanceId = _uuid.default.v4();
@@ -8481,13 +8714,13 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8481
8714
  // we're sending the http request to Locus to request the screen share floor
8482
8715
  // only after the SDP update, because that's how it's always been done for transcoded meetings
8483
8716
  // and also if sharing from the start, we need confluence to have been created
8484
- _context37.next = 29;
8717
+ _context38.next = 37;
8485
8718
  return this.enqueueScreenShareFloorRequest();
8486
- case 29:
8719
+ case 37:
8487
8720
  case "end":
8488
- return _context37.stop();
8721
+ return _context38.stop();
8489
8722
  }
8490
- }, _callee37, this);
8723
+ }, _callee38, this);
8491
8724
  }));
8492
8725
  function publishStreams(_x41) {
8493
8726
  return _publishStreams.apply(this, arguments);
@@ -8504,11 +8737,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8504
8737
  }, {
8505
8738
  key: "unpublishStreams",
8506
8739
  value: (function () {
8507
- var _unpublishStreams = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee38(streams) {
8740
+ var _unpublishStreams = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee39(streams) {
8508
8741
  var promises, _iterator, _step, stream;
8509
- return _regenerator.default.wrap(function _callee38$(_context38) {
8510
- while (1) switch (_context38.prev = _context38.next) {
8742
+ return _regenerator.default.wrap(function _callee39$(_context39) {
8743
+ while (1) switch (_context39.prev = _context39.next) {
8511
8744
  case 0:
8745
+ _loggerProxy.default.logger.info("Meeting:index#unpublishStreams --> called with: ".concat((0, _stringify.default)(streams)));
8512
8746
  this.checkMediaConnection();
8513
8747
  promises = [];
8514
8748
  _iterator = _createForOfIteratorHelper(streams.filter(function (t) {
@@ -8538,9 +8772,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8538
8772
  if (!this.isMultistream) {
8539
8773
  promises.push(this.updateTranscodedMediaConnection());
8540
8774
  }
8541
- _context38.next = 7;
8775
+ _context39.next = 8;
8542
8776
  return _promise.default.all(promises);
8543
- case 7:
8777
+ case 8:
8544
8778
  // we're allowing for the SDK to support just audio share as well
8545
8779
  // so a share could be active with only video, only audio, or both
8546
8780
  // we're only releasing the floor if both streams have ended
@@ -8557,11 +8791,11 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8557
8791
  // nothing to do here, error is logged already inside releaseScreenShareFloor()
8558
8792
  }
8559
8793
  }
8560
- case 8:
8794
+ case 9:
8561
8795
  case "end":
8562
- return _context38.stop();
8796
+ return _context39.stop();
8563
8797
  }
8564
- }, _callee38, this);
8798
+ }, _callee39, this);
8565
8799
  }));
8566
8800
  function unpublishStreams(_x42) {
8567
8801
  return _unpublishStreams.apply(this, arguments);
@@ -8623,55 +8857,55 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8623
8857
  }], [{
8624
8858
  key: "handleDeviceLogging",
8625
8859
  value: (function () {
8626
- var _handleDeviceLogging = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee39(isAudioEnabled, isVideoEnabled) {
8860
+ var _handleDeviceLogging = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee40(isAudioEnabled, isVideoEnabled) {
8627
8861
  var devices;
8628
- return _regenerator.default.wrap(function _callee39$(_context39) {
8629
- while (1) switch (_context39.prev = _context39.next) {
8862
+ return _regenerator.default.wrap(function _callee40$(_context40) {
8863
+ while (1) switch (_context40.prev = _context40.next) {
8630
8864
  case 0:
8631
- _context39.prev = 0;
8865
+ _context40.prev = 0;
8632
8866
  devices = [];
8633
8867
  if (!(isVideoEnabled && isAudioEnabled)) {
8634
- _context39.next = 8;
8868
+ _context40.next = 8;
8635
8869
  break;
8636
8870
  }
8637
- _context39.next = 5;
8871
+ _context40.next = 5;
8638
8872
  return (0, _mediaHelpers.getDevices)();
8639
8873
  case 5:
8640
- devices = _context39.sent;
8641
- _context39.next = 18;
8874
+ devices = _context40.sent;
8875
+ _context40.next = 18;
8642
8876
  break;
8643
8877
  case 8:
8644
8878
  if (!isVideoEnabled) {
8645
- _context39.next = 14;
8879
+ _context40.next = 14;
8646
8880
  break;
8647
8881
  }
8648
- _context39.next = 11;
8882
+ _context40.next = 11;
8649
8883
  return (0, _mediaHelpers.getDevices)(_media.default.DeviceKind.VIDEO_INPUT);
8650
8884
  case 11:
8651
- devices = _context39.sent;
8652
- _context39.next = 18;
8885
+ devices = _context40.sent;
8886
+ _context40.next = 18;
8653
8887
  break;
8654
8888
  case 14:
8655
8889
  if (!isAudioEnabled) {
8656
- _context39.next = 18;
8890
+ _context40.next = 18;
8657
8891
  break;
8658
8892
  }
8659
- _context39.next = 17;
8893
+ _context40.next = 17;
8660
8894
  return (0, _mediaHelpers.getDevices)(_media.default.DeviceKind.AUDIO_INPUT);
8661
8895
  case 17:
8662
- devices = _context39.sent;
8896
+ devices = _context40.sent;
8663
8897
  case 18:
8664
8898
  _util2.default.handleDeviceLogging(devices);
8665
- _context39.next = 23;
8899
+ _context40.next = 23;
8666
8900
  break;
8667
8901
  case 21:
8668
- _context39.prev = 21;
8669
- _context39.t0 = _context39["catch"](0);
8902
+ _context40.prev = 21;
8903
+ _context40.t0 = _context40["catch"](0);
8670
8904
  case 23:
8671
8905
  case "end":
8672
- return _context39.stop();
8906
+ return _context40.stop();
8673
8907
  }
8674
- }, _callee39, null, [[0, 21]]);
8908
+ }, _callee40, null, [[0, 21]]);
8675
8909
  }));
8676
8910
  function handleDeviceLogging(_x43, _x44) {
8677
8911
  return _handleDeviceLogging.apply(this, arguments);