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

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 (329) 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 +40 -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 +29 -1
  30. package/dist/meeting/in-meeting-actions.js.map +1 -1
  31. package/dist/meeting/index.js +786 -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 +29 -2
  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 +13 -7
  48. package/dist/members/util.js.map +1 -1
  49. package/dist/metrics/constants.js +4 -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 +12 -15
  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/recording-controller/enums.js +8 -4
  62. package/dist/recording-controller/enums.js.map +1 -1
  63. package/dist/recording-controller/index.js +18 -9
  64. package/dist/recording-controller/index.js.map +1 -1
  65. package/dist/recording-controller/util.js +13 -9
  66. package/dist/recording-controller/util.js.map +1 -1
  67. package/dist/roap/index.js +5 -7
  68. package/dist/roap/index.js.map +1 -1
  69. package/dist/roap/request.js +45 -79
  70. package/dist/roap/request.js.map +1 -1
  71. package/dist/roap/turnDiscovery.js +3 -6
  72. package/dist/roap/turnDiscovery.js.map +1 -1
  73. package/dist/{common/errors/parameter.d.ts → types/common/errors/webinar-registration-error.d.ts} +4 -5
  74. package/dist/types/config.d.ts +3 -0
  75. package/dist/types/constants.d.ts +33 -0
  76. package/dist/types/controls-options-manager/enums.d.ts +2 -1
  77. package/dist/types/controls-options-manager/index.d.ts +2 -1
  78. package/dist/types/controls-options-manager/types.d.ts +2 -0
  79. package/dist/types/index.d.ts +2 -1
  80. package/dist/types/locus-info/index.d.ts +9 -0
  81. package/dist/types/meeting/in-meeting-actions.d.ts +28 -0
  82. package/dist/types/meeting/index.d.ts +34 -3
  83. package/dist/types/meeting/locusMediaRequest.d.ts +2 -3
  84. package/dist/types/meeting/muteState.d.ts +2 -1
  85. package/dist/types/meeting/request.d.ts +2 -2
  86. package/dist/types/meeting/util.d.ts +2 -2
  87. package/dist/types/meeting-info/meeting-info-v2.d.ts +23 -0
  88. package/dist/types/meetings/index.d.ts +13 -1
  89. package/dist/types/members/index.d.ts +2 -1
  90. package/dist/types/members/util.d.ts +5 -1
  91. package/dist/types/metrics/constants.d.ts +3 -0
  92. package/dist/types/multistream/remoteMedia.d.ts +1 -0
  93. package/dist/types/reachability/clusterReachability.d.ts +1 -10
  94. package/dist/types/reachability/index.d.ts +74 -35
  95. package/dist/types/reachability/reachability.types.d.ts +64 -0
  96. package/dist/types/reachability/request.d.ts +5 -1
  97. package/dist/types/recording-controller/enums.d.ts +5 -2
  98. package/dist/types/recording-controller/index.d.ts +1 -0
  99. package/dist/types/recording-controller/util.d.ts +2 -1
  100. package/dist/types/roap/request.d.ts +1 -13
  101. package/dist/webinar/index.js +64 -19
  102. package/dist/webinar/index.js.map +1 -1
  103. package/package.json +22 -22
  104. package/src/common/errors/webinar-registration-error.ts +27 -0
  105. package/src/config.ts +3 -0
  106. package/src/constants.ts +41 -0
  107. package/src/controls-options-manager/enums.ts +1 -0
  108. package/src/controls-options-manager/index.ts +19 -2
  109. package/src/controls-options-manager/types.ts +2 -0
  110. package/src/controls-options-manager/util.ts +12 -0
  111. package/src/index.ts +2 -0
  112. package/src/locus-info/controlsUtils.ts +46 -2
  113. package/src/locus-info/fullState.ts +1 -0
  114. package/src/locus-info/index.ts +60 -0
  115. package/src/locus-info/parser.ts +8 -1
  116. package/src/meeting/in-meeting-actions.ts +58 -0
  117. package/src/meeting/index.ts +247 -22
  118. package/src/meeting/locusMediaRequest.ts +4 -8
  119. package/src/meeting/muteState.ts +6 -2
  120. package/src/meeting/request.ts +4 -11
  121. package/src/meeting/util.ts +31 -6
  122. package/src/meeting-info/meeting-info-v2.ts +51 -0
  123. package/src/meetings/index.ts +74 -40
  124. package/src/members/index.ts +4 -2
  125. package/src/members/util.ts +4 -1
  126. package/src/metrics/constants.ts +3 -0
  127. package/src/multistream/remoteMedia.ts +5 -0
  128. package/src/reachability/clusterReachability.ts +5 -15
  129. package/src/reachability/index.ts +285 -77
  130. package/src/reachability/reachability.types.ts +85 -0
  131. package/src/reachability/request.ts +55 -30
  132. package/src/recording-controller/enums.ts +5 -2
  133. package/src/recording-controller/index.ts +17 -4
  134. package/src/recording-controller/util.ts +20 -5
  135. package/src/roap/index.ts +4 -5
  136. package/src/roap/request.ts +32 -44
  137. package/src/roap/turnDiscovery.ts +2 -4
  138. package/src/webinar/index.ts +62 -16
  139. package/test/unit/spec/controls-options-manager/index.js +56 -32
  140. package/test/unit/spec/controls-options-manager/util.js +44 -0
  141. package/test/unit/spec/locus-info/controlsUtils.js +80 -4
  142. package/test/unit/spec/locus-info/index.js +88 -2
  143. package/test/unit/spec/meeting/in-meeting-actions.ts +31 -1
  144. package/test/unit/spec/meeting/index.js +346 -82
  145. package/test/unit/spec/meeting/locusMediaRequest.ts +18 -11
  146. package/test/unit/spec/meeting/muteState.js +8 -4
  147. package/test/unit/spec/meeting/request.js +3 -26
  148. package/test/unit/spec/meeting/utils.js +71 -14
  149. package/test/unit/spec/meeting-info/meetinginfov2.js +37 -0
  150. package/test/unit/spec/meetings/index.js +41 -6
  151. package/test/unit/spec/members/index.js +25 -2
  152. package/test/unit/spec/members/request.js +37 -3
  153. package/test/unit/spec/members/utils.js +110 -1
  154. package/test/unit/spec/multistream/remoteMedia.ts +16 -2
  155. package/test/unit/spec/reachability/clusterReachability.ts +7 -0
  156. package/test/unit/spec/reachability/index.ts +265 -1
  157. package/test/unit/spec/reachability/request.js +56 -15
  158. package/test/unit/spec/recording-controller/index.js +61 -5
  159. package/test/unit/spec/recording-controller/util.js +39 -3
  160. package/test/unit/spec/roap/index.ts +1 -1
  161. package/test/unit/spec/roap/request.ts +51 -109
  162. package/test/unit/spec/roap/turnDiscovery.ts +202 -147
  163. package/test/unit/spec/webinar/index.ts +128 -15
  164. package/dist/annotation/annotation.types.d.ts +0 -42
  165. package/dist/annotation/constants.d.ts +0 -31
  166. package/dist/annotation/index.d.ts +0 -117
  167. package/dist/breakouts/breakout.d.ts +0 -8
  168. package/dist/breakouts/collection.d.ts +0 -5
  169. package/dist/breakouts/edit-lock-error.d.ts +0 -15
  170. package/dist/breakouts/events.d.ts +0 -8
  171. package/dist/breakouts/index.d.ts +0 -5
  172. package/dist/breakouts/request.d.ts +0 -22
  173. package/dist/breakouts/utils.d.ts +0 -15
  174. package/dist/common/browser-detection.d.ts +0 -9
  175. package/dist/common/collection.d.ts +0 -48
  176. package/dist/common/config.d.ts +0 -2
  177. package/dist/common/errors/captcha-error.d.ts +0 -15
  178. package/dist/common/errors/intent-to-join.d.ts +0 -16
  179. package/dist/common/errors/join-meeting.d.ts +0 -17
  180. package/dist/common/errors/media.d.ts +0 -15
  181. package/dist/common/errors/no-meeting-info.d.ts +0 -14
  182. package/dist/common/errors/password-error.d.ts +0 -15
  183. package/dist/common/errors/permission.d.ts +0 -14
  184. package/dist/common/errors/reclaim-host-role-error.js +0 -149
  185. package/dist/common/errors/reclaim-host-role-error.js.map +0 -1
  186. package/dist/common/errors/reclaim-host-role-errors.d.ts +0 -60
  187. package/dist/common/errors/reconnection-in-progress.d.ts +0 -9
  188. package/dist/common/errors/reconnection-in-progress.js +0 -33
  189. package/dist/common/errors/reconnection-in-progress.js.map +0 -1
  190. package/dist/common/errors/reconnection.d.ts +0 -15
  191. package/dist/common/errors/stats.d.ts +0 -15
  192. package/dist/common/errors/webex-errors.d.ts +0 -93
  193. package/dist/common/errors/webex-meetings-error.d.ts +0 -20
  194. package/dist/common/events/events-scope.d.ts +0 -17
  195. package/dist/common/events/events.d.ts +0 -12
  196. package/dist/common/events/trigger-proxy.d.ts +0 -2
  197. package/dist/common/events/util.d.ts +0 -2
  198. package/dist/common/logs/logger-config.d.ts +0 -2
  199. package/dist/common/logs/logger-proxy.d.ts +0 -2
  200. package/dist/common/logs/request.d.ts +0 -36
  201. package/dist/common/queue.d.ts +0 -34
  202. package/dist/config.d.ts +0 -72
  203. package/dist/constants.d.ts +0 -1088
  204. package/dist/controls-options-manager/constants.d.ts +0 -4
  205. package/dist/controls-options-manager/enums.d.ts +0 -15
  206. package/dist/controls-options-manager/index.d.ts +0 -136
  207. package/dist/controls-options-manager/types.d.ts +0 -43
  208. package/dist/controls-options-manager/util.d.ts +0 -1
  209. package/dist/index.d.ts +0 -7
  210. package/dist/interceptors/index.d.ts +0 -2
  211. package/dist/interceptors/locusRetry.d.ts +0 -27
  212. package/dist/interpretation/collection.d.ts +0 -5
  213. package/dist/interpretation/index.d.ts +0 -5
  214. package/dist/interpretation/siLanguage.d.ts +0 -5
  215. package/dist/locus-info/controlsUtils.d.ts +0 -2
  216. package/dist/locus-info/embeddedAppsUtils.d.ts +0 -2
  217. package/dist/locus-info/fullState.d.ts +0 -2
  218. package/dist/locus-info/hostUtils.d.ts +0 -2
  219. package/dist/locus-info/index.d.ts +0 -322
  220. package/dist/locus-info/infoUtils.d.ts +0 -2
  221. package/dist/locus-info/mediaSharesUtils.d.ts +0 -2
  222. package/dist/locus-info/parser.d.ts +0 -272
  223. package/dist/locus-info/selfUtils.d.ts +0 -2
  224. package/dist/media/index.d.ts +0 -34
  225. package/dist/media/properties.d.ts +0 -93
  226. package/dist/media/util.d.ts +0 -2
  227. package/dist/mediaQualityMetrics/config.d.ts +0 -241
  228. package/dist/mediaQualityMetrics/config.js +0 -502
  229. package/dist/mediaQualityMetrics/config.js.map +0 -1
  230. package/dist/meeting/effectsState.js +0 -260
  231. package/dist/meeting/effectsState.js.map +0 -1
  232. package/dist/meeting/in-meeting-actions.d.ts +0 -167
  233. package/dist/meeting/index.d.ts +0 -1825
  234. package/dist/meeting/locusMediaRequest.d.ts +0 -74
  235. package/dist/meeting/muteState.d.ts +0 -178
  236. package/dist/meeting/request.d.ts +0 -295
  237. package/dist/meeting/request.type.d.ts +0 -11
  238. package/dist/meeting/state.d.ts +0 -9
  239. package/dist/meeting/util.d.ts +0 -119
  240. package/dist/meeting/voicea-meeting.d.ts +0 -16
  241. package/dist/meeting-info/collection.d.ts +0 -20
  242. package/dist/meeting-info/index.d.ts +0 -69
  243. package/dist/meeting-info/meeting-info-v2.d.ts +0 -123
  244. package/dist/meeting-info/request.d.ts +0 -22
  245. package/dist/meeting-info/util.d.ts +0 -2
  246. package/dist/meeting-info/utilv2.d.ts +0 -2
  247. package/dist/meetings/collection.d.ts +0 -40
  248. package/dist/meetings/index.d.ts +0 -390
  249. package/dist/meetings/meetings.types.d.ts +0 -4
  250. package/dist/meetings/request.d.ts +0 -27
  251. package/dist/meetings/util.d.ts +0 -18
  252. package/dist/member/index.d.ts +0 -160
  253. package/dist/member/member.types.js +0 -17
  254. package/dist/member/member.types.js.map +0 -1
  255. package/dist/member/types.d.ts +0 -32
  256. package/dist/member/util.d.ts +0 -2
  257. package/dist/members/collection.d.ts +0 -29
  258. package/dist/members/index.d.ts +0 -353
  259. package/dist/members/request.d.ts +0 -114
  260. package/dist/members/types.d.ts +0 -25
  261. package/dist/members/util.d.ts +0 -215
  262. package/dist/metrics/config.js +0 -276
  263. package/dist/metrics/config.js.map +0 -1
  264. package/dist/metrics/constants.d.ts +0 -70
  265. package/dist/metrics/index.d.ts +0 -45
  266. package/dist/multistream/mediaRequestManager.d.ts +0 -119
  267. package/dist/multistream/receiveSlot.d.ts +0 -68
  268. package/dist/multistream/receiveSlotManager.d.ts +0 -56
  269. package/dist/multistream/remoteMedia.d.ts +0 -72
  270. package/dist/multistream/remoteMediaGroup.d.ts +0 -49
  271. package/dist/multistream/remoteMediaManager.d.ts +0 -300
  272. package/dist/multistream/sendSlotManager.d.ts +0 -69
  273. package/dist/networkQualityMonitor/index.d.ts +0 -70
  274. package/dist/networkQualityMonitor/index.js +0 -221
  275. package/dist/networkQualityMonitor/index.js.map +0 -1
  276. package/dist/peer-connection-manager/index.js +0 -671
  277. package/dist/peer-connection-manager/index.js.map +0 -1
  278. package/dist/peer-connection-manager/util.js +0 -109
  279. package/dist/peer-connection-manager/util.js.map +0 -1
  280. package/dist/personal-meeting-room/index.d.ts +0 -47
  281. package/dist/personal-meeting-room/request.d.ts +0 -14
  282. package/dist/personal-meeting-room/util.d.ts +0 -2
  283. package/dist/reachability/clusterReachability.d.ts +0 -109
  284. package/dist/reachability/index.d.ts +0 -105
  285. package/dist/reachability/request.d.ts +0 -39
  286. package/dist/reachability/util.d.ts +0 -8
  287. package/dist/reactions/constants.d.ts +0 -3
  288. package/dist/reactions/reactions.d.ts +0 -4
  289. package/dist/reactions/reactions.type.d.ts +0 -52
  290. package/dist/reconnection-manager/index.d.ts +0 -136
  291. package/dist/recording-controller/enums.d.ts +0 -7
  292. package/dist/recording-controller/index.d.ts +0 -207
  293. package/dist/recording-controller/util.d.ts +0 -14
  294. package/dist/roap/collection.js +0 -62
  295. package/dist/roap/collection.js.map +0 -1
  296. package/dist/roap/handler.js +0 -275
  297. package/dist/roap/handler.js.map +0 -1
  298. package/dist/roap/index.d.ts +0 -86
  299. package/dist/roap/request.d.ts +0 -39
  300. package/dist/roap/state.js +0 -126
  301. package/dist/roap/state.js.map +0 -1
  302. package/dist/roap/turnDiscovery.d.ts +0 -155
  303. package/dist/roap/util.js +0 -75
  304. package/dist/roap/util.js.map +0 -1
  305. package/dist/rtcMetrics/constants.d.ts +0 -4
  306. package/dist/rtcMetrics/constants.js.map +0 -1
  307. package/dist/rtcMetrics/index.d.ts +0 -61
  308. package/dist/rtcMetrics/index.js +0 -197
  309. package/dist/rtcMetrics/index.js.map +0 -1
  310. package/dist/statsAnalyzer/global.d.ts +0 -36
  311. package/dist/statsAnalyzer/global.js +0 -126
  312. package/dist/statsAnalyzer/global.js.map +0 -1
  313. package/dist/statsAnalyzer/index.d.ts +0 -217
  314. package/dist/statsAnalyzer/index.js +0 -1013
  315. package/dist/statsAnalyzer/index.js.map +0 -1
  316. package/dist/statsAnalyzer/mqaUtil.d.ts +0 -48
  317. package/dist/statsAnalyzer/mqaUtil.js +0 -179
  318. package/dist/statsAnalyzer/mqaUtil.js.map +0 -1
  319. package/dist/transcription/index.d.ts +0 -64
  320. package/dist/types/common/errors/reconnection-in-progress.d.ts +0 -9
  321. package/dist/types/mediaQualityMetrics/config.d.ts +0 -241
  322. package/dist/types/networkQualityMonitor/index.d.ts +0 -70
  323. package/dist/types/rtcMetrics/constants.d.ts +0 -4
  324. package/dist/types/rtcMetrics/index.d.ts +0 -71
  325. package/dist/types/statsAnalyzer/global.d.ts +0 -36
  326. package/dist/types/statsAnalyzer/index.d.ts +0 -217
  327. package/dist/types/statsAnalyzer/mqaUtil.d.ts +0 -48
  328. package/dist/webinar/collection.d.ts +0 -16
  329. 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,45 @@ 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
+ _this13.webinar.updatePracticeSessionStatus(state);
3248
+ _triggerProxy.default.trigger(_this13, {
3249
+ file: 'meeting/index',
3250
+ function: 'setupLocusControlsListener'
3251
+ }, _constants.EVENT_TRIGGERS.MEETING_CONTROLS_PRACTICE_SESSION_STATUS_UPDATED, {
3252
+ state: state
3253
+ });
3254
+ });
3255
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_STAGE_VIEW_UPDATED, function (_ref25) {
3256
+ var state = _ref25.state;
3257
+ _triggerProxy.default.trigger(_this13, {
3258
+ file: 'meeting/index',
3259
+ function: 'setupLocusControlsListener'
3260
+ }, _constants.EVENT_TRIGGERS.MEETING_CONTROLS_STAGE_VIEW_UPDATED, {
3261
+ state: state
3262
+ });
3263
+ });
3264
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_VIDEO_CHANGED, function (_ref26) {
3265
+ var state = _ref26.state;
3203
3266
  _triggerProxy.default.trigger(_this13, {
3204
3267
  file: 'meeting/index',
3205
3268
  function: 'setupLocusControlsListener'
@@ -3246,7 +3309,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3246
3309
  var _this14 = this;
3247
3310
  // Will get triggered on local and remote share
3248
3311
  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) {
3312
+ var _ref27 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8(payload) {
3250
3313
  var _payload$previous, _payload$previous2;
3251
3314
  var _payload$current, contentShare, whiteboardShare, previousContentShare, previousWhiteboardShare, newShareStatus, oldShareStatus, sendStartedSharingRemote, _this14$mediaProperti;
3252
3315
  return _regenerator.default.wrap(function _callee8$(_context8) {
@@ -3288,8 +3351,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3288
3351
  else if ((previousContentShare && contentShare.disposition === _constants.FLOOR_ACTION.RELEASED || contentShare.disposition === null) && (previousWhiteboardShare && whiteboardShare.disposition === _constants.FLOOR_ACTION.RELEASED || whiteboardShare.disposition === null)) {
3289
3352
  newShareStatus = _constants.SHARE_STATUS.NO_SHARE;
3290
3353
  }
3354
+ _loggerProxy.default.logger.info("Meeting:index#setUpLocusInfoMediaInactiveListener --> this.shareStatus=".concat(_this14.shareStatus, " newShareStatus=").concat(newShareStatus));
3291
3355
  if (!(newShareStatus !== _this14.shareStatus)) {
3292
- _context8.next = 45;
3356
+ _context8.next = 46;
3293
3357
  break;
3294
3358
  }
3295
3359
  oldShareStatus = _this14.shareStatus; // update our state before we send out any notifications
@@ -3297,37 +3361,37 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3297
3361
 
3298
3362
  // send out "stop" notifications for the old state
3299
3363
  _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;
3364
+ _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
3365
  break;
3302
- case 14:
3366
+ case 15:
3303
3367
  _triggerProxy.default.trigger(_this14, {
3304
3368
  file: 'meetings/index',
3305
3369
  function: 'remoteShare'
3306
3370
  }, _constants.EVENT_TRIGGERS.MEETING_STOPPED_SHARING_REMOTE);
3307
- return _context8.abrupt("break", 22);
3308
- case 16:
3371
+ return _context8.abrupt("break", 23);
3372
+ case 17:
3309
3373
  _triggerProxy.default.trigger(_this14, {
3310
3374
  file: 'meeting/index',
3311
3375
  function: 'localShare'
3312
3376
  }, _constants.EVENT_TRIGGERS.MEETING_STOPPED_SHARING_LOCAL, {
3313
3377
  reason: _constants.SHARE_STOPPED_REASON.SELF_STOPPED
3314
3378
  });
3315
- return _context8.abrupt("break", 22);
3316
- case 18:
3379
+ return _context8.abrupt("break", 23);
3380
+ case 19:
3317
3381
  _triggerProxy.default.trigger(_this14, {
3318
3382
  file: 'meeting/index',
3319
3383
  function: 'stopWhiteboardShare'
3320
3384
  }, _constants.EVENT_TRIGGERS.MEETING_STOPPED_SHARING_WHITEBOARD);
3321
- return _context8.abrupt("break", 22);
3322
- case 20:
3323
- return _context8.abrupt("break", 22);
3385
+ return _context8.abrupt("break", 23);
3324
3386
  case 21:
3325
- return _context8.abrupt("break", 22);
3387
+ return _context8.abrupt("break", 23);
3326
3388
  case 22:
3389
+ return _context8.abrupt("break", 23);
3390
+ case 23:
3327
3391
  _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;
3392
+ _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
3393
  break;
3330
- case 25:
3394
+ case 26:
3331
3395
  sendStartedSharingRemote = function sendStartedSharingRemote() {
3332
3396
  _this14.remoteShareInstanceId = contentShare.shareInstanceId;
3333
3397
  _triggerProxy.default.trigger(_this14, {
@@ -3341,20 +3405,20 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3341
3405
  resourceType: contentShare.resourceType
3342
3406
  });
3343
3407
  };
3344
- _context8.prev = 26;
3408
+ _context8.prev = 27;
3345
3409
  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;
3410
+ _context8.next = 31;
3347
3411
  break;
3348
3412
  }
3349
- _context8.next = 30;
3413
+ _context8.next = 31;
3350
3414
  return _this14.unpublishStreams([_this14.mediaProperties.shareVideoStream, _this14.mediaProperties.shareAudioStream]);
3351
- case 30:
3352
- _context8.prev = 30;
3415
+ case 31:
3416
+ _context8.prev = 31;
3353
3417
  sendStartedSharingRemote();
3354
- return _context8.finish(30);
3355
- case 33:
3356
- return _context8.abrupt("break", 42);
3418
+ return _context8.finish(31);
3357
3419
  case 34:
3420
+ return _context8.abrupt("break", 43);
3421
+ case 35:
3358
3422
  _triggerProxy.default.trigger(_this14, {
3359
3423
  file: 'meeting/index',
3360
3424
  function: 'share'
@@ -3370,8 +3434,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3370
3434
  meetingId: _this14.id
3371
3435
  }
3372
3436
  });
3373
- return _context8.abrupt("break", 42);
3374
- case 37:
3437
+ return _context8.abrupt("break", 43);
3438
+ case 38:
3375
3439
  _triggerProxy.default.trigger(_this14, {
3376
3440
  file: 'meeting/index',
3377
3441
  function: 'startWhiteboardShare'
@@ -3389,16 +3453,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3389
3453
  meetingId: _this14.id
3390
3454
  }
3391
3455
  });
3392
- return _context8.abrupt("break", 42);
3393
- case 40:
3394
- return _context8.abrupt("break", 42);
3456
+ return _context8.abrupt("break", 43);
3395
3457
  case 41:
3396
- return _context8.abrupt("break", 42);
3458
+ return _context8.abrupt("break", 43);
3397
3459
  case 42:
3460
+ return _context8.abrupt("break", 43);
3461
+ case 43:
3398
3462
  _this14.members.locusMediaSharesUpdate(payload);
3399
- _context8.next = 46;
3463
+ _context8.next = 47;
3400
3464
  break;
3401
- case 45:
3465
+ case 46:
3402
3466
  if (newShareStatus === _constants.SHARE_STATUS.REMOTE_SHARE_ACTIVE) {
3403
3467
  // if we got here, then some remote participant has stolen
3404
3468
  // the presentation from another remote participant
@@ -3436,14 +3500,14 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3436
3500
  });
3437
3501
  _this14.members.locusMediaSharesUpdate(payload);
3438
3502
  }
3439
- case 46:
3503
+ case 47:
3440
3504
  case "end":
3441
3505
  return _context8.stop();
3442
3506
  }
3443
- }, _callee8, null, [[26,, 30, 33]]);
3507
+ }, _callee8, null, [[27,, 31, 34]]);
3444
3508
  }));
3445
3509
  return function (_x8) {
3446
- return _ref23.apply(this, arguments);
3510
+ return _ref27.apply(this, arguments);
3447
3511
  };
3448
3512
  }());
3449
3513
  }
@@ -3493,14 +3557,29 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3493
3557
  value: function setUpLocusServicesListener() {
3494
3558
  var _this16 = this;
3495
3559
  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;
3560
+ 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
3561
  _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
3562
  _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
3563
  _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
3564
  _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
3565
  _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);
3566
+ });
3567
+ }
3568
+
3569
+ /**
3570
+ * Set up the locus info resources link listener
3571
+ * update the locusInfo for webcast instance url
3572
+ * @param {Object} payload - The event payload
3573
+ * @returns {undefined}
3574
+ * @private
3575
+ * @memberof Meeting
3576
+ */
3577
+ }, {
3578
+ key: "setUpLocusResourcesListener",
3579
+ value: function setUpLocusResourcesListener() {
3580
+ var _this17 = this;
3581
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.LINKS_RESOURCES, function (payload) {
3582
+ _this17.webinar.updateWebcastUrl(payload);
3504
3583
  });
3505
3584
  }
3506
3585
 
@@ -3513,10 +3592,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3513
3592
  }, {
3514
3593
  key: "setUpLocusInfoMeetingInfoListener",
3515
3594
  value: function setUpLocusInfoMeetingInfoListener() {
3516
- var _this17 = this;
3595
+ var _this18 = this;
3517
3596
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.MEETING_LOCKED, function (payload) {
3518
3597
  if (payload) {
3519
- _triggerProxy.default.trigger(_this17, {
3598
+ _triggerProxy.default.trigger(_this18, {
3520
3599
  file: 'meeting/index',
3521
3600
  function: 'setUpLocusInfoMeetingInfoListener'
3522
3601
  }, _constants.EVENT_TRIGGERS.MEETING_LOCKED, {
@@ -3526,7 +3605,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3526
3605
  });
3527
3606
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.MEETING_UNLOCKED, function (payload) {
3528
3607
  if (payload) {
3529
- _triggerProxy.default.trigger(_this17, {
3608
+ _triggerProxy.default.trigger(_this18, {
3530
3609
  file: 'meeting/index',
3531
3610
  function: 'setUpLocusInfoMeetingInfoListener'
3532
3611
  }, _constants.EVENT_TRIGGERS.MEETING_UNLOCKED, {
@@ -3534,16 +3613,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3534
3613
  });
3535
3614
  }
3536
3615
  });
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);
3616
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.MEETING_INFO_UPDATED, function (_ref28) {
3617
+ var isInitializing = _ref28.isInitializing;
3618
+ _this18.updateMeetingActions();
3619
+ _this18.recordingController.setDisplayHints(_this18.userDisplayHints);
3620
+ _this18.recordingController.setUserPolicy(_this18.selfUserPolicies);
3621
+ _this18.controlsOptionsManager.setDisplayHints(_this18.userDisplayHints);
3622
+ _this18.handleDataChannelUrlChange(_this18.datachannelUrl);
3544
3623
  if (!isInitializing) {
3545
3624
  // send updated trigger only if locus is not initializing the meeting
3546
- _triggerProxy.default.trigger(_this17, {
3625
+ _triggerProxy.default.trigger(_this18, {
3547
3626
  file: 'meetings',
3548
3627
  function: 'setUpLocusInfoMeetingInfoListener'
3549
3628
  }, _constants.EVENT_TRIGGERS.MEETING_INFO_UPDATED);
@@ -3574,10 +3653,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3574
3653
  }, {
3575
3654
  key: "setUpLocusEmbeddedAppsListener",
3576
3655
  value: function setUpLocusEmbeddedAppsListener() {
3577
- var _this18 = this;
3656
+ var _this19 = this;
3578
3657
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.EMBEDDED_APPS_UPDATED, function (embeddedApps) {
3579
3658
  if (embeddedApps) {
3580
- _triggerProxy.default.trigger(_this18, {
3659
+ _triggerProxy.default.trigger(_this19, {
3581
3660
  file: 'meeting/index',
3582
3661
  function: 'setUpLocusEmbeddedAppsListener'
3583
3662
  }, _constants.EVENT_TRIGGERS.MEETING_EMBEDDED_APPS_UPDATE, embeddedApps);
@@ -3594,11 +3673,11 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3594
3673
  }, {
3595
3674
  key: "setUpLocusInfoSelfListener",
3596
3675
  value: function setUpLocusInfoSelfListener() {
3597
- var _this19 = this;
3676
+ var _this20 = this;
3598
3677
  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, {
3678
+ if (_this20.audio) {
3679
+ _this20.audio.handleServerLocalUnmuteRequired(_this20, payload.unmuteAllowed);
3680
+ _triggerProxy.default.trigger(_this20, {
3602
3681
  file: 'meeting/index',
3603
3682
  function: 'setUpLocusInfoSelfListener'
3604
3683
  }, _constants.EVENT_TRIGGERS.MEETING_SELF_UNMUTED_BY_OTHERS, {
@@ -3608,13 +3687,13 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3608
3687
  });
3609
3688
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED, function (payload) {
3610
3689
  if (payload) {
3611
- if (_this19.video) {
3690
+ if (_this20.video) {
3612
3691
  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);
3692
+ payload.muted = (_payload$muted = payload.muted) !== null && _payload$muted !== void 0 ? _payload$muted : _this20.video.isRemotelyMuted();
3693
+ payload.unmuteAllowed = (_payload$unmuteAllowe = payload.unmuteAllowed) !== null && _payload$unmuteAllowe !== void 0 ? _payload$unmuteAllowe : _this20.video.isUnmuteAllowed();
3694
+ _this20.video.handleServerRemoteMuteUpdate(_this20, payload.muted, payload.unmuteAllowed);
3616
3695
  }
3617
- _triggerProxy.default.trigger(_this19, {
3696
+ _triggerProxy.default.trigger(_this20, {
3618
3697
  file: 'meeting/index',
3619
3698
  function: 'setUpLocusInfoSelfListener'
3620
3699
  }, payload.muted ? _constants.EVENT_TRIGGERS.MEETING_SELF_VIDEO_MUTED_BY_OTHERS : _constants.EVENT_TRIGGERS.MEETING_SELF_VIDEO_UNMUTED_BY_OTHERS, {
@@ -3624,15 +3703,15 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3624
3703
  });
3625
3704
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_REMOTE_MUTE_STATUS_UPDATED, function (payload) {
3626
3705
  if (payload) {
3627
- var _this19$audio;
3628
- if (_this19.audio) {
3629
- _this19.audio.handleServerRemoteMuteUpdate(_this19, payload.muted, payload.unmuteAllowed);
3706
+ var _this20$audio;
3707
+ if (_this20.audio) {
3708
+ _this20.audio.handleServerRemoteMuteUpdate(_this20, payload.muted, payload.unmuteAllowed);
3630
3709
  }
3631
3710
  // with "mute on entry" server will send us remote mute even if we don't have media configured,
3632
3711
  // so if being muted by others, always send the notification,
3633
3712
  // 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, {
3713
+ if (payload.muted || !((_this20$audio = _this20.audio) !== null && _this20$audio !== void 0 && _this20$audio.isMuted())) {
3714
+ _triggerProxy.default.trigger(_this20, {
3636
3715
  file: 'meeting/index',
3637
3716
  function: 'setUpLocusInfoSelfListener'
3638
3717
  }, payload.muted ? _constants.EVENT_TRIGGERS.MEETING_SELF_MUTED_BY_OTHERS : _constants.EVENT_TRIGGERS.MEETING_SELF_UNMUTED_BY_OTHERS, {
@@ -3642,7 +3721,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3642
3721
  }
3643
3722
  });
3644
3723
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.LOCAL_UNMUTE_REQUESTED, function (payload) {
3645
- _triggerProxy.default.trigger(_this19, {
3724
+ _triggerProxy.default.trigger(_this20, {
3646
3725
  file: 'meeting/index',
3647
3726
  function: 'setUpLocusInfoSelfListener'
3648
3727
  }, _constants.EVENT_TRIGGERS.MEETING_SELF_REQUESTED_TO_UNMUTE, {
@@ -3651,8 +3730,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3651
3730
  });
3652
3731
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_UNADMITTED_GUEST, function (payload) {
3653
3732
  if (payload) {
3654
- _this19.startKeepAlive();
3655
- _triggerProxy.default.trigger(_this19, {
3733
+ _this20.startKeepAlive();
3734
+ _triggerProxy.default.trigger(_this20, {
3656
3735
  file: 'meeting/index',
3657
3736
  function: 'setUpLocusInfoSelfListener'
3658
3737
  }, _constants.EVENT_TRIGGERS.MEETING_SELF_LOBBY_WAITING, {
@@ -3660,24 +3739,27 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3660
3739
  });
3661
3740
 
3662
3741
  // @ts-ignore
3663
- _this19.webex.internal.newMetrics.submitClientEvent({
3742
+ _this20.webex.internal.newMetrics.submitClientEvent({
3664
3743
  name: 'client.lobby.entered',
3665
3744
  options: {
3666
- meetingId: _this19.id
3745
+ meetingId: _this20.id
3667
3746
  }
3668
3747
  });
3669
3748
  }
3670
- _this19.updateLLMConnection();
3749
+ _metrics.default.sendBehavioralMetric(_constants2.default.GUEST_ENTERED_LOBBY, {
3750
+ correlation_id: _this20.correlationId
3751
+ });
3752
+ _this20.updateLLMConnection();
3671
3753
  });
3672
3754
  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;
3755
+ var _ref29 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9(payload) {
3756
+ var _this20$rtcMetrics;
3675
3757
  return _regenerator.default.wrap(function _callee9$(_context9) {
3676
3758
  while (1) switch (_context9.prev = _context9.next) {
3677
3759
  case 0:
3678
- _this19.stopKeepAlive();
3760
+ _this20.stopKeepAlive();
3679
3761
  if (payload) {
3680
- _triggerProxy.default.trigger(_this19, {
3762
+ _triggerProxy.default.trigger(_this20, {
3681
3763
  file: 'meeting/index',
3682
3764
  function: 'setUpLocusInfoSelfListener'
3683
3765
  }, _constants.EVENT_TRIGGERS.MEETING_SELF_GUEST_ADMITTED, {
@@ -3685,15 +3767,18 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3685
3767
  });
3686
3768
 
3687
3769
  // @ts-ignore
3688
- _this19.webex.internal.newMetrics.submitClientEvent({
3770
+ _this20.webex.internal.newMetrics.submitClientEvent({
3689
3771
  name: 'client.lobby.exited',
3690
3772
  options: {
3691
- meetingId: _this19.id
3773
+ meetingId: _this20.id
3692
3774
  }
3693
3775
  });
3776
+ _metrics.default.sendBehavioralMetric(_constants2.default.GUEST_EXITED_LOBBY, {
3777
+ correlation_id: _this20.correlationId
3778
+ });
3694
3779
  }
3695
- (_this19$rtcMetrics = _this19.rtcMetrics) === null || _this19$rtcMetrics === void 0 ? void 0 : _this19$rtcMetrics.sendNextMetrics();
3696
- _this19.updateLLMConnection();
3780
+ (_this20$rtcMetrics = _this20.rtcMetrics) === null || _this20$rtcMetrics === void 0 ? void 0 : _this20$rtcMetrics.sendNextMetrics();
3781
+ _this20.updateLLMConnection();
3697
3782
  case 4:
3698
3783
  case "end":
3699
3784
  return _context9.stop();
@@ -3701,42 +3786,42 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3701
3786
  }, _callee9);
3702
3787
  }));
3703
3788
  return function (_x9) {
3704
- return _ref25.apply(this, arguments);
3789
+ return _ref29.apply(this, arguments);
3705
3790
  };
3706
3791
  }());
3707
3792
 
3708
3793
  // @ts-ignore - check if MEDIA_INACTIVITY exists
3709
3794
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.MEDIA_INACTIVITY, function () {
3710
3795
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_MEDIA_INACTIVE, {
3711
- correlation_id: _this19.correlationId,
3712
- locus_id: _this19.locusId
3796
+ correlation_id: _this20.correlationId,
3797
+ locus_id: _this20.locusId
3713
3798
  });
3714
3799
  _loggerProxy.default.logger.info('Meeting:index#setUpLocusInfoSelfListener --> MEDIA_INACTIVITY received, reconnecting...');
3715
- _this19.reconnect();
3800
+ _this20.reconnect();
3716
3801
  });
3717
3802
 
3718
3803
  // There is two stats for mute one is the actual media being sent or received
3719
3804
  // The second on is if the audio is muted, we need to tell the statsAnalyzer when
3720
3805
  // the audio is muted or the user is not willing to send media
3721
3806
  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({
3807
+ if (_this20.statsAnalyzer) {
3808
+ var _this20$mediaProperti, _this20$audio2, _this20$mediaProperti2, _this20$video, _this20$mediaProperti3, _this20$mediaProperti4, _this20$mediaProperti5, _this20$mediaProperti6;
3809
+ _this20.statsAnalyzer.updateMediaStatus({
3725
3810
  actual: status,
3726
3811
  expected: {
3727
3812
  // 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
3813
+ 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()),
3814
+ 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()),
3815
+ sendShare: (_this20$mediaProperti3 = _this20.mediaProperties.mediaDirection) === null || _this20$mediaProperti3 === void 0 ? void 0 : _this20$mediaProperti3.sendShare,
3816
+ receiveAudio: (_this20$mediaProperti4 = _this20.mediaProperties.mediaDirection) === null || _this20$mediaProperti4 === void 0 ? void 0 : _this20$mediaProperti4.receiveAudio,
3817
+ receiveVideo: (_this20$mediaProperti5 = _this20.mediaProperties.mediaDirection) === null || _this20$mediaProperti5 === void 0 ? void 0 : _this20$mediaProperti5.receiveVideo,
3818
+ receiveShare: (_this20$mediaProperti6 = _this20.mediaProperties.mediaDirection) === null || _this20$mediaProperti6 === void 0 ? void 0 : _this20$mediaProperti6.receiveShare
3734
3819
  }
3735
3820
  });
3736
3821
  }
3737
3822
  });
3738
3823
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE, function (payload) {
3739
- _triggerProxy.default.trigger(_this19, {
3824
+ _triggerProxy.default.trigger(_this20, {
3740
3825
  file: 'meeting/index',
3741
3826
  function: 'setUpLocusInfoSelfListener'
3742
3827
  }, _constants.EVENT_TRIGGERS.MEETING_SELF_CANNOT_VIEW_PARTICIPANT_LIST, {
@@ -3744,29 +3829,29 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3744
3829
  });
3745
3830
  });
3746
3831
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_MEETING_BREAKOUTS_CHANGED, function (payload) {
3747
- _this19.breakouts.updateBreakoutSessions(payload);
3748
- _triggerProxy.default.trigger(_this19, {
3832
+ _this20.breakouts.updateBreakoutSessions(payload);
3833
+ _triggerProxy.default.trigger(_this20, {
3749
3834
  file: 'meeting/index',
3750
3835
  function: 'setUpLocusInfoSelfListener'
3751
3836
  }, _constants.EVENT_TRIGGERS.MEETING_BREAKOUTS_UPDATE);
3752
3837
  });
3753
3838
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_MEETING_INTERPRETATION_CHANGED, function (payload) {
3754
- var targetChanged = _this19.simultaneousInterpretation.updateSelfInterpretation(payload);
3755
- _triggerProxy.default.trigger(_this19, {
3839
+ var targetChanged = _this20.simultaneousInterpretation.updateSelfInterpretation(payload);
3840
+ _triggerProxy.default.trigger(_this20, {
3756
3841
  file: 'meeting/index',
3757
3842
  function: 'setUpLocusInfoSelfListener'
3758
3843
  }, _constants.EVENT_TRIGGERS.MEETING_INTERPRETATION_UPDATE);
3759
- if (targetChanged && _this19.mediaProperties.audioStream) {
3760
- _this19.setSendNamedMediaGroup(_internalMediaCore.MediaType.AudioMain);
3844
+ if (targetChanged && _this20.mediaProperties.audioStream) {
3845
+ _this20.setSendNamedMediaGroup(_internalMediaCore.MediaType.AudioMain);
3761
3846
  }
3762
3847
  });
3763
3848
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_ROLES_CHANGED, function (payload) {
3764
- var _payload$newRoles, _payload$newRoles2, _payload$newRoles3, _payload$newRoles4;
3849
+ var _payload$newRoles, _payload$newRoles2, _payload$newRoles3;
3765
3850
  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, {
3851
+ _this20.breakouts.updateCanManageBreakouts(isModeratorOrCohost);
3852
+ _this20.simultaneousInterpretation.updateCanManageInterpreters((_payload$newRoles3 = payload.newRoles) === null || _payload$newRoles3 === void 0 ? void 0 : _payload$newRoles3.includes(_constants.SELF_ROLES.MODERATOR));
3853
+ _this20.webinar.updateRoleChanged(payload);
3854
+ _triggerProxy.default.trigger(_this20, {
3770
3855
  file: 'meeting/index',
3771
3856
  function: 'setUpLocusInfoSelfListener'
3772
3857
  }, _constants.EVENT_TRIGGERS.MEETING_SELF_ROLES_CHANGED, {
@@ -3774,7 +3859,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3774
3859
  });
3775
3860
  });
3776
3861
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_IS_SHARING_BLOCKED_CHANGE, function (payload) {
3777
- _triggerProxy.default.trigger(_this19, {
3862
+ _triggerProxy.default.trigger(_this20, {
3778
3863
  file: 'meeting/index',
3779
3864
  function: 'setUpLocusInfoSelfListener'
3780
3865
  }, _constants.EVENT_TRIGGERS.MEETING_SELF_IS_SHARING_BLOCKED, {
@@ -3792,42 +3877,42 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3792
3877
  }, {
3793
3878
  key: "setUpLocusInfoMeetingListener",
3794
3879
  value: function setUpLocusInfoMeetingListener() {
3795
- var _this20 = this;
3880
+ var _this21 = this;
3796
3881
  this.locusInfo.on(_constants.EVENTS.REMOTE_RESPONSE, function (payload) {
3797
- _this20.meetingFiniteStateMachine.remote(payload);
3882
+ _this21.meetingFiniteStateMachine.remote(payload);
3798
3883
  if (payload.remoteDeclined) {
3799
- _this20.leave({
3884
+ _this21.leave({
3800
3885
  reason: payload.reason
3801
3886
  }).then(function () {
3802
3887
  _loggerProxy.default.logger.info('Meeting:index#setUpLocusInfoMeetingListener --> REMOTE_RESPONSE. Attempting to leave meeting.');
3803
3888
  }).catch(function (error) {
3804
3889
  // @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));
3890
+ _loggerProxy.default.logger.error("Meeting:index#setUpLocusInfoMeetingListener --> REMOTE_RESPONSE. Issue with leave for meeting, meeting still in collection: ".concat(_this21, ", error: ").concat(error));
3806
3891
  });
3807
3892
  }
3808
3893
  });
3809
3894
  this.locusInfo.on(_constants.EVENTS.DESTROY_MEETING, /*#__PURE__*/function () {
3810
- var _ref26 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10(payload) {
3895
+ var _ref30 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10(payload) {
3811
3896
  return _regenerator.default.wrap(function _callee10$(_context10) {
3812
3897
  while (1) switch (_context10.prev = _context10.next) {
3813
3898
  case 0:
3814
- if (!_this20.wirelessShare) {
3899
+ if (!_this21.wirelessShare) {
3815
3900
  _context10.next = 7;
3816
3901
  break;
3817
3902
  }
3818
- if (!_this20.mediaProperties.shareVideoStream) {
3903
+ if (!_this21.mediaProperties.shareVideoStream) {
3819
3904
  _context10.next = 4;
3820
3905
  break;
3821
3906
  }
3822
3907
  _context10.next = 4;
3823
- return _this20.setLocalShareVideoStream(undefined);
3908
+ return _this21.setLocalShareVideoStream(undefined);
3824
3909
  case 4:
3825
- if (!_this20.mediaProperties.shareAudioStream) {
3910
+ if (!_this21.mediaProperties.shareAudioStream) {
3826
3911
  _context10.next = 7;
3827
3912
  break;
3828
3913
  }
3829
3914
  _context10.next = 7;
3830
- return _this20.setLocalShareAudioStream(undefined);
3915
+ return _this21.setLocalShareAudioStream(undefined);
3831
3916
  case 7:
3832
3917
  if (!payload.shouldLeave) {
3833
3918
  _context10.next = 19;
@@ -3835,7 +3920,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3835
3920
  }
3836
3921
  _context10.prev = 8;
3837
3922
  _context10.next = 11;
3838
- return _this20.leave({
3923
+ return _this21.leave({
3839
3924
  reason: payload.reason
3840
3925
  });
3841
3926
  case 11:
@@ -3846,19 +3931,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3846
3931
  _context10.prev = 14;
3847
3932
  _context10.t0 = _context10["catch"](8);
3848
3933
  // @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));
3934
+ _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
3935
  case 17:
3851
3936
  _context10.next = 22;
3852
3937
  break;
3853
3938
  case 19:
3854
3939
  _loggerProxy.default.logger.info('Meeting:index#setUpLocusInfoMeetingListener --> MEETING_REMOVED_REASON', payload.reason);
3855
- _util2.default.cleanUp(_this20);
3856
- _triggerProxy.default.trigger(_this20, {
3940
+ _util2.default.cleanUp(_this21);
3941
+ _triggerProxy.default.trigger(_this21, {
3857
3942
  file: 'meeting/index',
3858
3943
  function: 'setUpLocusInfoMeetingListener'
3859
3944
  }, _constants.EVENTS.DESTROY_MEETING, {
3860
3945
  reason: payload.reason,
3861
- meetingId: _this20.id
3946
+ meetingId: _this21.id
3862
3947
  });
3863
3948
  case 22:
3864
3949
  case "end":
@@ -3867,7 +3952,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3867
3952
  }, _callee10, null, [[8, 14]]);
3868
3953
  }));
3869
3954
  return function (_x10) {
3870
- return _ref26.apply(this, arguments);
3955
+ return _ref30.apply(this, arguments);
3871
3956
  };
3872
3957
  }());
3873
3958
  }
@@ -3883,13 +3968,13 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3883
3968
  }, {
3884
3969
  key: "updateMeetingObject",
3885
3970
  value: function updateMeetingObject(object) {
3886
- var _this21 = this;
3971
+ var _this22 = this;
3887
3972
  // Validate if these are valid meeting object property
3888
3973
  // TODO: add a check to make sure the value passed in the constructor
3889
3974
  // is not changed by any delta event
3890
3975
  if (object && (0, _keys.default)(object).length) {
3891
3976
  (0, _keys.default)(object).forEach(function (key) {
3892
- _this21[key] = object[key];
3977
+ _this22[key] = object[key];
3893
3978
  });
3894
3979
  }
3895
3980
  }
@@ -4142,6 +4227,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4142
4227
  canStopRecording: _util4.default.canUserStop(this.userDisplayHints, this.selfUserPolicies),
4143
4228
  canPauseRecording: _util4.default.canUserPause(this.userDisplayHints, this.selfUserPolicies),
4144
4229
  canResumeRecording: _util4.default.canUserResume(this.userDisplayHints, this.selfUserPolicies),
4230
+ isPremiseRecordingEnabled: _util4.default.isPremiseRecordingEnabled(this.userDisplayHints, this.selfUserPolicies),
4145
4231
  canRaiseHand: _util2.default.canUserRaiseHand(this.userDisplayHints),
4146
4232
  canLowerAllHands: _util2.default.canUserLowerAllHands(this.userDisplayHints),
4147
4233
  canLowerSomeoneElsesHand: _util2.default.canUserLowerSomeoneElsesHand(this.userDisplayHints),
@@ -4219,6 +4305,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4219
4305
  requiredHints: [_constants.DISPLAY_HINTS.DISABLE_VIEW_THE_PARTICIPANT_LIST],
4220
4306
  displayHints: this.userDisplayHints
4221
4307
  }),
4308
+ canEnableViewTheParticipantsListPanelist: _util5.default.hasHints({
4309
+ requiredHints: [_constants.DISPLAY_HINTS.ENABLE_VIEW_THE_PARTICIPANT_LIST_PANELIST],
4310
+ displayHints: this.userDisplayHints
4311
+ }),
4312
+ canDisableViewTheParticipantsListPanelist: _util5.default.hasHints({
4313
+ requiredHints: [_constants.DISPLAY_HINTS.DISABLE_VIEW_THE_PARTICIPANT_LIST_PANELIST],
4314
+ displayHints: this.userDisplayHints
4315
+ }),
4316
+ canEnableShowAttendeeCount: _util5.default.hasHints({
4317
+ requiredHints: [_constants.DISPLAY_HINTS.ENABLE_SHOW_ATTENDEE_COUNT],
4318
+ displayHints: this.userDisplayHints
4319
+ }),
4320
+ canDisableShowAttendeeCount: _util5.default.hasHints({
4321
+ requiredHints: [_constants.DISPLAY_HINTS.DISABLE_SHOW_ATTENDEE_COUNT],
4322
+ displayHints: this.userDisplayHints
4323
+ }),
4222
4324
  canEnableRaiseHand: _util5.default.hasHints({
4223
4325
  requiredHints: [_constants.DISPLAY_HINTS.ENABLE_RAISE_HAND],
4224
4326
  displayHints: this.userDisplayHints
@@ -4235,6 +4337,42 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4235
4337
  requiredHints: [_constants.DISPLAY_HINTS.DISABLE_VIDEO],
4236
4338
  displayHints: this.userDisplayHints
4237
4339
  }),
4340
+ canStartWebcast: _util5.default.hasHints({
4341
+ requiredHints: [_constants.DISPLAY_HINTS.WEBCAST_CONTROL_START],
4342
+ displayHints: this.userDisplayHints
4343
+ }),
4344
+ canStopWebcast: _util5.default.hasHints({
4345
+ requiredHints: [_constants.DISPLAY_HINTS.WEBCAST_CONTROL_STOP],
4346
+ displayHints: this.userDisplayHints
4347
+ }),
4348
+ canShowStageView: _util5.default.hasHints({
4349
+ requiredHints: [_constants.DISPLAY_HINTS.STAGE_VIEW_ACTIVE],
4350
+ displayHints: this.userDisplayHints
4351
+ }),
4352
+ canEnableStageView: _util5.default.hasHints({
4353
+ requiredHints: [_constants.DISPLAY_HINTS.ENABLE_STAGE_VIEW],
4354
+ displayHints: this.userDisplayHints
4355
+ }),
4356
+ canDisableStageView: _util5.default.hasHints({
4357
+ requiredHints: [_constants.DISPLAY_HINTS.DISABLE_STAGE_VIEW],
4358
+ displayHints: this.userDisplayHints
4359
+ }),
4360
+ isPracticeSessionOn: _util5.default.hasHints({
4361
+ requiredHints: [_constants.DISPLAY_HINTS.PRACTICE_SESSION_ON],
4362
+ displayHints: this.userDisplayHints
4363
+ }),
4364
+ isPracticeSessionOff: _util5.default.hasHints({
4365
+ requiredHints: [_constants.DISPLAY_HINTS.PRACTICE_SESSION_OFF],
4366
+ displayHints: this.userDisplayHints
4367
+ }),
4368
+ canStartPracticeSession: _util5.default.hasHints({
4369
+ requiredHints: [_constants.DISPLAY_HINTS.SHOW_PRACTICE_SESSION_START],
4370
+ displayHints: this.userDisplayHints
4371
+ }),
4372
+ canStopPracticeSession: _util5.default.hasHints({
4373
+ requiredHints: [_constants.DISPLAY_HINTS.SHOW_PRACTICE_SESSION_STOP],
4374
+ displayHints: this.userDisplayHints
4375
+ }),
4238
4376
  canShareFile: _util5.default.hasHints({
4239
4377
  requiredHints: [_constants.DISPLAY_HINTS.SHARE_FILE],
4240
4378
  displayHints: this.userDisplayHints
@@ -4379,6 +4517,64 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4379
4517
  _triggerProxy.default.trigger(this, options, _constants.EVENTS.REQUEST_UPLOAD_LOGS, this);
4380
4518
  }
4381
4519
 
4520
+ /**
4521
+ * sets the timer for periodic log upload
4522
+ * @returns {void}
4523
+ */
4524
+ }, {
4525
+ key: "setLogUploadTimer",
4526
+ value: function setLogUploadTimer() {
4527
+ var _this23 = this;
4528
+ // 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
4529
+ var LOG_UPLOAD_INTERVALS = [0.1, 1, 15, 15, 30, 30, 30, 60];
4530
+ var delay = 1000 *
4531
+ // @ts-ignore - config coming from registerPlugin
4532
+ this.config.logUploadIntervalMultiplicationFactor * LOG_UPLOAD_INTERVALS[this.logUploadIntervalIndex];
4533
+ if (this.logUploadIntervalIndex < LOG_UPLOAD_INTERVALS.length - 1) {
4534
+ this.logUploadIntervalIndex += 1;
4535
+ }
4536
+ this.uploadLogsTimer = (0, _commonTimers.safeSetTimeout)(function () {
4537
+ _this23.uploadLogsTimer = undefined;
4538
+ _this23.uploadLogs();
4539
+
4540
+ // just as an extra precaution, to avoid uploading logs forever in case something goes wrong
4541
+ // and the page remains opened, we stop it if there is no media connection
4542
+ if (!_this23.mediaProperties.webrtcMediaConnection) {
4543
+ return;
4544
+ }
4545
+ _this23.setLogUploadTimer();
4546
+ }, delay);
4547
+ }
4548
+
4549
+ /**
4550
+ * Starts a periodic upload of logs
4551
+ *
4552
+ * @returns {undefined}
4553
+ */
4554
+ }, {
4555
+ key: "startPeriodicLogUpload",
4556
+ value: function startPeriodicLogUpload() {
4557
+ // @ts-ignore - config coming from registerPlugin
4558
+ if (this.config.logUploadIntervalMultiplicationFactor && !this.uploadLogsTimer) {
4559
+ this.logUploadIntervalIndex = 0;
4560
+ this.setLogUploadTimer();
4561
+ }
4562
+ }
4563
+
4564
+ /**
4565
+ * Stops the periodic upload of logs
4566
+ *
4567
+ * @returns {undefined}
4568
+ */
4569
+ }, {
4570
+ key: "stopPeriodicLogUpload",
4571
+ value: function stopPeriodicLogUpload() {
4572
+ if (this.uploadLogsTimer) {
4573
+ clearTimeout(this.uploadLogsTimer);
4574
+ this.uploadLogsTimer = undefined;
4575
+ }
4576
+ }
4577
+
4382
4578
  /**
4383
4579
  * Removes remote audio, video and share streams from class instance's mediaProperties
4384
4580
  * @returns {undefined}
@@ -4413,7 +4609,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4413
4609
  }, {
4414
4610
  key: "closeRemoteStreams",
4415
4611
  value: function closeRemoteStreams() {
4416
- var _this22 = this;
4612
+ var _this24 = this;
4417
4613
  var _this$mediaProperties4 = this.mediaProperties,
4418
4614
  remoteAudioStream = _this$mediaProperties4.remoteAudioStream,
4419
4615
  remoteVideoStream = _this$mediaProperties4.remoteVideoStream,
@@ -4427,7 +4623,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4427
4623
  */
4428
4624
  // eslint-disable-next-line @typescript-eslint/no-shadow
4429
4625
  var triggerMediaStoppedEvent = function triggerMediaStoppedEvent(mediaType) {
4430
- _triggerProxy.default.trigger(_this22, {
4626
+ _triggerProxy.default.trigger(_this24, {
4431
4627
  file: 'meeting/index',
4432
4628
  function: 'closeRemoteStreams'
4433
4629
  }, _constants.EVENT_TRIGGERS.MEDIA_STOPPED, {
@@ -4735,7 +4931,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4735
4931
  }, {
4736
4932
  key: "setMercuryListener",
4737
4933
  value: function setMercuryListener() {
4738
- var _this23 = this;
4934
+ var _this25 = this;
4739
4935
  // Client will have a socket manager and handle reconnecting to mercury, when we reconnect to mercury
4740
4936
  // if the meeting has active peer connections, it should try to reconnect.
4741
4937
  // @ts-ignore
@@ -4743,33 +4939,33 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4743
4939
  _loggerProxy.default.logger.info('Meeting:index#setMercuryListener --> Web socket online');
4744
4940
 
4745
4941
  // Only send restore event when it was disconnected before and for connected later
4746
- if (!_this23.hasWebsocketConnected) {
4942
+ if (!_this25.hasWebsocketConnected) {
4747
4943
  // @ts-ignore
4748
- _this23.webex.internal.newMetrics.submitClientEvent({
4944
+ _this25.webex.internal.newMetrics.submitClientEvent({
4749
4945
  name: 'client.mercury.connection.restored',
4750
4946
  options: {
4751
- meetingId: _this23.id
4947
+ meetingId: _this25.id
4752
4948
  }
4753
4949
  });
4754
4950
  _metrics.default.sendBehavioralMetric(_constants2.default.MERCURY_CONNECTION_RESTORED, {
4755
- correlation_id: _this23.correlationId
4951
+ correlation_id: _this25.correlationId
4756
4952
  });
4757
4953
  }
4758
- _this23.hasWebsocketConnected = true;
4954
+ _this25.hasWebsocketConnected = true;
4759
4955
  });
4760
4956
 
4761
4957
  // @ts-ignore
4762
4958
  this.webex.internal.mercury.on(_constants.OFFLINE, function () {
4763
4959
  _loggerProxy.default.logger.error('Meeting:index#setMercuryListener --> Web socket offline');
4764
4960
  // @ts-ignore
4765
- _this23.webex.internal.newMetrics.submitClientEvent({
4961
+ _this25.webex.internal.newMetrics.submitClientEvent({
4766
4962
  name: 'client.mercury.connection.lost',
4767
4963
  options: {
4768
- meetingId: _this23.id
4964
+ meetingId: _this25.id
4769
4965
  }
4770
4966
  });
4771
4967
  _metrics.default.sendBehavioralMetric(_constants2.default.MERCURY_CONNECTION_FAILURE, {
4772
- correlation_id: _this23.correlationId
4968
+ correlation_id: _this25.correlationId
4773
4969
  });
4774
4970
  });
4775
4971
  }
@@ -4871,7 +5067,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4871
5067
  }, {
4872
5068
  key: "muteAudio",
4873
5069
  value: function muteAudio() {
4874
- var _this24 = this;
5070
+ var _this26 = this;
4875
5071
  if (!_util2.default.isUserInJoinedState(this.locusInfo)) {
4876
5072
  return _promise.default.reject(new _webexErrors.UserNotJoinedError());
4877
5073
  }
@@ -4887,22 +5083,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4887
5083
 
4888
5084
  // First, stop sending the local audio media
4889
5085
  return logRequest(this.audio.handleClientRequest(this, true).then(function () {
4890
- _util2.default.handleAudioLogging(_this24.mediaProperties.audioStream);
5086
+ _util2.default.handleAudioLogging(_this26.mediaProperties.audioStream);
4891
5087
  // @ts-ignore
4892
- _this24.webex.internal.newMetrics.submitClientEvent({
5088
+ _this26.webex.internal.newMetrics.submitClientEvent({
4893
5089
  name: 'client.muted',
4894
5090
  payload: {
4895
5091
  trigger: 'user-interaction',
4896
5092
  mediaType: 'audio'
4897
5093
  },
4898
5094
  options: {
4899
- meetingId: _this24.id
5095
+ meetingId: _this26.id
4900
5096
  }
4901
5097
  });
4902
5098
  }).catch(function (error) {
4903
5099
  _metrics.default.sendBehavioralMetric(_constants2.default.MUTE_AUDIO_FAILURE, {
4904
- correlation_id: _this24.correlationId,
4905
- locus_id: _this24.locusUrl.split('/').pop(),
5100
+ correlation_id: _this26.correlationId,
5101
+ locus_id: _this26.locusUrl.split('/').pop(),
4906
5102
  reason: error.message,
4907
5103
  stack: error.stack
4908
5104
  });
@@ -4921,7 +5117,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4921
5117
  }, {
4922
5118
  key: "unmuteAudio",
4923
5119
  value: function unmuteAudio() {
4924
- var _this25 = this;
5120
+ var _this27 = this;
4925
5121
  if (!_util2.default.isUserInJoinedState(this.locusInfo)) {
4926
5122
  return _promise.default.reject(new _webexErrors.UserNotJoinedError());
4927
5123
  }
@@ -4937,22 +5133,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4937
5133
 
4938
5134
  // First, send the control to unmute the participant on the server
4939
5135
  return logRequest(this.audio.handleClientRequest(this, false).then(function () {
4940
- _util2.default.handleAudioLogging(_this25.mediaProperties.audioStream);
5136
+ _util2.default.handleAudioLogging(_this27.mediaProperties.audioStream);
4941
5137
  // @ts-ignore
4942
- _this25.webex.internal.newMetrics.submitClientEvent({
5138
+ _this27.webex.internal.newMetrics.submitClientEvent({
4943
5139
  name: 'client.unmuted',
4944
5140
  payload: {
4945
5141
  trigger: 'user-interaction',
4946
5142
  mediaType: 'audio'
4947
5143
  },
4948
5144
  options: {
4949
- meetingId: _this25.id
5145
+ meetingId: _this27.id
4950
5146
  }
4951
5147
  });
4952
5148
  }).catch(function (error) {
4953
5149
  _metrics.default.sendBehavioralMetric(_constants2.default.UNMUTE_AUDIO_FAILURE, {
4954
- correlation_id: _this25.correlationId,
4955
- locus_id: _this25.locusUrl.split('/').pop(),
5150
+ correlation_id: _this27.correlationId,
5151
+ locus_id: _this27.locusUrl.split('/').pop(),
4956
5152
  reason: error.message,
4957
5153
  stack: error.stack
4958
5154
  });
@@ -4971,7 +5167,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4971
5167
  }, {
4972
5168
  key: "muteVideo",
4973
5169
  value: function muteVideo() {
4974
- var _this26 = this;
5170
+ var _this28 = this;
4975
5171
  if (!_util2.default.isUserInJoinedState(this.locusInfo)) {
4976
5172
  return _promise.default.reject(new _webexErrors.UserNotJoinedError());
4977
5173
  }
@@ -4985,22 +5181,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4985
5181
  return _promise.default.reject(new _parameter.default('no video control associated to the meeting'));
4986
5182
  }
4987
5183
  return logRequest(this.video.handleClientRequest(this, true).then(function () {
4988
- _util2.default.handleVideoLogging(_this26.mediaProperties.videoStream);
5184
+ _util2.default.handleVideoLogging(_this28.mediaProperties.videoStream);
4989
5185
  // @ts-ignore
4990
- _this26.webex.internal.newMetrics.submitClientEvent({
5186
+ _this28.webex.internal.newMetrics.submitClientEvent({
4991
5187
  name: 'client.muted',
4992
5188
  payload: {
4993
5189
  trigger: 'user-interaction',
4994
5190
  mediaType: 'video'
4995
5191
  },
4996
5192
  options: {
4997
- meetingId: _this26.id
5193
+ meetingId: _this28.id
4998
5194
  }
4999
5195
  });
5000
5196
  }).catch(function (error) {
5001
5197
  _metrics.default.sendBehavioralMetric(_constants2.default.MUTE_VIDEO_FAILURE, {
5002
- correlation_id: _this26.correlationId,
5003
- locus_id: _this26.locusUrl.split('/').pop(),
5198
+ correlation_id: _this28.correlationId,
5199
+ locus_id: _this28.locusUrl.split('/').pop(),
5004
5200
  reason: error.message,
5005
5201
  stack: error.stack
5006
5202
  });
@@ -5019,7 +5215,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5019
5215
  }, {
5020
5216
  key: "unmuteVideo",
5021
5217
  value: function unmuteVideo() {
5022
- var _this27 = this;
5218
+ var _this29 = this;
5023
5219
  if (!_util2.default.isUserInJoinedState(this.locusInfo)) {
5024
5220
  return _promise.default.reject(new _webexErrors.UserNotJoinedError());
5025
5221
  }
@@ -5033,22 +5229,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5033
5229
  return _promise.default.reject(new _parameter.default('no audio control associated to the meeting'));
5034
5230
  }
5035
5231
  return logRequest(this.video.handleClientRequest(this, false).then(function () {
5036
- _util2.default.handleVideoLogging(_this27.mediaProperties.videoStream);
5232
+ _util2.default.handleVideoLogging(_this29.mediaProperties.videoStream);
5037
5233
  // @ts-ignore
5038
- _this27.webex.internal.newMetrics.submitClientEvent({
5234
+ _this29.webex.internal.newMetrics.submitClientEvent({
5039
5235
  name: 'client.unmuted',
5040
5236
  payload: {
5041
5237
  trigger: 'user-interaction',
5042
5238
  mediaType: 'video'
5043
5239
  },
5044
5240
  options: {
5045
- meetingId: _this27.id
5241
+ meetingId: _this29.id
5046
5242
  }
5047
5243
  });
5048
5244
  }).catch(function (error) {
5049
5245
  _metrics.default.sendBehavioralMetric(_constants2.default.UNMUTE_VIDEO_FAILURE, {
5050
- correlation_id: _this27.correlationId,
5051
- locus_id: _this27.locusUrl.split('/').pop(),
5246
+ correlation_id: _this29.correlationId,
5247
+ locus_id: _this29.locusUrl.split('/').pop(),
5052
5248
  reason: error.message,
5053
5249
  stack: error.stack
5054
5250
  });
@@ -5078,7 +5274,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5078
5274
  key: "joinWithMedia",
5079
5275
  value: (function () {
5080
5276
  var _joinWithMedia = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee15() {
5081
- var _this28 = this;
5277
+ var _this30 = this;
5082
5278
  var options,
5083
5279
  mediaOptions,
5084
5280
  _options$joinOptions,
@@ -5118,34 +5314,30 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5118
5314
  _context15.prev = 9;
5119
5315
  forceTurnDiscovery = false;
5120
5316
  if (joinResponse) {
5121
- _context15.next = 36;
5317
+ _context15.next = 33;
5122
5318
  break;
5123
5319
  }
5124
5320
  _context15.next = 14;
5125
- return this.webex.meetings.reachability.getReachabilityResults();
5126
- case 14:
5127
- joinOptions.reachability = _context15.sent;
5128
- _context15.next = 17;
5129
5321
  return this.roap.generateTurnDiscoveryRequestMessage(this, true);
5130
- case 17:
5322
+ case 14:
5131
5323
  turnDiscoveryRequest = _context15.sent;
5132
5324
  turnDiscoverySkippedReason = turnDiscoveryRequest.turnDiscoverySkippedReason;
5133
5325
  joinOptions.roapMessage = turnDiscoveryRequest.roapMessage;
5134
5326
  _loggerProxy.default.logger.info('Meeting:index#joinWithMedia ---> calling join with joinOptions, ', joinOptions);
5135
- _context15.next = 23;
5327
+ _context15.next = 20;
5136
5328
  return this.join(joinOptions);
5137
- case 23:
5329
+ case 20:
5138
5330
  joinResponse = _context15.sent;
5139
5331
  joined = true;
5140
5332
 
5141
5333
  // if we sent out TURN discovery Roap message with join, process the TURN discovery response
5142
5334
  if (!joinOptions.roapMessage) {
5143
- _context15.next = 34;
5335
+ _context15.next = 31;
5144
5336
  break;
5145
5337
  }
5146
- _context15.next = 28;
5338
+ _context15.next = 25;
5147
5339
  return this.roap.handleTurnDiscoveryHttpResponse(this, joinResponse);
5148
- case 28:
5340
+ case 25:
5149
5341
  _yield$this$roap$hand = _context15.sent;
5150
5342
  turnServerInfo = _yield$this$roap$hand.turnServerInfo;
5151
5343
  turnDiscoverySkippedReason = _yield$this$roap$hand.turnDiscoverySkippedReason;
@@ -5154,20 +5346,20 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5154
5346
  if (turnServerInfo === undefined) {
5155
5347
  this.roap.abortTurnDiscovery();
5156
5348
  }
5157
- case 34:
5158
- _context15.next = 38;
5349
+ case 31:
5350
+ _context15.next = 35;
5159
5351
  break;
5160
- case 36:
5352
+ case 33:
5161
5353
  // This is a retry, when join succeeded but addMedia failed, so we'll just call addMedia() again,
5162
5354
  // but we need to ensure that it also does a new TURN discovery
5163
5355
  forceTurnDiscovery = true;
5164
5356
  joined = true;
5165
- case 38:
5166
- _context15.next = 40;
5357
+ case 35:
5358
+ _context15.next = 37;
5167
5359
  return this.addMediaInternal(function () {
5168
- return _this28.joinWithMediaRetryInfo.isRetry ? 'JOIN_MEETING_FINAL' : 'JOIN_MEETING_RETRY';
5360
+ return _this30.joinWithMediaRetryInfo.isRetry ? 'JOIN_MEETING_FINAL' : 'JOIN_MEETING_RETRY';
5169
5361
  }, turnServerInfo, forceTurnDiscovery, mediaOptions);
5170
- case 40:
5362
+ case 37:
5171
5363
  mediaResponse = _context15.sent;
5172
5364
  this.joinWithMediaRetryInfo = {
5173
5365
  isRetry: false,
@@ -5177,30 +5369,30 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5177
5369
  join: joinResponse,
5178
5370
  media: mediaResponse
5179
5371
  });
5180
- case 45:
5181
- _context15.prev = 45;
5372
+ case 42:
5373
+ _context15.prev = 42;
5182
5374
  _context15.t0 = _context15["catch"](9);
5183
5375
  _loggerProxy.default.logger.error('Meeting:index#joinWithMedia --> ', _context15.t0);
5184
5376
  this.roap.abortTurnDiscovery();
5185
5377
  if (!(joined && isRetry)) {
5186
- _context15.next = 59;
5378
+ _context15.next = 56;
5187
5379
  break;
5188
5380
  }
5189
- _context15.prev = 50;
5190
- _context15.next = 53;
5381
+ _context15.prev = 47;
5382
+ _context15.next = 50;
5191
5383
  return this.leave({
5192
5384
  resourceId: joinOptions === null || joinOptions === void 0 ? void 0 : joinOptions.resourceId,
5193
5385
  reason: 'joinWithMedia failure'
5194
5386
  });
5195
- case 53:
5196
- _context15.next = 59;
5387
+ case 50:
5388
+ _context15.next = 56;
5197
5389
  break;
5198
- case 55:
5199
- _context15.prev = 55;
5200
- _context15.t1 = _context15["catch"](50);
5390
+ case 52:
5391
+ _context15.prev = 52;
5392
+ _context15.t1 = _context15["catch"](47);
5201
5393
  _loggerProxy.default.logger.error('Meeting:index#joinWithMedia --> leave error', _context15.t1);
5202
5394
  leaveError = _context15.t1;
5203
- case 59:
5395
+ case 56:
5204
5396
  _metrics.default.sendBehavioralMetric(_constants2.default.JOIN_WITH_MEDIA_FAILURE, {
5205
5397
  correlation_id: this.correlationId,
5206
5398
  locus_id: (_this$locusUrl = this.locusUrl) === null || _this$locusUrl === void 0 ? void 0 : _this$locusUrl.split('/').pop(),
@@ -5221,24 +5413,24 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5221
5413
  shouldRetry = false;
5222
5414
  }
5223
5415
  if (!shouldRetry) {
5224
- _context15.next = 67;
5416
+ _context15.next = 64;
5225
5417
  break;
5226
5418
  }
5227
5419
  _loggerProxy.default.logger.warn('Meeting:index#joinWithMedia --> retrying call to joinWithMedia');
5228
5420
  this.joinWithMediaRetryInfo.isRetry = true;
5229
5421
  this.joinWithMediaRetryInfo.prevJoinResponse = joinResponse;
5230
5422
  return _context15.abrupt("return", this.joinWithMedia(options));
5231
- case 67:
5423
+ case 64:
5232
5424
  this.joinWithMediaRetryInfo = {
5233
5425
  isRetry: false,
5234
5426
  prevJoinResponse: undefined
5235
5427
  };
5236
5428
  throw _context15.t0;
5237
- case 69:
5429
+ case 66:
5238
5430
  case "end":
5239
5431
  return _context15.stop();
5240
5432
  }
5241
- }, _callee15, this, [[9, 45], [50, 55]]);
5433
+ }, _callee15, this, [[9, 42], [47, 52]]);
5242
5434
  }));
5243
5435
  function joinWithMedia() {
5244
5436
  return _joinWithMedia.apply(this, arguments);
@@ -5257,7 +5449,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5257
5449
  }, {
5258
5450
  key: "reconnect",
5259
5451
  value: function reconnect(options) {
5260
- var _this29 = this;
5452
+ var _this31 = this;
5261
5453
  _loggerProxy.default.logger.log("Meeting:index#reconnect --> attempting to reconnect meeting ".concat(this.id));
5262
5454
  if (!this.reconnectionManager || !this.reconnectionManager.reconnect) {
5263
5455
  return _promise.default.reject(new _parameter.default('Cannot reconnect, ReconnectionManager must first be defined.'));
@@ -5267,15 +5459,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5267
5459
  if (!_util2.default.isMediaEstablished(this.currentMediaStatus)) {
5268
5460
  return _promise.default.reject(new _parameter.default('Cannot reconnect, Media has not established to reconnect'));
5269
5461
  }
5462
+ this.cleanUpBeforeReconnection();
5270
5463
  return this.reconnectionManager.reconnect(options, /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee16() {
5271
5464
  return _regenerator.default.wrap(function _callee16$(_context16) {
5272
5465
  while (1) switch (_context16.prev = _context16.next) {
5273
5466
  case 0:
5274
5467
  _context16.next = 2;
5275
- return _this29.waitForRemoteSDPAnswer();
5468
+ return _this31.waitForRemoteSDPAnswer();
5276
5469
  case 2:
5277
5470
  _context16.next = 4;
5278
- return _this29.waitForMediaConnectionConnected();
5471
+ return _this31.waitForMediaConnectionConnected();
5279
5472
  case 4:
5280
5473
  case "end":
5281
5474
  return _context16.stop();
@@ -5289,7 +5482,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5289
5482
  return _promise.default.resolve();
5290
5483
  }
5291
5484
  _loggerProxy.default.logger.error('Meeting:index#reconnect --> Meeting reconnect failed', error);
5292
- _this29.uploadLogs({
5485
+ _this31.uploadLogs({
5293
5486
  file: 'meeting/index',
5294
5487
  function: 'reconnect'
5295
5488
  });
@@ -5336,19 +5529,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5336
5529
  }, {
5337
5530
  key: "setCaptionLanguage",
5338
5531
  value: function setCaptionLanguage(language) {
5339
- var _this30 = this;
5532
+ var _this32 = this;
5340
5533
  return new _promise.default(function (resolve, reject) {
5341
- if (!_this30.isTranscriptionSupported()) {
5534
+ if (!_this32.isTranscriptionSupported()) {
5342
5535
  _loggerProxy.default.logger.error('Meeting:index#setCaptionLanguage --> Webex Assistant is not enabled/supported');
5343
5536
  reject(new Error('Webex Assistant is not enabled/supported'));
5344
5537
  }
5345
5538
  try {
5346
5539
  var voiceaListenerCaptionUpdate = function voiceaListenerCaptionUpdate(payload) {
5347
5540
  // @ts-ignore
5348
- _this30.webex.internal.voicea.off(_internalPluginVoicea.EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, voiceaListenerCaptionUpdate);
5541
+ _this32.webex.internal.voicea.off(_internalPluginVoicea.EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, voiceaListenerCaptionUpdate);
5349
5542
  var statusCode = payload.statusCode;
5350
5543
  if (statusCode === 200) {
5351
- _this30.transcription.languageOptions = _objectSpread(_objectSpread({}, _this30.transcription.languageOptions), {}, {
5544
+ _this32.transcription.languageOptions = _objectSpread(_objectSpread({}, _this32.transcription.languageOptions), {}, {
5352
5545
  currentCaptionLanguage: language
5353
5546
  });
5354
5547
  resolve(language);
@@ -5357,9 +5550,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5357
5550
  }
5358
5551
  };
5359
5552
  // @ts-ignore
5360
- _this30.webex.internal.voicea.on(_internalPluginVoicea.EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, voiceaListenerCaptionUpdate);
5553
+ _this32.webex.internal.voicea.on(_internalPluginVoicea.EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, voiceaListenerCaptionUpdate);
5361
5554
  // @ts-ignore
5362
- _this30.webex.internal.voicea.requestLanguage(language);
5555
+ _this32.webex.internal.voicea.requestLanguage(language);
5363
5556
  } catch (error) {
5364
5557
  _loggerProxy.default.logger.error("Meeting:index#setCaptionLanguage --> ".concat(error));
5365
5558
  reject(error);
@@ -5375,23 +5568,23 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5375
5568
  }, {
5376
5569
  key: "setSpokenLanguage",
5377
5570
  value: function setSpokenLanguage(language) {
5378
- var _this31 = this;
5571
+ var _this33 = this;
5379
5572
  return new _promise.default(function (resolve, reject) {
5380
- if (!_this31.isTranscriptionSupported()) {
5573
+ if (!_this33.isTranscriptionSupported()) {
5381
5574
  _loggerProxy.default.logger.error('Meeting:index#setCaptionLanguage --> Webex Assistant is not enabled/supported');
5382
5575
  reject(new Error('Webex Assistant is not enabled/supported'));
5383
5576
  }
5384
- if (_this31.getCurUserType() !== 'host') {
5577
+ if (_this33.getCurUserType() !== 'host') {
5385
5578
  _loggerProxy.default.logger.error('Meeting:index#setSpokenLanguage --> Only host can set spoken language');
5386
5579
  reject(new Error('Only host can set spoken language'));
5387
5580
  }
5388
5581
  try {
5389
5582
  var voiceaListenerLanguageUpdate = function voiceaListenerLanguageUpdate(payload) {
5390
5583
  // @ts-ignore
5391
- _this31.webex.internal.voicea.off(_internalPluginVoicea.EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE, voiceaListenerLanguageUpdate);
5584
+ _this33.webex.internal.voicea.off(_internalPluginVoicea.EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE, voiceaListenerLanguageUpdate);
5392
5585
  var languageCode = payload.languageCode;
5393
5586
  if (languageCode) {
5394
- _this31.transcription.languageOptions = _objectSpread(_objectSpread({}, _this31.transcription.languageOptions), {}, {
5587
+ _this33.transcription.languageOptions = _objectSpread(_objectSpread({}, _this33.transcription.languageOptions), {}, {
5395
5588
  currentSpokenLanguage: languageCode
5396
5589
  });
5397
5590
  resolve(languageCode);
@@ -5401,10 +5594,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5401
5594
  };
5402
5595
 
5403
5596
  // @ts-ignore
5404
- _this31.webex.internal.voicea.on(_internalPluginVoicea.EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE, voiceaListenerLanguageUpdate);
5597
+ _this33.webex.internal.voicea.on(_internalPluginVoicea.EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE, voiceaListenerLanguageUpdate);
5405
5598
 
5406
5599
  // @ts-ignore
5407
- _this31.webex.internal.voicea.setSpokenLanguage(language);
5600
+ _this33.webex.internal.voicea.setSpokenLanguage(language);
5408
5601
  } catch (error) {
5409
5602
  _loggerProxy.default.logger.error("Meeting:index#setSpokenLanguage --> ".concat(error));
5410
5603
  reject(error);
@@ -5524,7 +5717,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5524
5717
  */
5525
5718
  function () {
5526
5719
  var _join = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee18() {
5527
- var _this32 = this;
5720
+ var _this34 = this;
5528
5721
  var options,
5529
5722
  errorMessage,
5530
5723
  error,
@@ -5670,62 +5863,62 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5670
5863
  return _context18.abrupt("return", _promise.default.reject(_context18.t0));
5671
5864
  case 51:
5672
5865
  return _context18.abrupt("return", _util2.default.joinMeetingOptions(this, options).then(function (join) {
5673
- _this32.meetingFiniteStateMachine.join();
5674
- _this32.setupLocusMediaRequest();
5866
+ _this34.meetingFiniteStateMachine.join();
5867
+ _this34.setupLocusMediaRequest();
5675
5868
 
5676
5869
  // @ts-ignore
5677
- _this32.webex.internal.device.meetingStarted();
5678
- (0, _classPrivateFieldSet2.default)(_this32, _isoLocalClientMeetingJoinTime, new Date().toISOString());
5870
+ _this34.webex.internal.device.meetingStarted();
5871
+ (0, _classPrivateFieldSet2.default)(_this34, _isoLocalClientMeetingJoinTime, new Date().toISOString());
5679
5872
  _loggerProxy.default.logger.log('Meeting:index#join --> Success');
5680
5873
  _metrics.default.sendBehavioralMetric(_constants2.default.JOIN_SUCCESS, {
5681
- correlation_id: _this32.correlationId
5874
+ correlation_id: _this34.correlationId
5682
5875
  });
5683
5876
  joinSuccess(join);
5684
- _this32.deferJoin = undefined;
5877
+ _this34.deferJoin = undefined;
5685
5878
  return join;
5686
5879
  }).catch(function (error) {
5687
- var _this32$meetingInfo, _error$error;
5688
- _this32.meetingFiniteStateMachine.fail(error);
5880
+ var _this34$meetingInfo, _error$error;
5881
+ _this34.meetingFiniteStateMachine.fail(error);
5689
5882
  _loggerProxy.default.logger.error('Meeting:index#join --> Failed', error);
5690
5883
 
5691
5884
  // @ts-ignore
5692
- _this32.webex.internal.newMetrics.submitClientEvent({
5885
+ _this34.webex.internal.newMetrics.submitClientEvent({
5693
5886
  name: 'client.locus.join.response',
5694
5887
  payload: {
5695
5888
  identifiers: {
5696
- meetingLookupUrl: (_this32$meetingInfo = _this32.meetingInfo) === null || _this32$meetingInfo === void 0 ? void 0 : _this32$meetingInfo.meetingLookupUrl
5889
+ meetingLookupUrl: (_this34$meetingInfo = _this34.meetingInfo) === null || _this34$meetingInfo === void 0 ? void 0 : _this34$meetingInfo.meetingLookupUrl
5697
5890
  }
5698
5891
  },
5699
5892
  options: {
5700
- meetingId: _this32.id,
5893
+ meetingId: _this34.id,
5701
5894
  rawError: error
5702
5895
  }
5703
5896
  });
5704
5897
 
5705
5898
  // TODO: change this to error codes and pre defined dictionary
5706
5899
  _metrics.default.sendBehavioralMetric(_constants2.default.JOIN_FAILURE, {
5707
- correlation_id: _this32.correlationId,
5900
+ correlation_id: _this34.correlationId,
5708
5901
  reason: (_error$error = error.error) === null || _error$error === void 0 ? void 0 : _error$error.message,
5709
5902
  stack: error.stack
5710
5903
  });
5711
5904
 
5712
5905
  // Upload logs on join Failure
5713
- _triggerProxy.default.trigger(_this32, {
5906
+ _triggerProxy.default.trigger(_this34, {
5714
5907
  file: 'meeting/index',
5715
5908
  function: 'join'
5716
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this32);
5909
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this34);
5717
5910
  joinFailed(error);
5718
- _this32.deferJoin = undefined;
5911
+ _this34.deferJoin = undefined;
5719
5912
  return _promise.default.reject(error);
5720
5913
  }).then(function (join) {
5721
5914
  // @ts-ignore - config coming from registerPlugin
5722
- if (_this32.config.enableAutomaticLLM) {
5915
+ if (_this34.config.enableAutomaticLLM) {
5723
5916
  // @ts-ignore
5724
- _this32.webex.internal.llm.on('online', _this32.handleLLMOnline);
5725
- _this32.updateLLMConnection().catch(function (error) {
5917
+ _this34.webex.internal.llm.on('online', _this34.handleLLMOnline);
5918
+ _this34.updateLLMConnection().catch(function (error) {
5726
5919
  _loggerProxy.default.logger.error('Meeting:index#join --> Transcription Socket Connection Failed', error);
5727
5920
  _metrics.default.sendBehavioralMetric(_constants2.default.LLM_CONNECTION_AFTER_JOIN_FAILURE, {
5728
- correlation_id: _this32.correlationId,
5921
+ correlation_id: _this34.correlationId,
5729
5922
  reason: error === null || error === void 0 ? void 0 : error.message,
5730
5923
  stack: error.stack
5731
5924
  });
@@ -5757,7 +5950,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5757
5950
  key: "updateLLMConnection",
5758
5951
  value: (function () {
5759
5952
  var _updateLLMConnection = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee19() {
5760
- var _this33 = this;
5953
+ var _this35 = this;
5761
5954
  var _this$locusInfo6, url, _this$locusInfo6$info, _this$locusInfo6$info2, datachannelUrl, isJoined;
5762
5955
  return _regenerator.default.wrap(function _callee19$(_context19) {
5763
5956
  while (1) switch (_context19.prev = _context19.next) {
@@ -5793,9 +5986,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5793
5986
  case 10:
5794
5987
  return _context19.abrupt("return", this.webex.internal.llm.registerAndConnect(url, datachannelUrl).then(function (registerAndConnectResult) {
5795
5988
  // @ts-ignore - Fix type
5796
- _this33.webex.internal.llm.off('event:relay.event', _this33.processRelayEvent);
5989
+ _this35.webex.internal.llm.off('event:relay.event', _this35.processRelayEvent);
5797
5990
  // @ts-ignore - Fix type
5798
- _this33.webex.internal.llm.on('event:relay.event', _this33.processRelayEvent);
5991
+ _this35.webex.internal.llm.on('event:relay.event', _this35.processRelayEvent);
5799
5992
  _loggerProxy.default.logger.info('Meeting:index#updateLLMConnection --> enabled to receive relay events!');
5800
5993
  return _promise.default.resolve(registerAndConnectResult);
5801
5994
  }));
@@ -5849,7 +6042,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5849
6042
  }, {
5850
6043
  key: "dialInPstn",
5851
6044
  value: function dialInPstn() {
5852
- var _this34 = this;
6045
+ var _this36 = this;
5853
6046
  if (this.isPhoneProvisioned(this.dialInDeviceStatus)) return _promise.default.resolve(); // prevent multiple dial in devices from being provisioned
5854
6047
 
5855
6048
  var correlationId = this.correlationId,
@@ -5865,10 +6058,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5865
6058
  }).catch(function (error) {
5866
6059
  var _error$error2;
5867
6060
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_DIAL_IN_FAILURE, {
5868
- correlation_id: _this34.correlationId,
5869
- dial_in_url: _this34.dialInUrl,
6061
+ correlation_id: _this36.correlationId,
6062
+ dial_in_url: _this36.dialInUrl,
5870
6063
  locus_id: locusUrl.split('/').pop(),
5871
- client_url: _this34.deviceUrl,
6064
+ client_url: _this36.deviceUrl,
5872
6065
  reason: (_error$error2 = error.error) === null || _error$error2 === void 0 ? void 0 : _error$error2.message,
5873
6066
  stack: error.stack
5874
6067
  });
@@ -5886,7 +6079,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5886
6079
  }, {
5887
6080
  key: "dialOutPstn",
5888
6081
  value: function dialOutPstn(phoneNumber) {
5889
- var _this35 = this;
6082
+ var _this37 = this;
5890
6083
  if (this.isPhoneProvisioned(this.dialOutDeviceStatus)) return _promise.default.resolve(); // prevent multiple dial out devices from being provisioned
5891
6084
 
5892
6085
  var correlationId = this.correlationId,
@@ -5903,10 +6096,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5903
6096
  }).catch(function (error) {
5904
6097
  var _error$error3;
5905
6098
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_DIAL_OUT_FAILURE, {
5906
- correlation_id: _this35.correlationId,
5907
- dial_out_url: _this35.dialOutUrl,
6099
+ correlation_id: _this37.correlationId,
6100
+ dial_out_url: _this37.dialOutUrl,
5908
6101
  locus_id: locusUrl.split('/').pop(),
5909
- client_url: _this35.deviceUrl,
6102
+ client_url: _this37.deviceUrl,
5910
6103
  reason: (_error$error3 = error.error) === null || _error$error3 === void 0 ? void 0 : _error$error3.message,
5911
6104
  stack: error.stack
5912
6105
  });
@@ -5937,7 +6130,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5937
6130
  }, {
5938
6131
  key: "moveTo",
5939
6132
  value: function moveTo(resourceId) {
5940
- var _this36 = this;
6133
+ var _this38 = this;
5941
6134
  if (!resourceId) {
5942
6135
  throw new _parameter.default('Cannot move call without a resourceId.');
5943
6136
  }
@@ -5981,12 +6174,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5981
6174
  while (1) switch (_context20.prev = _context20.next) {
5982
6175
  case 0:
5983
6176
  _context20.prev = 0;
5984
- if (!(_this36.screenShareFloorState === ScreenShareFloorStatus.GRANTED)) {
6177
+ if (!(_this38.screenShareFloorState === ScreenShareFloorStatus.GRANTED)) {
5985
6178
  _context20.next = 4;
5986
6179
  break;
5987
6180
  }
5988
6181
  _context20.next = 4;
5989
- return _this36.releaseScreenShareFloor();
6182
+ return _this38.releaseScreenShareFloor();
5990
6183
  case 4:
5991
6184
  mediaSettings = {
5992
6185
  mediaDirection: {
@@ -5998,37 +6191,37 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5998
6191
  receiveShare: true
5999
6192
  }
6000
6193
  };
6001
- _this36.mediaProperties.setMediaDirection(mediaSettings.mediaDirection);
6002
- _this36.mediaProperties.unsetRemoteMedia();
6194
+ _this38.mediaProperties.setMediaDirection(mediaSettings.mediaDirection);
6195
+ _this38.mediaProperties.unsetRemoteMedia();
6003
6196
 
6004
6197
  // 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
6198
  // once the device answers we close the old connection and create new media server connection with only share enabled
6006
- if (!_this36.statsAnalyzer) {
6199
+ if (!_this38.statsAnalyzer) {
6007
6200
  _context20.next = 10;
6008
6201
  break;
6009
6202
  }
6010
6203
  _context20.next = 10;
6011
- return _this36.statsAnalyzer.stopAnalyzer();
6204
+ return _this38.statsAnalyzer.stopAnalyzer();
6012
6205
  case 10:
6013
6206
  _context20.next = 12;
6014
- return _this36.closeRemoteStreams();
6207
+ return _this38.closeRemoteStreams();
6015
6208
  case 12:
6016
6209
  _context20.next = 14;
6017
- return _this36.closePeerConnections();
6210
+ return _this38.closePeerConnections();
6018
6211
  case 14:
6019
- _this36.cleanupLocalStreams();
6020
- _this36.unsetRemoteStreams();
6021
- _this36.unsetPeerConnections();
6022
- _this36.reconnectionManager.cleanUp();
6212
+ _this38.cleanupLocalStreams();
6213
+ _this38.unsetRemoteStreams();
6214
+ _this38.unsetPeerConnections();
6215
+ _this38.reconnectionManager.cleanUp();
6023
6216
  _context20.next = 20;
6024
- return _this36.addMedia({
6217
+ return _this38.addMedia({
6025
6218
  audioEnabled: false,
6026
6219
  videoEnabled: false,
6027
6220
  shareVideoEnabled: true
6028
6221
  });
6029
6222
  case 20:
6030
6223
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_TO_SUCCESS);
6031
- _this36.isMoveToInProgress = false;
6224
+ _this38.isMoveToInProgress = false;
6032
6225
  _context20.next = 29;
6033
6226
  break;
6034
6227
  case 24:
@@ -6036,12 +6229,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6036
6229
  _context20.t0 = _context20["catch"](0);
6037
6230
  _loggerProxy.default.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId', _context20.t0);
6038
6231
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_TO_FAILURE, {
6039
- correlation_id: _this36.correlationId,
6040
- locus_id: _this36.locusUrl.split('/').pop(),
6232
+ correlation_id: _this38.correlationId,
6233
+ locus_id: _this38.locusUrl.split('/').pop(),
6041
6234
  reason: _context20.t0.message,
6042
6235
  stack: _context20.t0.stack
6043
6236
  });
6044
- _this36.isMoveToInProgress = false;
6237
+ _this38.isMoveToInProgress = false;
6045
6238
  case 29:
6046
6239
  case "end":
6047
6240
  return _context20.stop();
@@ -6057,17 +6250,17 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6057
6250
  resourceId: resourceId,
6058
6251
  moveToResource: true
6059
6252
  }).then(function () {
6060
- _this36.meetingFiniteStateMachine.join();
6253
+ _this38.meetingFiniteStateMachine.join();
6061
6254
  }).catch(function (error) {
6062
- _this36.meetingFiniteStateMachine.fail(error);
6255
+ _this38.meetingFiniteStateMachine.fail(error);
6063
6256
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_TO_FAILURE, {
6064
- correlation_id: _this36.correlationId,
6065
- locus_id: _this36.locusUrl.split('/').pop(),
6257
+ correlation_id: _this38.correlationId,
6258
+ locus_id: _this38.locusUrl.split('/').pop(),
6066
6259
  reason: error.message,
6067
6260
  stack: error.stack
6068
6261
  });
6069
6262
  _loggerProxy.default.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId', error);
6070
- _this36.isMoveToInProgress = false;
6263
+ _this38.isMoveToInProgress = false;
6071
6264
  return _promise.default.reject(error);
6072
6265
  });
6073
6266
  }
@@ -6082,7 +6275,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6082
6275
  }, {
6083
6276
  key: "moveFrom",
6084
6277
  value: function moveFrom(resourceId) {
6085
- var _this37 = this;
6278
+ var _this39 = this;
6086
6279
  // On moveFrom ask the developer to re capture it moveFrom then updateMedia
6087
6280
  if (!resourceId) {
6088
6281
  throw new _parameter.default('Cannot move call without a resourceId.');
@@ -6097,19 +6290,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6097
6290
  }
6098
6291
  });
6099
6292
  return _util2.default.joinMeetingOptions(this).then(function () {
6100
- return _util2.default.leaveMeeting(_this37, {
6293
+ return _util2.default.leaveMeeting(_this39, {
6101
6294
  resourceId: resourceId,
6102
6295
  correlationId: oldCorrelationId,
6103
6296
  moveMeeting: true
6104
6297
  }).then(function () {
6105
- _this37.resourceId = '';
6298
+ _this39.resourceId = '';
6106
6299
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_FROM_SUCCESS);
6107
6300
  });
6108
6301
  }).catch(function (error) {
6109
- _this37.meetingFiniteStateMachine.fail(error);
6302
+ _this39.meetingFiniteStateMachine.fail(error);
6110
6303
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_FROM_FAILURE, {
6111
- correlation_id: _this37.correlationId,
6112
- locus_id: _this37.locusUrl.split('/').pop(),
6304
+ correlation_id: _this39.correlationId,
6305
+ locus_id: _this39.locusUrl.split('/').pop(),
6113
6306
  reason: error.message,
6114
6307
  stack: error.stack
6115
6308
  });
@@ -6222,9 +6415,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6222
6415
  }, {
6223
6416
  key: "forwardEvent",
6224
6417
  value: function forwardEvent(eventEmitter, eventTypeToForward, meetingEventType) {
6225
- var _this38 = this;
6418
+ var _this40 = this;
6226
6419
  eventEmitter.on(eventTypeToForward, function (data) {
6227
- return _triggerProxy.default.trigger(_this38, {
6420
+ return _triggerProxy.default.trigger(_this40, {
6228
6421
  file: 'meetings',
6229
6422
  function: 'addMedia'
6230
6423
  }, meetingEventType, data);
@@ -6411,7 +6604,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6411
6604
  */
6412
6605
  function () {
6413
6606
  var _waitForRemoteSDPAnswer = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee24() {
6414
- var _this39 = this;
6607
+ var _this41 = this;
6415
6608
  var LOG_HEADER, deferSDPAnswer;
6416
6609
  return _regenerator.default.wrap(function _callee24$(_context24) {
6417
6610
  while (1) switch (_context24.prev = _context24.next) {
@@ -6428,18 +6621,18 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6428
6621
  this.sdpResponseTimer = setTimeout(function () {
6429
6622
  _loggerProxy.default.logger.warn("".concat(LOG_HEADER, " timeout! no REMOTE SDP ANSWER received within ").concat(_constants.ROAP_OFFER_ANSWER_EXCHANGE_TIMEOUT / 1000, " seconds"));
6430
6623
  // @ts-ignore
6431
- _this39.webex.internal.newMetrics.submitClientEvent({
6624
+ _this41.webex.internal.newMetrics.submitClientEvent({
6432
6625
  name: 'client.media-engine.remote-sdp-received',
6433
6626
  payload: {
6434
6627
  canProceed: false,
6435
6628
  errors: [
6436
6629
  // @ts-ignore
6437
- _this39.webex.internal.newMetrics.callDiagnosticMetrics.getErrorPayloadForClientErrorCode({
6630
+ _this41.webex.internal.newMetrics.callDiagnosticMetrics.getErrorPayloadForClientErrorCode({
6438
6631
  clientErrorCode: _internalPluginMetrics.CALL_DIAGNOSTIC_CONFIG.MISSING_ROAP_ANSWER_CLIENT_CODE
6439
6632
  })]
6440
6633
  },
6441
6634
  options: {
6442
- meetingId: _this39.id,
6635
+ meetingId: _this41.id,
6443
6636
  rawError: new Error('Timeout waiting for SDP answer')
6444
6637
  }
6445
6638
  });
@@ -6825,6 +7018,43 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6825
7018
  return _cleanUpBeforeRetryWithTurnServer.apply(this, arguments);
6826
7019
  }
6827
7020
  return cleanUpBeforeRetryWithTurnServer;
7021
+ }())
7022
+ }, {
7023
+ key: "cleanUpBeforeReconnection",
7024
+ value: function () {
7025
+ var _cleanUpBeforeReconnection = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee32() {
7026
+ return _regenerator.default.wrap(function _callee32$(_context32) {
7027
+ while (1) switch (_context32.prev = _context32.next) {
7028
+ case 0:
7029
+ _context32.prev = 0;
7030
+ _context32.next = 3;
7031
+ return this.forceSendStatsReport({
7032
+ callFrom: 'cleanUpBeforeReconnection'
7033
+ });
7034
+ case 3:
7035
+ if (!this.statsAnalyzer) {
7036
+ _context32.next = 6;
7037
+ break;
7038
+ }
7039
+ _context32.next = 6;
7040
+ return this.statsAnalyzer.stopAnalyzer();
7041
+ case 6:
7042
+ _context32.next = 11;
7043
+ break;
7044
+ case 8:
7045
+ _context32.prev = 8;
7046
+ _context32.t0 = _context32["catch"](0);
7047
+ _loggerProxy.default.logger.error('Meeting:index#cleanUpBeforeReconnection --> Error during cleanup: ', _context32.t0);
7048
+ case 11:
7049
+ case "end":
7050
+ return _context32.stop();
7051
+ }
7052
+ }, _callee32, this, [[0, 8]]);
7053
+ }));
7054
+ function cleanUpBeforeReconnection() {
7055
+ return _cleanUpBeforeReconnection.apply(this, arguments);
7056
+ }
7057
+ return cleanUpBeforeReconnection;
6828
7058
  }()
6829
7059
  /**
6830
7060
  * Creates an instance of LocusMediaRequest for this meeting - it is needed for doing any calls
@@ -6832,7 +7062,6 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6832
7062
  *
6833
7063
  * @returns {void}
6834
7064
  */
6835
- )
6836
7065
  }, {
6837
7066
  key: "setupLocusMediaRequest",
6838
7067
  value: function setupLocusMediaRequest() {
@@ -6867,10 +7096,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6867
7096
  }, {
6868
7097
  key: "addMedia",
6869
7098
  value: function addMedia() {
6870
- var _this40 = this;
7099
+ var _this42 = this;
6871
7100
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
6872
7101
  return this.addMediaInternal(function () {
6873
- return _this40.turnServerUsed ? 'JOIN_MEETING_FINAL' : 'JOIN_MEETING_RETRY';
7102
+ return _this42.turnServerUsed ? 'JOIN_MEETING_FINAL' : 'JOIN_MEETING_RETRY';
6874
7103
  }, undefined, false, options);
6875
7104
  }
6876
7105
 
@@ -6888,7 +7117,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6888
7117
  }, {
6889
7118
  key: "addMediaInternal",
6890
7119
  value: (function () {
6891
- var _addMediaInternal = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee32(icePhaseCallback, turnServerInfo, forceTurnDiscovery) {
7120
+ var _addMediaInternal = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee33(icePhaseCallback, turnServerInfo, forceTurnDiscovery) {
6892
7121
  var options,
6893
7122
  LOG_HEADER,
6894
7123
  localStreams,
@@ -6901,6 +7130,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6901
7130
  _options$shareVideoEn,
6902
7131
  shareVideoEnabled,
6903
7132
  remoteMediaManagerConfig,
7133
+ _options$bundlePolicy,
6904
7134
  bundlePolicy,
6905
7135
  _this$remoteMediaMana,
6906
7136
  _yield$this$mediaProp,
@@ -6935,35 +7165,35 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6935
7165
  _selectedCandidatePairChanges,
6936
7166
  _numTransports,
6937
7167
  _iceCandidateErrors,
6938
- _args32 = arguments;
6939
- return _regenerator.default.wrap(function _callee32$(_context32) {
6940
- while (1) switch (_context32.prev = _context32.next) {
7168
+ _args33 = arguments;
7169
+ return _regenerator.default.wrap(function _callee33$(_context33) {
7170
+ while (1) switch (_context33.prev = _context33.next) {
6941
7171
  case 0:
6942
- options = _args32.length > 3 && _args32[3] !== undefined ? _args32[3] : {};
7172
+ options = _args33.length > 3 && _args33[3] !== undefined ? _args33[3] : {};
6943
7173
  this.addMediaData.retriedWithTurnServer = false;
6944
7174
  this.addMediaData.icePhaseCallback = icePhaseCallback;
6945
7175
  this.hasMediaConnectionConnectedAtLeastOnce = false;
6946
7176
  LOG_HEADER = 'Meeting:index#addMedia -->';
6947
7177
  _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
7178
  if (!(options.allowMediaInLobby !== true && this.meetingState !== _constants.FULL_STATE.ACTIVE)) {
6949
- _context32.next = 8;
7179
+ _context33.next = 8;
6950
7180
  break;
6951
7181
  }
6952
7182
  throw new _webexErrors.MeetingNotActiveError();
6953
7183
  case 8:
6954
7184
  if (!_util2.default.isUserInLeftState(this.locusInfo)) {
6955
- _context32.next = 10;
7185
+ _context33.next = 10;
6956
7186
  break;
6957
7187
  }
6958
7188
  throw new _webexErrors.UserNotJoinedError();
6959
7189
  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;
7190
+ 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
7191
  this.allowMediaInLobby = options === null || options === void 0 ? void 0 : options.allowMediaInLobby;
6962
7192
 
6963
7193
  // If the user is unjoined or guest waiting in lobby dont allow the user to addMedia
6964
7194
  // @ts-ignore - isUserUnadmitted coming from SelfUtil
6965
7195
  if (!(this.isUserUnadmitted && !this.wirelessShare && !this.allowMediaInLobby)) {
6966
- _context32.next = 14;
7196
+ _context33.next = 14;
6967
7197
  break;
6968
7198
  }
6969
7199
  throw new _webexErrors.UserInLobbyError();
@@ -7006,45 +7236,45 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7006
7236
  });
7007
7237
  this.audio = (0, _muteState.createMuteState)(_constants.AUDIO, this, audioEnabled);
7008
7238
  this.video = (0, _muteState.createMuteState)(_constants.VIDEO, this, videoEnabled);
7009
- _context32.prev = 18;
7010
- _context32.next = 21;
7239
+ _context33.prev = 18;
7240
+ _context33.next = 21;
7011
7241
  return this.setUpLocalStreamReferences(localStreams);
7012
7242
  case 21:
7013
7243
  this.setMercuryListener();
7014
7244
  this.createStatsAnalyzer();
7015
- _context32.next = 25;
7245
+ _context33.next = 25;
7016
7246
  return this.establishMediaConnection(remoteMediaManagerConfig, bundlePolicy, forceTurnDiscovery, turnServerInfo);
7017
7247
  case 25:
7018
7248
  if (!(audioEnabled || videoEnabled)) {
7019
- _context32.next = 30;
7249
+ _context33.next = 30;
7020
7250
  break;
7021
7251
  }
7022
- _context32.next = 28;
7252
+ _context33.next = 28;
7023
7253
  return Meeting.handleDeviceLogging(audioEnabled, videoEnabled);
7024
7254
  case 28:
7025
- _context32.next = 31;
7255
+ _context33.next = 31;
7026
7256
  break;
7027
7257
  case 30:
7028
7258
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " device logging not required"));
7029
7259
  case 31:
7030
7260
  if (!this.mediaProperties.hasLocalShareStream()) {
7031
- _context32.next = 34;
7261
+ _context33.next = 34;
7032
7262
  break;
7033
7263
  }
7034
- _context32.next = 34;
7264
+ _context33.next = 34;
7035
7265
  return this.enqueueScreenShareFloorRequest();
7036
7266
  case 34:
7037
- _context32.next = 36;
7267
+ _context33.next = 36;
7038
7268
  return this.mediaProperties.getCurrentConnectionInfo();
7039
7269
  case 36:
7040
- _yield$this$mediaProp = _context32.sent;
7270
+ _yield$this$mediaProp = _context33.sent;
7041
7271
  connectionType = _yield$this$mediaProp.connectionType;
7042
7272
  selectedCandidatePairChanges = _yield$this$mediaProp.selectedCandidatePairChanges;
7043
7273
  numTransports = _yield$this$mediaProp.numTransports;
7044
- _context32.next = 42;
7274
+ _context33.next = 42;
7045
7275
  return this.webex.meetings.reachability.getReachabilityMetrics();
7046
7276
  case 42:
7047
- reachabilityStats = _context32.sent;
7277
+ reachabilityStats = _context33.sent;
7048
7278
  iceCandidateErrors = Object.fromEntries(this.iceCandidateErrors);
7049
7279
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_MEDIA_SUCCESS, _objectSpread(_objectSpread(_objectSpread({
7050
7280
  correlation_id: this.correlationId,
@@ -7069,31 +7299,32 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7069
7299
 
7070
7300
  // We can log ReceiveSlot SSRCs only after the SDP exchange, so doing it here:
7071
7301
  (_this$remoteMediaMana = this.remoteMediaManager) === null || _this$remoteMediaMana === void 0 ? void 0 : _this$remoteMediaMana.logAllReceiveSlots();
7072
- _context32.next = 68;
7302
+ this.startPeriodicLogUpload();
7303
+ _context33.next = 69;
7073
7304
  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);
7305
+ case 51:
7306
+ _context33.prev = 51;
7307
+ _context33.t0 = _context33["catch"](18);
7308
+ _loggerProxy.default.logger.error("".concat(LOG_HEADER, " failed to establish media connection: "), _context33.t0);
7078
7309
 
7079
7310
  // @ts-ignore
7080
- _context32.next = 55;
7311
+ _context33.next = 56;
7081
7312
  return this.webex.meetings.reachability.getReachabilityMetrics();
7082
- case 55:
7083
- reachabilityMetrics = _context32.sent;
7084
- _context32.next = 58;
7313
+ case 56:
7314
+ reachabilityMetrics = _context33.sent;
7315
+ _context33.next = 59;
7085
7316
  return this.mediaProperties.getCurrentConnectionInfo();
7086
- case 58:
7087
- _yield$this$mediaProp2 = _context32.sent;
7317
+ case 59:
7318
+ _yield$this$mediaProp2 = _context33.sent;
7088
7319
  _selectedCandidatePairChanges = _yield$this$mediaProp2.selectedCandidatePairChanges;
7089
7320
  _numTransports = _yield$this$mediaProp2.numTransports;
7090
7321
  _iceCandidateErrors = Object.fromEntries(this.iceCandidateErrors);
7091
7322
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_MEDIA_FAILURE, _objectSpread(_objectSpread(_objectSpread({
7092
7323
  correlation_id: this.correlationId,
7093
7324
  locus_id: this.locusUrl.split('/').pop(),
7094
- reason: _context32.t0.message,
7095
- stack: _context32.t0.stack,
7096
- code: _context32.t0.code,
7325
+ reason: _context33.t0.message,
7326
+ stack: _context33.t0.stack,
7327
+ code: _context33.t0.code,
7097
7328
  selectedCandidatePairChanges: _selectedCandidatePairChanges,
7098
7329
  numTransports: _numTransports,
7099
7330
  turnDiscoverySkippedReason: this.turnDiscoverySkippedReason,
@@ -7107,29 +7338,29 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7107
7338
  }, reachabilityMetrics), _iceCandidateErrors), {}, {
7108
7339
  iceCandidatesCount: this.iceCandidatesCount
7109
7340
  }));
7110
- _context32.next = 65;
7341
+ _context33.next = 66;
7111
7342
  return this.cleanUpOnAddMediaFailure();
7112
- case 65:
7343
+ case 66:
7113
7344
  // Upload logs on error while adding media
7114
7345
  _triggerProxy.default.trigger(this, {
7115
7346
  file: 'meeting/index',
7116
7347
  function: 'addMedia'
7117
7348
  }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, this);
7118
- if (_context32.t0 instanceof _internalMediaCore.Errors.SdpError) {
7349
+ if (_context33.t0 instanceof _internalMediaCore.Errors.SdpError) {
7119
7350
  this.leave({
7120
7351
  reason: _constants.MEETING_REMOVED_REASON.MEETING_CONNECTION_FAILED
7121
7352
  });
7122
7353
  }
7123
- throw _context32.t0;
7124
- case 68:
7125
- _context32.prev = 68;
7354
+ throw _context33.t0;
7355
+ case 69:
7356
+ _context33.prev = 69;
7126
7357
  this.addMediaData.icePhaseCallback = DEFAULT_ICE_PHASE_CALLBACK;
7127
- return _context32.finish(68);
7128
- case 71:
7358
+ return _context33.finish(69);
7359
+ case 72:
7129
7360
  case "end":
7130
- return _context32.stop();
7361
+ return _context33.stop();
7131
7362
  }
7132
- }, _callee32, this, [[18, 50, 68, 71]]);
7363
+ }, _callee33, this, [[18, 51, 69, 72]]);
7133
7364
  }));
7134
7365
  function addMediaInternal(_x32, _x33, _x34) {
7135
7366
  return _addMediaInternal.apply(this, arguments);
@@ -7161,7 +7392,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7161
7392
  * @memberof Meeting
7162
7393
  */
7163
7394
  function enqueueMediaUpdate(mediaUpdateType) {
7164
- var _this41 = this;
7395
+ var _this43 = this;
7165
7396
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
7166
7397
  var canUpdateMediaNow = this.canUpdateMedia();
7167
7398
  return new _promise.default(function (resolve, reject) {
@@ -7172,9 +7403,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7172
7403
  options: options
7173
7404
  };
7174
7405
  _loggerProxy.default.logger.log("Meeting:index#enqueueMediaUpdate --> enqueuing media update type=".concat(mediaUpdateType));
7175
- _this41.queuedMediaUpdates.push(queueItem);
7406
+ _this43.queuedMediaUpdates.push(queueItem);
7176
7407
  if (canUpdateMediaNow) {
7177
- _this41.processNextQueuedMediaUpdate();
7408
+ _this43.processNextQueuedMediaUpdate();
7178
7409
  }
7179
7410
  });
7180
7411
  }
@@ -7197,35 +7428,35 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7197
7428
  * @memberof Meeting
7198
7429
  */
7199
7430
  function () {
7200
- var _updateMedia = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee33(options) {
7431
+ var _updateMedia = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee34(options) {
7201
7432
  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) {
7433
+ return _regenerator.default.wrap(function _callee34$(_context34) {
7434
+ while (1) switch (_context34.prev = _context34.next) {
7204
7435
  case 0:
7205
7436
  this.checkMediaConnection();
7206
7437
  audioEnabled = options.audioEnabled, videoEnabled = options.videoEnabled, shareAudioEnabled = options.shareAudioEnabled, shareVideoEnabled = options.shareVideoEnabled;
7207
7438
  _loggerProxy.default.logger.log("Meeting:index#updateMedia --> called with options=".concat((0, _stringify.default)(options)));
7208
7439
  if (this.canUpdateMedia()) {
7209
- _context33.next = 5;
7440
+ _context34.next = 5;
7210
7441
  break;
7211
7442
  }
7212
- return _context33.abrupt("return", this.enqueueMediaUpdate(MEDIA_UPDATE_TYPE.UPDATE_MEDIA, options));
7443
+ return _context34.abrupt("return", this.enqueueMediaUpdate(MEDIA_UPDATE_TYPE.UPDATE_MEDIA, options));
7213
7444
  case 5:
7214
7445
  if (!this.isMultistream) {
7215
- _context33.next = 10;
7446
+ _context34.next = 10;
7216
7447
  break;
7217
7448
  }
7218
7449
  if (!(shareAudioEnabled !== undefined || shareVideoEnabled !== undefined)) {
7219
- _context33.next = 8;
7450
+ _context34.next = 8;
7220
7451
  break;
7221
7452
  }
7222
7453
  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
7454
  case 8:
7224
- _context33.next = 12;
7455
+ _context34.next = 12;
7225
7456
  break;
7226
7457
  case 10:
7227
7458
  if (!(shareAudioEnabled !== undefined)) {
7228
- _context33.next = 12;
7459
+ _context34.next = 12;
7229
7460
  break;
7230
7461
  }
7231
7462
  throw new Error('toggling shareAudioEnabled in a transcoded meeting is not supported as of now');
@@ -7250,18 +7481,18 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7250
7481
  this.mediaProperties.mediaDirection.receiveShare = !!(shareAudioEnabled || shareVideoEnabled);
7251
7482
  }
7252
7483
  if (this.isMultistream) {
7253
- _context33.next = 18;
7484
+ _context34.next = 18;
7254
7485
  break;
7255
7486
  }
7256
- _context33.next = 18;
7487
+ _context34.next = 18;
7257
7488
  return this.updateTranscodedMediaConnection();
7258
7489
  case 18:
7259
- return _context33.abrupt("return", undefined);
7490
+ return _context34.abrupt("return", undefined);
7260
7491
  case 19:
7261
7492
  case "end":
7262
- return _context33.stop();
7493
+ return _context34.stop();
7263
7494
  }
7264
- }, _callee33, this);
7495
+ }, _callee34, this);
7265
7496
  }));
7266
7497
  function updateMedia(_x35) {
7267
7498
  return _updateMedia.apply(this, arguments);
@@ -7279,7 +7510,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7279
7510
  }, {
7280
7511
  key: "acknowledge",
7281
7512
  value: function acknowledge(type) {
7282
- var _this42 = this;
7513
+ var _this44 = this;
7283
7514
  if (!type) {
7284
7515
  return _promise.default.reject(new _parameter.default('Type must be set to acknowledge the meeting.'));
7285
7516
  }
@@ -7291,12 +7522,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7291
7522
  }).then(function (response) {
7292
7523
  return _promise.default.resolve(response);
7293
7524
  }).then(function (response) {
7294
- _this42.meetingFiniteStateMachine.ring(type);
7525
+ _this44.meetingFiniteStateMachine.ring(type);
7295
7526
  // @ts-ignore
7296
- _this42.webex.internal.newMetrics.submitClientEvent({
7527
+ _this44.webex.internal.newMetrics.submitClientEvent({
7297
7528
  name: 'client.alert.displayed',
7298
7529
  options: {
7299
- meetingId: _this42.id
7530
+ meetingId: _this44.id
7300
7531
  }
7301
7532
  });
7302
7533
  return _promise.default.resolve({
@@ -7321,12 +7552,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7321
7552
  }, {
7322
7553
  key: "decline",
7323
7554
  value: function decline(reason) {
7324
- var _this43 = this;
7555
+ var _this45 = this;
7325
7556
  return _util2.default.declineMeeting(this, reason).then(function (decline) {
7326
- _this43.meetingFiniteStateMachine.decline();
7557
+ _this45.meetingFiniteStateMachine.decline();
7327
7558
  return _promise.default.resolve(decline);
7328
7559
  }).catch(function (error) {
7329
- _this43.meetingFiniteStateMachine.fail(error);
7560
+ _this45.meetingFiniteStateMachine.fail(error);
7330
7561
  return _promise.default.reject(error);
7331
7562
  });
7332
7563
  }
@@ -7377,7 +7608,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7377
7608
  }, {
7378
7609
  key: "leave",
7379
7610
  value: function leave() {
7380
- var _this44 = this;
7611
+ var _this46 = this;
7381
7612
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
7382
7613
  var leaveReason = options.reason || _constants.MEETING_REMOVED_REASON.CLIENT_LEAVE_REQUEST;
7383
7614
 
@@ -7389,7 +7620,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7389
7620
  var payload = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
7390
7621
  return (
7391
7622
  // @ts-ignore
7392
- _this44.webex.internal.newMetrics.submitClientEvent({
7623
+ _this46.webex.internal.newMetrics.submitClientEvent({
7393
7624
  name: 'client.call.leave',
7394
7625
  payload: _objectSpread({
7395
7626
  trigger: 'user-interaction',
@@ -7397,7 +7628,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7397
7628
  leaveReason: options.clientEventLeaveReason
7398
7629
  }, payload),
7399
7630
  options: {
7400
- meetingId: _this44.id
7631
+ meetingId: _this46.id
7401
7632
  }
7402
7633
  })
7403
7634
  );
@@ -7406,24 +7637,24 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7406
7637
  return _util2.default.leaveMeeting(this, options).then(function (leave) {
7407
7638
  // CA team recommends submitting this *after* locus /leave
7408
7639
  submitLeaveMetric();
7409
- _this44.meetingFiniteStateMachine.leave();
7410
- _this44.clearMeetingData();
7640
+ _this46.meetingFiniteStateMachine.leave();
7641
+ _this46.clearMeetingData();
7411
7642
 
7412
7643
  // upload logs on leave irrespective of meeting delete
7413
- _triggerProxy.default.trigger(_this44, {
7644
+ _triggerProxy.default.trigger(_this46, {
7414
7645
  file: 'meeting/index',
7415
7646
  function: 'leave'
7416
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this44);
7647
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this46);
7417
7648
 
7418
7649
  // TODO: more testing before we remove this code, we are not sure the scenarios for destroy here
7419
- if (_this44.wirelessShare || _this44.guest) {
7650
+ if (_this46.wirelessShare || _this46.guest) {
7420
7651
  // If screen sharing clean the meeting object
7421
- _triggerProxy.default.trigger(_this44, {
7652
+ _triggerProxy.default.trigger(_this46, {
7422
7653
  file: 'meeting/index',
7423
7654
  function: 'leave'
7424
7655
  }, _constants.EVENTS.DESTROY_MEETING, {
7425
7656
  reason: options.reason,
7426
- meetingId: _this44.id
7657
+ meetingId: _this46.id
7427
7658
  });
7428
7659
  }
7429
7660
  _loggerProxy.default.logger.log('Meeting:index#leave --> LEAVE REASON ', leaveReason);
@@ -7440,16 +7671,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7440
7671
  shownToUser: false
7441
7672
  }]
7442
7673
  });
7443
- _this44.meetingFiniteStateMachine.fail(error);
7674
+ _this46.meetingFiniteStateMachine.fail(error);
7444
7675
  _loggerProxy.default.logger.error('Meeting:index#leave --> Failed to leave ', error);
7445
7676
  // upload logs on leave irrespective of meeting delete
7446
- _triggerProxy.default.trigger(_this44, {
7677
+ _triggerProxy.default.trigger(_this46, {
7447
7678
  file: 'meeting/index',
7448
7679
  function: 'leave'
7449
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this44);
7680
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this46);
7450
7681
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_LEAVE_FAILURE, {
7451
- correlation_id: _this44.correlationId,
7452
- locus_id: _this44.locusUrl.split('/').pop(),
7682
+ correlation_id: _this46.correlationId,
7683
+ locus_id: _this46.locusUrl.split('/').pop(),
7453
7684
  reason: error.message,
7454
7685
  stack: error.stack,
7455
7686
  code: error.code
@@ -7469,7 +7700,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7469
7700
  }, {
7470
7701
  key: "startWhiteboardShare",
7471
7702
  value: function startWhiteboardShare(channelUrl, resourceToken) {
7472
- var _this45 = this;
7703
+ var _this47 = this;
7473
7704
  var whiteboard = this.locusInfo.mediaShares.find(function (element) {
7474
7705
  return element.name === 'whiteboard';
7475
7706
  });
@@ -7498,13 +7729,13 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7498
7729
  body.resourceToken = resourceToken;
7499
7730
  }
7500
7731
  return this.meetingRequest.changeMeetingFloor(body).then(function () {
7501
- _this45.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
7732
+ _this47.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
7502
7733
  return _promise.default.resolve();
7503
7734
  }).catch(function (error) {
7504
7735
  _loggerProxy.default.logger.error('Meeting:index#startWhiteboardShare --> Error ', error);
7505
7736
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_START_WHITEBOARD_SHARE_FAILURE, {
7506
- correlation_id: _this45.correlationId,
7507
- locus_id: _this45.locusUrl.split('/').pop(),
7737
+ correlation_id: _this47.correlationId,
7738
+ locus_id: _this47.locusUrl.split('/').pop(),
7508
7739
  reason: error.message,
7509
7740
  stack: error.stack,
7510
7741
  board: {
@@ -7527,7 +7758,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7527
7758
  }, {
7528
7759
  key: "stopWhiteboardShare",
7529
7760
  value: function stopWhiteboardShare(channelUrl) {
7530
- var _this46 = this;
7761
+ var _this48 = this;
7531
7762
  var whiteboard = this.locusInfo.mediaShares.find(function (element) {
7532
7763
  return element.name === 'whiteboard';
7533
7764
  });
@@ -7550,8 +7781,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7550
7781
  }).catch(function (error) {
7551
7782
  _loggerProxy.default.logger.error('Meeting:index#stopWhiteboardShare --> Error ', error);
7552
7783
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_STOP_WHITEBOARD_SHARE_FAILURE, {
7553
- correlation_id: _this46.correlationId,
7554
- locus_id: _this46.locusUrl.split('/').pop(),
7784
+ correlation_id: _this48.correlationId,
7785
+ locus_id: _this48.locusUrl.split('/').pop(),
7555
7786
  reason: error.message,
7556
7787
  stack: error.stack,
7557
7788
  board: {
@@ -7573,7 +7804,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7573
7804
  }, {
7574
7805
  key: "requestScreenShareFloor",
7575
7806
  value: function requestScreenShareFloor() {
7576
- var _this47 = this;
7807
+ var _this49 = this;
7577
7808
  if (!this.mediaProperties.hasLocalShareStream() || !this.mediaProperties.mediaDirection.sendShare) {
7578
7809
  _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
7810
  this.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
@@ -7604,34 +7835,34 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7604
7835
  resourceUrl: this.resourceUrl,
7605
7836
  shareInstanceId: this.localShareInstanceId
7606
7837
  }).then(function () {
7607
- _this47.screenShareFloorState = ScreenShareFloorStatus.GRANTED;
7838
+ _this49.screenShareFloorState = ScreenShareFloorStatus.GRANTED;
7608
7839
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_SHARE_SUCCESS, {
7609
- correlation_id: _this47.correlationId,
7610
- locus_id: _this47.locusUrl.split('/').pop()
7840
+ correlation_id: _this49.correlationId,
7841
+ locus_id: _this49.locusUrl.split('/').pop()
7611
7842
  });
7612
7843
  return _promise.default.resolve();
7613
7844
  }).catch(function (error) {
7614
7845
  _loggerProxy.default.logger.error('Meeting:index#share --> Error ', error);
7615
7846
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_SHARE_FAILURE, {
7616
- correlation_id: _this47.correlationId,
7617
- locus_id: _this47.locusUrl.split('/').pop(),
7847
+ correlation_id: _this49.correlationId,
7848
+ locus_id: _this49.locusUrl.split('/').pop(),
7618
7849
  reason: error.message,
7619
7850
  stack: error.stack
7620
7851
  });
7621
7852
 
7622
7853
  // @ts-ignore
7623
- _this47.webex.internal.newMetrics.submitClientEvent({
7854
+ _this49.webex.internal.newMetrics.submitClientEvent({
7624
7855
  name: 'client.share.floor-granted.local',
7625
7856
  payload: {
7626
7857
  mediaType: 'share',
7627
7858
  errors: _util2.default.getChangeMeetingFloorErrorPayload(error.message),
7628
- shareInstanceId: _this47.localShareInstanceId
7859
+ shareInstanceId: _this49.localShareInstanceId
7629
7860
  },
7630
7861
  options: {
7631
- meetingId: _this47.id
7862
+ meetingId: _this49.id
7632
7863
  }
7633
7864
  });
7634
- _this47.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
7865
+ _this49.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
7635
7866
  return _promise.default.reject(error);
7636
7867
  });
7637
7868
  }
@@ -7654,10 +7885,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7654
7885
  }, {
7655
7886
  key: "requestScreenShareFloorIfPending",
7656
7887
  value: function requestScreenShareFloorIfPending() {
7657
- var _this48 = this;
7888
+ var _this50 = this;
7658
7889
  if (this.floorGrantPending && this.state === _constants.MEETING_STATE.STATES.JOINED) {
7659
7890
  this.requestScreenShareFloor().then(function () {
7660
- _this48.floorGrantPending = false;
7891
+ _this50.floorGrantPending = false;
7661
7892
  });
7662
7893
  }
7663
7894
  }
@@ -7671,7 +7902,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7671
7902
  }, {
7672
7903
  key: "releaseScreenShareFloor",
7673
7904
  value: function releaseScreenShareFloor() {
7674
- var _this49 = this;
7905
+ var _this51 = this;
7675
7906
  var content = this.locusInfo.mediaShares.find(function (element) {
7676
7907
  return element.name === _constants.CONTENT;
7677
7908
  });
@@ -7706,8 +7937,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7706
7937
  }).catch(function (error) {
7707
7938
  _loggerProxy.default.logger.error('Meeting:index#releaseScreenShareFloor --> Error ', error);
7708
7939
  _metrics.default.sendBehavioralMetric(_constants2.default.STOP_FLOOR_REQUEST_FAILURE, {
7709
- correlation_id: _this49.correlationId,
7710
- locus_id: _this49.locusUrl.split('/').pop(),
7940
+ correlation_id: _this51.correlationId,
7941
+ locus_id: _this51.locusUrl.split('/').pop(),
7711
7942
  reason: error.message,
7712
7943
  stack: error.stack
7713
7944
  });
@@ -7763,13 +7994,14 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7763
7994
  * @param {boolean} mutedEnabled
7764
7995
  * @param {boolean} disallowUnmuteEnabled
7765
7996
  * @param {boolean} muteOnEntryEnabled
7997
+ * @param {array} roles
7766
7998
  * @public
7767
7999
  * @memberof Meeting
7768
8000
  */
7769
8001
  }, {
7770
8002
  key: "setMuteAll",
7771
- value: function setMuteAll(mutedEnabled, disallowUnmuteEnabled, muteOnEntryEnabled) {
7772
- return this.controlsOptionsManager.setMuteAll(mutedEnabled, disallowUnmuteEnabled, muteOnEntryEnabled);
8003
+ value: function setMuteAll(mutedEnabled, disallowUnmuteEnabled, muteOnEntryEnabled, roles) {
8004
+ return this.controlsOptionsManager.setMuteAll(mutedEnabled, disallowUnmuteEnabled, muteOnEntryEnabled, roles);
7773
8005
  }
7774
8006
 
7775
8007
  /**
@@ -7886,7 +8118,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7886
8118
  }, {
7887
8119
  key: "changeVideoLayout",
7888
8120
  value: function changeVideoLayout(layoutType) {
7889
- var _this50 = this;
8121
+ var _this52 = this;
7890
8122
  var renderInfo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
7891
8123
  var main = renderInfo.main,
7892
8124
  content = renderInfo.content;
@@ -7940,7 +8172,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7940
8172
  }
7941
8173
  this.lastVideoLayoutInfo = (0, _lodash.cloneDeep)(layoutInfo);
7942
8174
  this.locusInfo.once(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_LAYOUT_UPDATED, function (envelope) {
7943
- _triggerProxy.default.trigger(_this50, {
8175
+ _triggerProxy.default.trigger(_this52, {
7944
8176
  file: 'meeting/index',
7945
8177
  function: 'changeVideoLayout'
7946
8178
  }, _constants.EVENT_TRIGGERS.MEETING_CONTROLS_LAYOUT_UPDATE, {
@@ -8056,7 +8288,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8056
8288
  }, {
8057
8289
  key: "endMeetingForAll",
8058
8290
  value: function endMeetingForAll() {
8059
- var _this51 = this;
8291
+ var _this53 = this;
8060
8292
  // @ts-ignore
8061
8293
  this.webex.internal.newMetrics.submitClientEvent({
8062
8294
  name: 'client.call.leave',
@@ -8074,25 +8306,25 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8074
8306
  locus_id: this.locusId
8075
8307
  });
8076
8308
  return _util2.default.endMeetingForAll(this).then(function (end) {
8077
- _this51.meetingFiniteStateMachine.end();
8078
- _this51.clearMeetingData();
8309
+ _this53.meetingFiniteStateMachine.end();
8310
+ _this53.clearMeetingData();
8079
8311
  // upload logs on leave irrespective of meeting delete
8080
- _triggerProxy.default.trigger(_this51, {
8312
+ _triggerProxy.default.trigger(_this53, {
8081
8313
  file: 'meeting/index',
8082
8314
  function: 'endMeetingForAll'
8083
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this51);
8315
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this53);
8084
8316
  return end;
8085
8317
  }).catch(function (error) {
8086
- _this51.meetingFiniteStateMachine.fail(error);
8318
+ _this53.meetingFiniteStateMachine.fail(error);
8087
8319
  _loggerProxy.default.logger.error('Meeting:index#endMeetingForAll --> Failed to end meeting ', error);
8088
8320
  // upload logs on leave irrespective of meeting delete
8089
- _triggerProxy.default.trigger(_this51, {
8321
+ _triggerProxy.default.trigger(_this53, {
8090
8322
  file: 'meeting/index',
8091
8323
  function: 'endMeetingForAll'
8092
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this51);
8324
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this53);
8093
8325
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_END_ALL_FAILURE, {
8094
- correlation_id: _this51.correlationId,
8095
- locus_id: _this51.locusUrl.split('/').pop(),
8326
+ correlation_id: _this53.correlationId,
8327
+ locus_id: _this53.locusUrl.split('/').pop(),
8096
8328
  reason: error.message,
8097
8329
  stack: error.stack,
8098
8330
  code: error.code
@@ -8181,37 +8413,37 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8181
8413
  }, {
8182
8414
  key: "enableMusicMode",
8183
8415
  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) {
8416
+ var _enableMusicMode = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee35(shouldEnableMusicMode) {
8417
+ return _regenerator.default.wrap(function _callee35$(_context35) {
8418
+ while (1) switch (_context35.prev = _context35.next) {
8187
8419
  case 0:
8188
8420
  this.checkMediaConnection();
8189
8421
  if (this.isMultistream) {
8190
- _context34.next = 3;
8422
+ _context35.next = 3;
8191
8423
  break;
8192
8424
  }
8193
8425
  throw new Error('enableMusicMode() only supported with multistream');
8194
8426
  case 3:
8195
8427
  if (!shouldEnableMusicMode) {
8196
- _context34.next = 8;
8428
+ _context35.next = 8;
8197
8429
  break;
8198
8430
  }
8199
- _context34.next = 6;
8431
+ _context35.next = 6;
8200
8432
  return this.sendSlotManager.setCodecParameters(_internalMediaCore.MediaType.AudioMain, {
8201
8433
  maxaveragebitrate: '64000',
8202
8434
  maxplaybackrate: '48000'
8203
8435
  });
8204
8436
  case 6:
8205
- _context34.next = 10;
8437
+ _context35.next = 10;
8206
8438
  break;
8207
8439
  case 8:
8208
- _context34.next = 10;
8440
+ _context35.next = 10;
8209
8441
  return this.sendSlotManager.deleteCodecParameters(_internalMediaCore.MediaType.AudioMain, ['maxaveragebitrate', 'maxplaybackrate']);
8210
8442
  case 10:
8211
8443
  case "end":
8212
- return _context34.stop();
8444
+ return _context35.stop();
8213
8445
  }
8214
- }, _callee34, this);
8446
+ }, _callee35, this);
8215
8447
  }));
8216
8448
  function enableMusicMode(_x36) {
8217
8449
  return _enableMusicMode.apply(this, arguments);
@@ -8234,7 +8466,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8234
8466
  _this$mediaProperties41,
8235
8467
  _this$mediaProperties42,
8236
8468
  _this$mediaProperties43,
8237
- _this52 = this;
8469
+ _this54 = this;
8238
8470
  var LOG_HEADER = 'Meeting:index#updateTranscodedMediaConnection -->';
8239
8471
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " starting"));
8240
8472
  if (!this.canUpdateMedia()) {
@@ -8259,8 +8491,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8259
8491
  }).catch(function (error) {
8260
8492
  _loggerProxy.default.logger.error("".concat(LOG_HEADER, " Error: "), error);
8261
8493
  _metrics.default.sendBehavioralMetric(_constants2.default.UPDATE_MEDIA_FAILURE, {
8262
- correlation_id: _this52.correlationId,
8263
- locus_id: _this52.locusUrl.split('/').pop(),
8494
+ correlation_id: _this54.correlationId,
8495
+ locus_id: _this54.locusUrl.split('/').pop(),
8264
8496
  reason: error.message,
8265
8497
  stack: error.stack
8266
8498
  });
@@ -8304,25 +8536,25 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8304
8536
  }, {
8305
8537
  key: "publishStream",
8306
8538
  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) {
8539
+ var _publishStream = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee36(mediaType, stream) {
8540
+ return _regenerator.default.wrap(function _callee36$(_context36) {
8541
+ while (1) switch (_context36.prev = _context36.next) {
8310
8542
  case 0:
8311
8543
  if (stream) {
8312
- _context35.next = 2;
8544
+ _context36.next = 2;
8313
8545
  break;
8314
8546
  }
8315
- return _context35.abrupt("return");
8547
+ return _context36.abrupt("return");
8316
8548
  case 2:
8317
8549
  if (!this.mediaProperties.webrtcMediaConnection) {
8318
- _context35.next = 7;
8550
+ _context36.next = 7;
8319
8551
  break;
8320
8552
  }
8321
8553
  if (!(this.isMultistream && this.mediaProperties.webrtcMediaConnection)) {
8322
- _context35.next = 6;
8554
+ _context36.next = 6;
8323
8555
  break;
8324
8556
  }
8325
- _context35.next = 6;
8557
+ _context36.next = 6;
8326
8558
  return this.sendSlotManager.publishStream(mediaType, stream);
8327
8559
  case 6:
8328
8560
  this.emitPublishStateChangeEvent({
@@ -8333,9 +8565,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8333
8565
  });
8334
8566
  case 7:
8335
8567
  case "end":
8336
- return _context35.stop();
8568
+ return _context36.stop();
8337
8569
  }
8338
- }, _callee35, this);
8570
+ }, _callee36, this);
8339
8571
  }));
8340
8572
  function publishStream(_x37, _x38) {
8341
8573
  return _publishStream.apply(this, arguments);
@@ -8353,21 +8585,21 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8353
8585
  }, {
8354
8586
  key: "unpublishStream",
8355
8587
  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) {
8588
+ var _unpublishStream = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee37(mediaType, stream) {
8589
+ return _regenerator.default.wrap(function _callee37$(_context37) {
8590
+ while (1) switch (_context37.prev = _context37.next) {
8359
8591
  case 0:
8360
8592
  if (stream) {
8361
- _context36.next = 2;
8593
+ _context37.next = 2;
8362
8594
  break;
8363
8595
  }
8364
- return _context36.abrupt("return");
8596
+ return _context37.abrupt("return");
8365
8597
  case 2:
8366
8598
  if (!(this.isMultistream && this.mediaProperties.webrtcMediaConnection)) {
8367
- _context36.next = 5;
8599
+ _context37.next = 5;
8368
8600
  break;
8369
8601
  }
8370
- _context36.next = 5;
8602
+ _context37.next = 5;
8371
8603
  return this.sendSlotManager.unpublishStream(mediaType);
8372
8604
  case 5:
8373
8605
  this.emitPublishStateChangeEvent({
@@ -8378,9 +8610,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8378
8610
  });
8379
8611
  case 6:
8380
8612
  case "end":
8381
- return _context36.stop();
8613
+ return _context37.stop();
8382
8614
  }
8383
- }, _callee36, this);
8615
+ }, _callee37, this);
8384
8616
  }));
8385
8617
  function unpublishStream(_x39, _x40) {
8386
8618
  return _unpublishStream.apply(this, arguments);
@@ -8397,67 +8629,92 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8397
8629
  }, {
8398
8630
  key: "publishStreams",
8399
8631
  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) {
8632
+ var _publishStreams = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee38(streams) {
8633
+ var _streams$screenShare, _streams$screenShare2, _streams$screenShare3, _streams$screenShare4, _streams$screenShare5, _streams$screenShare6;
8634
+ var streamChecks, _i, _streamChecks, _streamChecks$_i, stream, name, floorRequestNeeded, _streams$screenShare7;
8635
+ return _regenerator.default.wrap(function _callee38$(_context38) {
8636
+ while (1) switch (_context38.prev = _context38.next) {
8405
8637
  case 0:
8638
+ _loggerProxy.default.logger.info("Meeting:index#publishStreams --> called with: ".concat((0, _stringify.default)(streams)));
8406
8639
  this.checkMediaConnection();
8407
8640
  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;
8641
+ _context38.next = 4;
8409
8642
  break;
8410
8643
  }
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;
8644
+ return _context38.abrupt("return");
8645
+ case 4:
8646
+ streamChecks = [{
8647
+ stream: streams === null || streams === void 0 ? void 0 : streams.microphone,
8648
+ name: 'microphone'
8649
+ }, {
8650
+ stream: streams === null || streams === void 0 ? void 0 : streams.camera,
8651
+ name: 'camera'
8652
+ }, {
8653
+ stream: streams === null || streams === void 0 ? void 0 : (_streams$screenShare3 = streams.screenShare) === null || _streams$screenShare3 === void 0 ? void 0 : _streams$screenShare3.audio,
8654
+ name: 'screenShare audio'
8655
+ }, {
8656
+ stream: streams === null || streams === void 0 ? void 0 : (_streams$screenShare4 = streams.screenShare) === null || _streams$screenShare4 === void 0 ? void 0 : _streams$screenShare4.video,
8657
+ name: 'screenShare video'
8658
+ }];
8659
+ _i = 0, _streamChecks = streamChecks;
8660
+ case 6:
8661
+ if (!(_i < _streamChecks.length)) {
8662
+ _context38.next = 13;
8415
8663
  break;
8416
8664
  }
8417
- throw new Error("Attempted to publish stream with ended readyState, correlationId=".concat(this.correlationId));
8418
- case 5:
8665
+ _streamChecks$_i = _streamChecks[_i], stream = _streamChecks$_i.stream, name = _streamChecks$_i.name;
8666
+ if (!((stream === null || stream === void 0 ? void 0 : stream.readyState) === 'ended')) {
8667
+ _context38.next = 10;
8668
+ break;
8669
+ }
8670
+ throw new Error("Attempted to publish ".concat(name, " stream with ended readyState, correlationId=").concat(this.correlationId));
8671
+ case 10:
8672
+ _i++;
8673
+ _context38.next = 6;
8674
+ break;
8675
+ case 13:
8419
8676
  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;
8677
+ if (!(this.isMultistream && (_streams$screenShare5 = streams.screenShare) !== null && _streams$screenShare5 !== void 0 && _streams$screenShare5.audio)) {
8678
+ _context38.next = 18;
8422
8679
  break;
8423
8680
  }
8424
- _context37.next = 9;
8681
+ _context38.next = 17;
8425
8682
  return this.setLocalShareAudioStream(streams.screenShare.audio);
8426
- case 9:
8683
+ case 17:
8427
8684
  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;
8685
+ case 18:
8686
+ if (!((_streams$screenShare6 = streams.screenShare) !== null && _streams$screenShare6 !== void 0 && _streams$screenShare6.video)) {
8687
+ _context38.next = 22;
8431
8688
  break;
8432
8689
  }
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:
8690
+ _context38.next = 21;
8691
+ return this.setLocalShareVideoStream((_streams$screenShare7 = streams.screenShare) === null || _streams$screenShare7 === void 0 ? void 0 : _streams$screenShare7.video);
8692
+ case 21:
8436
8693
  floorRequestNeeded = this.screenShareFloorState === ScreenShareFloorStatus.RELEASED;
8437
- case 14:
8694
+ case 22:
8438
8695
  if (!streams.microphone) {
8439
- _context37.next = 17;
8696
+ _context38.next = 25;
8440
8697
  break;
8441
8698
  }
8442
- _context37.next = 17;
8699
+ _context38.next = 25;
8443
8700
  return this.setLocalAudioStream(streams.microphone);
8444
- case 17:
8701
+ case 25:
8445
8702
  if (!streams.camera) {
8446
- _context37.next = 20;
8703
+ _context38.next = 28;
8447
8704
  break;
8448
8705
  }
8449
- _context37.next = 20;
8706
+ _context38.next = 28;
8450
8707
  return this.setLocalVideoStream(streams.camera);
8451
- case 20:
8708
+ case 28:
8452
8709
  if (this.isMultistream) {
8453
- _context37.next = 23;
8710
+ _context38.next = 31;
8454
8711
  break;
8455
8712
  }
8456
- _context37.next = 23;
8713
+ _context38.next = 31;
8457
8714
  return this.updateTranscodedMediaConnection();
8458
- case 23:
8715
+ case 31:
8459
8716
  if (!floorRequestNeeded) {
8460
- _context37.next = 29;
8717
+ _context38.next = 37;
8461
8718
  break;
8462
8719
  }
8463
8720
  this.localShareInstanceId = _uuid.default.v4();
@@ -8481,13 +8738,13 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8481
8738
  // we're sending the http request to Locus to request the screen share floor
8482
8739
  // only after the SDP update, because that's how it's always been done for transcoded meetings
8483
8740
  // and also if sharing from the start, we need confluence to have been created
8484
- _context37.next = 29;
8741
+ _context38.next = 37;
8485
8742
  return this.enqueueScreenShareFloorRequest();
8486
- case 29:
8743
+ case 37:
8487
8744
  case "end":
8488
- return _context37.stop();
8745
+ return _context38.stop();
8489
8746
  }
8490
- }, _callee37, this);
8747
+ }, _callee38, this);
8491
8748
  }));
8492
8749
  function publishStreams(_x41) {
8493
8750
  return _publishStreams.apply(this, arguments);
@@ -8504,11 +8761,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8504
8761
  }, {
8505
8762
  key: "unpublishStreams",
8506
8763
  value: (function () {
8507
- var _unpublishStreams = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee38(streams) {
8764
+ var _unpublishStreams = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee39(streams) {
8508
8765
  var promises, _iterator, _step, stream;
8509
- return _regenerator.default.wrap(function _callee38$(_context38) {
8510
- while (1) switch (_context38.prev = _context38.next) {
8766
+ return _regenerator.default.wrap(function _callee39$(_context39) {
8767
+ while (1) switch (_context39.prev = _context39.next) {
8511
8768
  case 0:
8769
+ _loggerProxy.default.logger.info("Meeting:index#unpublishStreams --> called with: ".concat((0, _stringify.default)(streams)));
8512
8770
  this.checkMediaConnection();
8513
8771
  promises = [];
8514
8772
  _iterator = _createForOfIteratorHelper(streams.filter(function (t) {
@@ -8538,9 +8796,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8538
8796
  if (!this.isMultistream) {
8539
8797
  promises.push(this.updateTranscodedMediaConnection());
8540
8798
  }
8541
- _context38.next = 7;
8799
+ _context39.next = 8;
8542
8800
  return _promise.default.all(promises);
8543
- case 7:
8801
+ case 8:
8544
8802
  // we're allowing for the SDK to support just audio share as well
8545
8803
  // so a share could be active with only video, only audio, or both
8546
8804
  // we're only releasing the floor if both streams have ended
@@ -8557,11 +8815,11 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8557
8815
  // nothing to do here, error is logged already inside releaseScreenShareFloor()
8558
8816
  }
8559
8817
  }
8560
- case 8:
8818
+ case 9:
8561
8819
  case "end":
8562
- return _context38.stop();
8820
+ return _context39.stop();
8563
8821
  }
8564
- }, _callee38, this);
8822
+ }, _callee39, this);
8565
8823
  }));
8566
8824
  function unpublishStreams(_x42) {
8567
8825
  return _unpublishStreams.apply(this, arguments);
@@ -8623,55 +8881,55 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8623
8881
  }], [{
8624
8882
  key: "handleDeviceLogging",
8625
8883
  value: (function () {
8626
- var _handleDeviceLogging = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee39(isAudioEnabled, isVideoEnabled) {
8884
+ var _handleDeviceLogging = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee40(isAudioEnabled, isVideoEnabled) {
8627
8885
  var devices;
8628
- return _regenerator.default.wrap(function _callee39$(_context39) {
8629
- while (1) switch (_context39.prev = _context39.next) {
8886
+ return _regenerator.default.wrap(function _callee40$(_context40) {
8887
+ while (1) switch (_context40.prev = _context40.next) {
8630
8888
  case 0:
8631
- _context39.prev = 0;
8889
+ _context40.prev = 0;
8632
8890
  devices = [];
8633
8891
  if (!(isVideoEnabled && isAudioEnabled)) {
8634
- _context39.next = 8;
8892
+ _context40.next = 8;
8635
8893
  break;
8636
8894
  }
8637
- _context39.next = 5;
8895
+ _context40.next = 5;
8638
8896
  return (0, _mediaHelpers.getDevices)();
8639
8897
  case 5:
8640
- devices = _context39.sent;
8641
- _context39.next = 18;
8898
+ devices = _context40.sent;
8899
+ _context40.next = 18;
8642
8900
  break;
8643
8901
  case 8:
8644
8902
  if (!isVideoEnabled) {
8645
- _context39.next = 14;
8903
+ _context40.next = 14;
8646
8904
  break;
8647
8905
  }
8648
- _context39.next = 11;
8906
+ _context40.next = 11;
8649
8907
  return (0, _mediaHelpers.getDevices)(_media.default.DeviceKind.VIDEO_INPUT);
8650
8908
  case 11:
8651
- devices = _context39.sent;
8652
- _context39.next = 18;
8909
+ devices = _context40.sent;
8910
+ _context40.next = 18;
8653
8911
  break;
8654
8912
  case 14:
8655
8913
  if (!isAudioEnabled) {
8656
- _context39.next = 18;
8914
+ _context40.next = 18;
8657
8915
  break;
8658
8916
  }
8659
- _context39.next = 17;
8917
+ _context40.next = 17;
8660
8918
  return (0, _mediaHelpers.getDevices)(_media.default.DeviceKind.AUDIO_INPUT);
8661
8919
  case 17:
8662
- devices = _context39.sent;
8920
+ devices = _context40.sent;
8663
8921
  case 18:
8664
8922
  _util2.default.handleDeviceLogging(devices);
8665
- _context39.next = 23;
8923
+ _context40.next = 23;
8666
8924
  break;
8667
8925
  case 21:
8668
- _context39.prev = 21;
8669
- _context39.t0 = _context39["catch"](0);
8926
+ _context40.prev = 21;
8927
+ _context40.t0 = _context40["catch"](0);
8670
8928
  case 23:
8671
8929
  case "end":
8672
- return _context39.stop();
8930
+ return _context40.stop();
8673
8931
  }
8674
- }, _callee39, null, [[0, 21]]);
8932
+ }, _callee40, null, [[0, 21]]);
8675
8933
  }));
8676
8934
  function handleDeviceLogging(_x43, _x44) {
8677
8935
  return _handleDeviceLogging.apply(this, arguments);