@webex/plugin-meetings 2.60.1-next.9 → 2.60.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (539) hide show
  1. package/README.md +8 -58
  2. package/dist/common/browser-detection.js +3 -2
  3. package/dist/common/browser-detection.js.map +1 -1
  4. package/dist/common/collection.js +4 -3
  5. package/dist/common/collection.js.map +1 -1
  6. package/dist/common/config.js +2 -1
  7. package/dist/common/config.js.map +1 -1
  8. package/dist/common/errors/captcha-error.js +2 -1
  9. package/dist/common/errors/captcha-error.js.map +1 -1
  10. package/dist/common/errors/intent-to-join.js +2 -1
  11. package/dist/common/errors/intent-to-join.js.map +1 -1
  12. package/dist/common/errors/join-meeting.js +2 -1
  13. package/dist/common/errors/join-meeting.js.map +1 -1
  14. package/dist/common/errors/media.js +2 -1
  15. package/dist/common/errors/media.js.map +1 -1
  16. package/dist/common/errors/parameter.js +4 -3
  17. package/dist/common/errors/parameter.js.map +1 -1
  18. package/dist/common/errors/password-error.js +2 -1
  19. package/dist/common/errors/password-error.js.map +1 -1
  20. package/dist/common/errors/permission.js +2 -1
  21. package/dist/common/errors/permission.js.map +1 -1
  22. package/dist/common/errors/{reclaim-host-role-errors.js → reclaim-host-role-error.js} +11 -7
  23. package/dist/common/errors/reclaim-host-role-error.js.map +1 -0
  24. package/dist/common/errors/reconnection-in-progress.js +2 -1
  25. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  26. package/dist/common/errors/reconnection.js +2 -1
  27. package/dist/common/errors/reconnection.js.map +1 -1
  28. package/dist/common/errors/stats.js +2 -1
  29. package/dist/common/errors/stats.js.map +1 -1
  30. package/dist/common/errors/webex-errors.d.ts +8 -20
  31. package/dist/common/errors/webex-errors.js +28 -48
  32. package/dist/common/errors/webex-errors.js.map +1 -1
  33. package/dist/common/errors/webex-meetings-error.js +2 -1
  34. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  35. package/dist/common/events/events-scope.js +2 -1
  36. package/dist/common/events/events-scope.js.map +1 -1
  37. package/dist/common/events/events.js +2 -1
  38. package/dist/common/events/events.js.map +1 -1
  39. package/dist/common/events/trigger-proxy.js +2 -1
  40. package/dist/common/events/trigger-proxy.js.map +1 -1
  41. package/dist/common/events/util.js +2 -1
  42. package/dist/common/events/util.js.map +1 -1
  43. package/dist/common/logs/logger-config.js +2 -1
  44. package/dist/common/logs/logger-config.js.map +1 -1
  45. package/dist/common/logs/logger-proxy.js +3 -2
  46. package/dist/common/logs/logger-proxy.js.map +1 -1
  47. package/dist/common/logs/request.d.ts +1 -3
  48. package/dist/common/logs/request.js +5 -8
  49. package/dist/common/logs/request.js.map +1 -1
  50. package/dist/common/queue.d.ts +7 -9
  51. package/dist/common/queue.js +9 -22
  52. package/dist/common/queue.js.map +1 -1
  53. package/dist/config.d.ts +7 -6
  54. package/dist/config.js +10 -8
  55. package/dist/config.js.map +1 -1
  56. package/dist/constants.d.ts +100 -234
  57. package/dist/constants.js +444 -433
  58. package/dist/constants.js.map +1 -1
  59. package/dist/controls-options-manager/constants.js +6 -3
  60. package/dist/controls-options-manager/constants.js.map +1 -1
  61. package/dist/controls-options-manager/enums.d.ts +1 -11
  62. package/dist/controls-options-manager/enums.js +6 -15
  63. package/dist/controls-options-manager/enums.js.map +1 -1
  64. package/dist/controls-options-manager/index.d.ts +1 -17
  65. package/dist/controls-options-manager/index.js +38 -127
  66. package/dist/controls-options-manager/index.js.map +1 -1
  67. package/dist/controls-options-manager/util.d.ts +7 -1
  68. package/dist/controls-options-manager/util.js +19 -309
  69. package/dist/controls-options-manager/util.js.map +1 -1
  70. package/dist/index.d.ts +3 -6
  71. package/dist/index.js +5 -121
  72. package/dist/index.js.map +1 -1
  73. package/dist/locus-info/controlsUtils.js +11 -100
  74. package/dist/locus-info/controlsUtils.js.map +1 -1
  75. package/dist/locus-info/embeddedAppsUtils.js +4 -3
  76. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  77. package/dist/locus-info/fullState.js +2 -1
  78. package/dist/locus-info/fullState.js.map +1 -1
  79. package/dist/locus-info/hostUtils.js +2 -1
  80. package/dist/locus-info/hostUtils.js.map +1 -1
  81. package/dist/locus-info/index.d.ts +4 -57
  82. package/dist/locus-info/index.js +84 -425
  83. package/dist/locus-info/index.js.map +1 -1
  84. package/dist/locus-info/infoUtils.js +5 -13
  85. package/dist/locus-info/infoUtils.js.map +1 -1
  86. package/dist/locus-info/mediaSharesUtils.js +3 -58
  87. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  88. package/dist/locus-info/parser.d.ts +6 -66
  89. package/dist/locus-info/parser.js +80 -253
  90. package/dist/locus-info/parser.js.map +1 -1
  91. package/dist/locus-info/selfUtils.js +13 -97
  92. package/dist/locus-info/selfUtils.js.map +1 -1
  93. package/dist/media/index.d.ts +0 -2
  94. package/dist/media/index.js +319 -107
  95. package/dist/media/index.js.map +1 -1
  96. package/dist/media/properties.d.ts +53 -38
  97. package/dist/media/properties.js +153 -96
  98. package/dist/media/properties.js.map +1 -1
  99. package/dist/media/util.js +22 -1
  100. package/dist/media/util.js.map +1 -1
  101. package/dist/mediaQualityMetrics/config.d.ts +230 -234
  102. package/dist/mediaQualityMetrics/config.js +498 -302
  103. package/dist/mediaQualityMetrics/config.js.map +1 -1
  104. package/dist/meeting/effectsState.d.ts +42 -0
  105. package/dist/meeting/effectsState.js +260 -0
  106. package/dist/meeting/effectsState.js.map +1 -0
  107. package/dist/meeting/in-meeting-actions.d.ts +0 -88
  108. package/dist/meeting/in-meeting-actions.js +3 -94
  109. package/dist/meeting/in-meeting-actions.js.map +1 -1
  110. package/dist/meeting/index.d.ts +520 -705
  111. package/dist/meeting/index.js +3083 -5041
  112. package/dist/meeting/index.js.map +1 -1
  113. package/dist/meeting/muteState.d.ts +25 -93
  114. package/dist/meeting/muteState.js +133 -224
  115. package/dist/meeting/muteState.js.map +1 -1
  116. package/dist/meeting/request.d.ts +47 -82
  117. package/dist/meeting/request.js +199 -304
  118. package/dist/meeting/request.js.map +1 -1
  119. package/dist/meeting/state.js +2 -1
  120. package/dist/meeting/state.js.map +1 -1
  121. package/dist/meeting/util.d.ts +1 -118
  122. package/dist/meeting/util.js +435 -676
  123. package/dist/meeting/util.js.map +1 -1
  124. package/dist/meeting-info/collection.js +4 -3
  125. package/dist/meeting-info/collection.js.map +1 -1
  126. package/dist/meeting-info/index.d.ts +1 -13
  127. package/dist/meeting-info/index.js +7 -74
  128. package/dist/meeting-info/index.js.map +1 -1
  129. package/dist/meeting-info/meeting-info-v2.d.ts +1 -31
  130. package/dist/meeting-info/meeting-info-v2.js +63 -200
  131. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  132. package/dist/meeting-info/request.js +2 -1
  133. package/dist/meeting-info/request.js.map +1 -1
  134. package/dist/meeting-info/util.js +3 -2
  135. package/dist/meeting-info/util.js.map +1 -1
  136. package/dist/meeting-info/utilv2.js +41 -39
  137. package/dist/meeting-info/utilv2.js.map +1 -1
  138. package/dist/meetings/collection.d.ts +0 -17
  139. package/dist/meetings/collection.js +4 -42
  140. package/dist/meetings/collection.js.map +1 -1
  141. package/dist/meetings/index.d.ts +20 -114
  142. package/dist/meetings/index.js +133 -540
  143. package/dist/meetings/index.js.map +1 -1
  144. package/dist/meetings/request.js +3 -4
  145. package/dist/meetings/request.js.map +1 -1
  146. package/dist/meetings/util.js +6 -107
  147. package/dist/meetings/util.js.map +1 -1
  148. package/dist/member/index.d.ts +1 -13
  149. package/dist/member/index.js +2 -45
  150. package/dist/member/index.js.map +1 -1
  151. package/dist/member/member.types.js +4 -3
  152. package/dist/member/member.types.js.map +1 -1
  153. package/dist/member/util.js +29 -120
  154. package/dist/member/util.js.map +1 -1
  155. package/dist/members/collection.d.ts +0 -5
  156. package/dist/members/collection.js +2 -11
  157. package/dist/members/collection.js.map +1 -1
  158. package/dist/members/index.d.ts +11 -56
  159. package/dist/members/index.js +47 -174
  160. package/dist/members/index.js.map +1 -1
  161. package/dist/members/request.d.ts +11 -67
  162. package/dist/members/request.js +54 -102
  163. package/dist/members/request.js.map +1 -1
  164. package/dist/members/types.js +4 -3
  165. package/dist/members/types.js.map +1 -1
  166. package/dist/members/util.d.ts +1 -214
  167. package/dist/members/util.js +284 -327
  168. package/dist/members/util.js.map +1 -1
  169. package/dist/metrics/config.d.ts +169 -0
  170. package/dist/metrics/config.js +289 -0
  171. package/dist/metrics/config.js.map +1 -0
  172. package/dist/metrics/constants.d.ts +6 -15
  173. package/dist/metrics/constants.js +9 -17
  174. package/dist/metrics/constants.js.map +1 -1
  175. package/dist/metrics/index.d.ts +111 -4
  176. package/dist/metrics/index.js +452 -4
  177. package/dist/metrics/index.js.map +1 -1
  178. package/dist/networkQualityMonitor/index.js +4 -5
  179. package/dist/networkQualityMonitor/index.js.map +1 -1
  180. package/dist/peer-connection-manager/index.d.ts +6 -0
  181. package/dist/peer-connection-manager/index.js +671 -0
  182. package/dist/peer-connection-manager/index.js.map +1 -0
  183. package/dist/peer-connection-manager/util.d.ts +6 -0
  184. package/dist/peer-connection-manager/util.js +110 -0
  185. package/dist/peer-connection-manager/util.js.map +1 -0
  186. package/dist/personal-meeting-room/index.js +3 -2
  187. package/dist/personal-meeting-room/index.js.map +1 -1
  188. package/dist/personal-meeting-room/request.js +3 -2
  189. package/dist/personal-meeting-room/request.js.map +1 -1
  190. package/dist/personal-meeting-room/util.js +2 -1
  191. package/dist/personal-meeting-room/util.js.map +1 -1
  192. package/dist/reachability/index.d.ts +95 -61
  193. package/dist/reachability/index.js +392 -304
  194. package/dist/reachability/index.js.map +1 -1
  195. package/dist/reachability/request.d.ts +3 -7
  196. package/dist/reachability/request.js +10 -18
  197. package/dist/reachability/request.js.map +1 -1
  198. package/dist/reactions/reactions.d.ts +2 -2
  199. package/dist/reactions/reactions.js +6 -4
  200. package/dist/reactions/reactions.js.map +1 -1
  201. package/dist/reactions/reactions.type.d.ts +3 -23
  202. package/dist/reactions/reactions.type.js +23 -21
  203. package/dist/reactions/reactions.type.js.map +1 -1
  204. package/dist/reconnection-manager/index.d.ts +8 -32
  205. package/dist/reconnection-manager/index.js +232 -285
  206. package/dist/reconnection-manager/index.js.map +1 -1
  207. package/dist/recording-controller/enums.js +5 -4
  208. package/dist/recording-controller/enums.js.map +1 -1
  209. package/dist/recording-controller/index.d.ts +1 -15
  210. package/dist/recording-controller/index.js +46 -57
  211. package/dist/recording-controller/index.js.map +1 -1
  212. package/dist/recording-controller/util.d.ts +4 -5
  213. package/dist/recording-controller/util.js +10 -10
  214. package/dist/recording-controller/util.js.map +1 -1
  215. package/dist/roap/collection.d.ts +10 -0
  216. package/dist/roap/collection.js +63 -0
  217. package/dist/roap/collection.js.map +1 -0
  218. package/dist/roap/handler.d.ts +47 -0
  219. package/dist/roap/handler.js +279 -0
  220. package/dist/roap/handler.js.map +1 -0
  221. package/dist/roap/index.d.ts +47 -9
  222. package/dist/roap/index.js +238 -100
  223. package/dist/roap/index.js.map +1 -1
  224. package/dist/roap/request.d.ts +12 -18
  225. package/dist/roap/request.js +180 -126
  226. package/dist/roap/request.js.map +1 -1
  227. package/dist/roap/state.d.ts +9 -0
  228. package/dist/roap/state.js +127 -0
  229. package/dist/roap/state.js.map +1 -0
  230. package/dist/roap/turnDiscovery.d.ts +16 -27
  231. package/dist/roap/turnDiscovery.js +105 -115
  232. package/dist/roap/turnDiscovery.js.map +1 -1
  233. package/dist/roap/util.d.ts +2 -0
  234. package/dist/roap/util.js +76 -0
  235. package/dist/roap/util.js.map +1 -0
  236. package/dist/statsAnalyzer/global.d.ts +83 -1
  237. package/dist/statsAnalyzer/global.js +85 -2
  238. package/dist/statsAnalyzer/global.js.map +1 -1
  239. package/dist/statsAnalyzer/index.d.ts +30 -50
  240. package/dist/statsAnalyzer/index.js +511 -436
  241. package/dist/statsAnalyzer/index.js.map +1 -1
  242. package/dist/statsAnalyzer/mqaUtil.d.ts +6 -8
  243. package/dist/statsAnalyzer/mqaUtil.js +90 -130
  244. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  245. package/dist/transcription/index.js +2 -1
  246. package/dist/transcription/index.js.map +1 -1
  247. package/package.json +26 -39
  248. package/src/common/errors/webex-errors.ts +12 -36
  249. package/src/common/logs/logger-proxy.ts +1 -1
  250. package/src/common/logs/request.ts +1 -5
  251. package/src/common/queue.ts +8 -22
  252. package/src/config.ts +7 -6
  253. package/src/constants.ts +100 -265
  254. package/src/controls-options-manager/enums.ts +0 -12
  255. package/src/controls-options-manager/index.ts +21 -116
  256. package/src/controls-options-manager/util.ts +14 -294
  257. package/src/index.js +15 -0
  258. package/src/locus-info/controlsUtils.ts +0 -110
  259. package/src/locus-info/index.ts +61 -450
  260. package/src/locus-info/infoUtils.ts +2 -14
  261. package/src/locus-info/mediaSharesUtils.ts +0 -64
  262. package/src/locus-info/parser.ts +47 -258
  263. package/src/locus-info/selfUtils.ts +2 -85
  264. package/src/media/index.ts +370 -153
  265. package/src/media/properties.ts +136 -106
  266. package/src/media/util.ts +21 -0
  267. package/src/mediaQualityMetrics/config.ts +377 -244
  268. package/src/meeting/effectsState.ts +209 -0
  269. package/src/meeting/in-meeting-actions.ts +0 -176
  270. package/src/meeting/index.ts +2581 -4306
  271. package/src/meeting/muteState.ts +138 -224
  272. package/src/meeting/request.ts +127 -214
  273. package/src/meeting/util.ts +423 -687
  274. package/src/meeting-info/index.ts +8 -81
  275. package/src/meeting-info/meeting-info-v2.ts +13 -163
  276. package/src/meeting-info/util.ts +1 -1
  277. package/src/meeting-info/utilv2.ts +28 -28
  278. package/src/meetings/collection.ts +0 -33
  279. package/src/meetings/index.ts +136 -531
  280. package/src/meetings/request.ts +0 -2
  281. package/src/meetings/util.ts +5 -116
  282. package/src/member/index.ts +1 -43
  283. package/src/member/util.ts +28 -125
  284. package/src/members/collection.ts +0 -8
  285. package/src/members/index.ts +52 -187
  286. package/src/members/request.ts +27 -87
  287. package/src/members/util.ts +291 -332
  288. package/src/metrics/config.ts +485 -0
  289. package/src/metrics/constants.ts +6 -15
  290. package/src/metrics/index.ts +471 -1
  291. package/src/networkQualityMonitor/index.ts +6 -6
  292. package/src/peer-connection-manager/index.ts +847 -0
  293. package/src/peer-connection-manager/util.ts +119 -0
  294. package/src/reachability/index.ts +347 -246
  295. package/src/reachability/request.ts +8 -17
  296. package/src/reactions/reactions.ts +4 -4
  297. package/src/reactions/reactions.type.ts +4 -30
  298. package/src/reconnection-manager/index.ts +156 -168
  299. package/src/recording-controller/index.ts +3 -20
  300. package/src/recording-controller/util.ts +9 -26
  301. package/src/roap/collection.ts +62 -0
  302. package/src/roap/handler.ts +294 -0
  303. package/src/roap/index.ts +241 -96
  304. package/src/roap/request.ts +148 -74
  305. package/src/roap/state.ts +156 -0
  306. package/src/roap/turnDiscovery.ts +56 -62
  307. package/src/roap/util.ts +100 -0
  308. package/src/statsAnalyzer/global.ts +84 -1
  309. package/src/statsAnalyzer/index.ts +645 -479
  310. package/src/statsAnalyzer/mqaUtil.ts +126 -128
  311. package/test/integration/spec/journey.js +264 -320
  312. package/test/integration/spec/space-meeting.js +4 -77
  313. package/test/unit/spec/common/queue.js +2 -31
  314. package/test/unit/spec/controls-options-manager/index.js +0 -163
  315. package/test/unit/spec/controls-options-manager/util.js +60 -576
  316. package/test/unit/spec/fixture/locus.js +0 -1
  317. package/test/unit/spec/locus-info/controlsUtils.js +30 -323
  318. package/test/unit/spec/locus-info/index.js +15 -1437
  319. package/test/unit/spec/locus-info/infoUtils.js +16 -54
  320. package/test/unit/spec/locus-info/lib/SeqCmp.json +0 -16
  321. package/test/unit/spec/locus-info/lib/selfConstant.js +0 -48
  322. package/test/unit/spec/locus-info/parser.js +35 -116
  323. package/test/unit/spec/locus-info/selfUtils.js +0 -275
  324. package/test/unit/spec/media/properties.ts +84 -75
  325. package/test/unit/spec/meeting/effectsState.js +281 -0
  326. package/test/unit/spec/meeting/in-meeting-actions.ts +0 -86
  327. package/test/unit/spec/meeting/index.js +2313 -8384
  328. package/test/unit/spec/meeting/muteState.js +213 -409
  329. package/test/unit/spec/meeting/request.js +43 -523
  330. package/test/unit/spec/meeting/utils.js +24 -834
  331. package/test/unit/spec/meeting-info/meetinginfov2.js +5 -527
  332. package/test/unit/spec/meeting-info/utilv2.js +0 -21
  333. package/test/unit/spec/meetings/collection.js +0 -26
  334. package/test/unit/spec/meetings/index.js +232 -1445
  335. package/test/unit/spec/meetings/utils.js +2 -202
  336. package/test/unit/spec/member/index.js +9 -32
  337. package/test/unit/spec/member/util.js +61 -499
  338. package/test/unit/spec/members/index.js +5 -394
  339. package/test/unit/spec/members/request.js +27 -206
  340. package/test/unit/spec/members/utils.js +38 -173
  341. package/test/unit/spec/metrics/index.js +50 -1
  342. package/test/unit/spec/networkQualityMonitor/index.js +4 -4
  343. package/test/unit/spec/peerconnection-manager/index.js +218 -0
  344. package/test/unit/spec/peerconnection-manager/utils.js +49 -0
  345. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +388 -0
  346. package/test/unit/spec/reachability/index.ts +24 -532
  347. package/test/unit/spec/reconnection-manager/index.js +24 -163
  348. package/test/unit/spec/recording-controller/index.js +218 -293
  349. package/test/unit/spec/recording-controller/util.js +96 -223
  350. package/test/unit/spec/roap/index.ts +77 -187
  351. package/test/unit/spec/roap/turnDiscovery.ts +48 -86
  352. package/test/unit/spec/roap/util.js +30 -0
  353. package/test/unit/spec/stats-analyzer/index.js +165 -644
  354. package/test/utils/testUtils.js +45 -0
  355. package/test/utils/webex-config.js +0 -4
  356. package/test/utils/webex-test-users.js +3 -7
  357. package/dist/annotation/annotation.types.d.ts +0 -42
  358. package/dist/annotation/annotation.types.js +0 -7
  359. package/dist/annotation/annotation.types.js.map +0 -1
  360. package/dist/annotation/constants.d.ts +0 -31
  361. package/dist/annotation/constants.js +0 -41
  362. package/dist/annotation/constants.js.map +0 -1
  363. package/dist/annotation/index.d.ts +0 -117
  364. package/dist/annotation/index.js +0 -357
  365. package/dist/annotation/index.js.map +0 -1
  366. package/dist/breakouts/breakout.d.ts +0 -8
  367. package/dist/breakouts/breakout.js +0 -215
  368. package/dist/breakouts/breakout.js.map +0 -1
  369. package/dist/breakouts/collection.d.ts +0 -5
  370. package/dist/breakouts/collection.js +0 -22
  371. package/dist/breakouts/collection.js.map +0 -1
  372. package/dist/breakouts/edit-lock-error.d.ts +0 -15
  373. package/dist/breakouts/edit-lock-error.js +0 -51
  374. package/dist/breakouts/edit-lock-error.js.map +0 -1
  375. package/dist/breakouts/events.d.ts +0 -8
  376. package/dist/breakouts/events.js +0 -44
  377. package/dist/breakouts/events.js.map +0 -1
  378. package/dist/breakouts/index.d.ts +0 -5
  379. package/dist/breakouts/index.js +0 -1047
  380. package/dist/breakouts/index.js.map +0 -1
  381. package/dist/breakouts/request.d.ts +0 -22
  382. package/dist/breakouts/request.js +0 -77
  383. package/dist/breakouts/request.js.map +0 -1
  384. package/dist/breakouts/utils.d.ts +0 -15
  385. package/dist/breakouts/utils.js +0 -64
  386. package/dist/breakouts/utils.js.map +0 -1
  387. package/dist/common/errors/no-meeting-info.d.ts +0 -14
  388. package/dist/common/errors/no-meeting-info.js +0 -50
  389. package/dist/common/errors/no-meeting-info.js.map +0 -1
  390. package/dist/common/errors/reclaim-host-role-errors.js.map +0 -1
  391. package/dist/controls-options-manager/types.d.ts +0 -43
  392. package/dist/controls-options-manager/types.js +0 -7
  393. package/dist/controls-options-manager/types.js.map +0 -1
  394. package/dist/interceptors/index.d.ts +0 -2
  395. package/dist/interceptors/index.js +0 -15
  396. package/dist/interceptors/index.js.map +0 -1
  397. package/dist/interceptors/locusRetry.d.ts +0 -27
  398. package/dist/interceptors/locusRetry.js +0 -94
  399. package/dist/interceptors/locusRetry.js.map +0 -1
  400. package/dist/interpretation/collection.d.ts +0 -5
  401. package/dist/interpretation/collection.js +0 -22
  402. package/dist/interpretation/collection.js.map +0 -1
  403. package/dist/interpretation/index.d.ts +0 -5
  404. package/dist/interpretation/index.js +0 -365
  405. package/dist/interpretation/index.js.map +0 -1
  406. package/dist/interpretation/siLanguage.d.ts +0 -5
  407. package/dist/interpretation/siLanguage.js +0 -24
  408. package/dist/interpretation/siLanguage.js.map +0 -1
  409. package/dist/meeting/locusMediaRequest.d.ts +0 -74
  410. package/dist/meeting/locusMediaRequest.js +0 -291
  411. package/dist/meeting/locusMediaRequest.js.map +0 -1
  412. package/dist/meeting/request.type.d.ts +0 -11
  413. package/dist/meeting/request.type.js +0 -7
  414. package/dist/meeting/request.type.js.map +0 -1
  415. package/dist/meeting/voicea-meeting.d.ts +0 -20
  416. package/dist/meeting/voicea-meeting.js +0 -201
  417. package/dist/meeting/voicea-meeting.js.map +0 -1
  418. package/dist/meetings/meetings.types.d.ts +0 -4
  419. package/dist/meetings/meetings.types.js +0 -7
  420. package/dist/meetings/meetings.types.js.map +0 -1
  421. package/dist/member/types.d.ts +0 -32
  422. package/dist/member/types.js +0 -23
  423. package/dist/member/types.js.map +0 -1
  424. package/dist/multistream/mediaRequestManager.d.ts +0 -118
  425. package/dist/multistream/mediaRequestManager.js +0 -344
  426. package/dist/multistream/mediaRequestManager.js.map +0 -1
  427. package/dist/multistream/receiveSlot.d.ts +0 -68
  428. package/dist/multistream/receiveSlot.js +0 -200
  429. package/dist/multistream/receiveSlot.js.map +0 -1
  430. package/dist/multistream/receiveSlotManager.d.ts +0 -56
  431. package/dist/multistream/receiveSlotManager.js +0 -174
  432. package/dist/multistream/receiveSlotManager.js.map +0 -1
  433. package/dist/multistream/remoteMedia.d.ts +0 -72
  434. package/dist/multistream/remoteMedia.js +0 -268
  435. package/dist/multistream/remoteMedia.js.map +0 -1
  436. package/dist/multistream/remoteMediaGroup.d.ts +0 -47
  437. package/dist/multistream/remoteMediaGroup.js +0 -267
  438. package/dist/multistream/remoteMediaGroup.js.map +0 -1
  439. package/dist/multistream/remoteMediaManager.d.ts +0 -285
  440. package/dist/multistream/remoteMediaManager.js +0 -1211
  441. package/dist/multistream/remoteMediaManager.js.map +0 -1
  442. package/dist/multistream/sendSlotManager.d.ts +0 -61
  443. package/dist/multistream/sendSlotManager.js +0 -236
  444. package/dist/multistream/sendSlotManager.js.map +0 -1
  445. package/dist/reachability/clusterReachability.d.ts +0 -109
  446. package/dist/reachability/clusterReachability.js +0 -357
  447. package/dist/reachability/clusterReachability.js.map +0 -1
  448. package/dist/reachability/util.d.ts +0 -8
  449. package/dist/reachability/util.js +0 -29
  450. package/dist/reachability/util.js.map +0 -1
  451. package/dist/reactions/constants.d.ts +0 -3
  452. package/dist/reactions/constants.js +0 -12
  453. package/dist/reactions/constants.js.map +0 -1
  454. package/dist/rtcMetrics/constants.d.ts +0 -4
  455. package/dist/rtcMetrics/constants.js +0 -11
  456. package/dist/rtcMetrics/constants.js.map +0 -1
  457. package/dist/rtcMetrics/index.d.ts +0 -54
  458. package/dist/rtcMetrics/index.js +0 -140
  459. package/dist/rtcMetrics/index.js.map +0 -1
  460. package/dist/webinar/collection.d.ts +0 -16
  461. package/dist/webinar/collection.js +0 -43
  462. package/dist/webinar/collection.js.map +0 -1
  463. package/dist/webinar/index.d.ts +0 -5
  464. package/dist/webinar/index.js +0 -68
  465. package/dist/webinar/index.js.map +0 -1
  466. package/src/annotation/annotation.types.ts +0 -50
  467. package/src/annotation/constants.ts +0 -36
  468. package/src/annotation/index.ts +0 -328
  469. package/src/breakouts/README.md +0 -220
  470. package/src/breakouts/breakout.ts +0 -188
  471. package/src/breakouts/collection.ts +0 -19
  472. package/src/breakouts/edit-lock-error.ts +0 -25
  473. package/src/breakouts/events.ts +0 -56
  474. package/src/breakouts/index.ts +0 -925
  475. package/src/breakouts/request.ts +0 -55
  476. package/src/breakouts/utils.ts +0 -57
  477. package/src/common/errors/no-meeting-info.ts +0 -24
  478. package/src/controls-options-manager/types.ts +0 -59
  479. package/src/index.ts +0 -44
  480. package/src/interceptors/index.ts +0 -3
  481. package/src/interceptors/locusRetry.ts +0 -67
  482. package/src/interpretation/README.md +0 -60
  483. package/src/interpretation/collection.ts +0 -19
  484. package/src/interpretation/index.ts +0 -332
  485. package/src/interpretation/siLanguage.ts +0 -18
  486. package/src/meeting/locusMediaRequest.ts +0 -313
  487. package/src/meeting/request.type.ts +0 -13
  488. package/src/meeting/voicea-meeting.ts +0 -161
  489. package/src/meetings/meetings.types.ts +0 -12
  490. package/src/member/types.ts +0 -38
  491. package/src/multistream/mediaRequestManager.ts +0 -440
  492. package/src/multistream/receiveSlot.ts +0 -184
  493. package/src/multistream/receiveSlotManager.ts +0 -166
  494. package/src/multistream/remoteMedia.ts +0 -254
  495. package/src/multistream/remoteMediaGroup.ts +0 -284
  496. package/src/multistream/remoteMediaManager.ts +0 -1145
  497. package/src/multistream/sendSlotManager.ts +0 -170
  498. package/src/reachability/clusterReachability.ts +0 -320
  499. package/src/reachability/util.ts +0 -24
  500. package/src/reactions/constants.ts +0 -4
  501. package/src/rtcMetrics/constants.ts +0 -3
  502. package/src/rtcMetrics/index.ts +0 -124
  503. package/src/webinar/collection.ts +0 -31
  504. package/src/webinar/index.ts +0 -62
  505. package/test/integration/spec/converged-space-meetings.js +0 -233
  506. package/test/unit/spec/annotation/index.ts +0 -418
  507. package/test/unit/spec/breakouts/breakout.ts +0 -237
  508. package/test/unit/spec/breakouts/collection.ts +0 -15
  509. package/test/unit/spec/breakouts/edit-lock-error.ts +0 -30
  510. package/test/unit/spec/breakouts/events.ts +0 -89
  511. package/test/unit/spec/breakouts/index.ts +0 -1790
  512. package/test/unit/spec/breakouts/request.ts +0 -104
  513. package/test/unit/spec/breakouts/utils.js +0 -72
  514. package/test/unit/spec/interceptors/locusRetry.ts +0 -131
  515. package/test/unit/spec/interpretation/collection.ts +0 -15
  516. package/test/unit/spec/interpretation/index.ts +0 -589
  517. package/test/unit/spec/interpretation/siLanguage.ts +0 -28
  518. package/test/unit/spec/locus-info/mediaSharesUtils.ts +0 -32
  519. package/test/unit/spec/media/index.ts +0 -290
  520. package/test/unit/spec/meeting/locusMediaRequest.ts +0 -442
  521. package/test/unit/spec/meeting-info/index.js +0 -300
  522. package/test/unit/spec/multistream/mediaRequestManager.ts +0 -1418
  523. package/test/unit/spec/multistream/receiveSlot.ts +0 -163
  524. package/test/unit/spec/multistream/receiveSlotManager.ts +0 -203
  525. package/test/unit/spec/multistream/remoteMedia.ts +0 -255
  526. package/test/unit/spec/multistream/remoteMediaGroup.ts +0 -662
  527. package/test/unit/spec/multistream/remoteMediaManager.ts +0 -1924
  528. package/test/unit/spec/multistream/sendSlotManager.ts +0 -242
  529. package/test/unit/spec/reachability/clusterReachability.ts +0 -279
  530. package/test/unit/spec/reachability/request.js +0 -68
  531. package/test/unit/spec/reachability/util.ts +0 -40
  532. package/test/unit/spec/roap/request.ts +0 -255
  533. package/test/unit/spec/rtcMetrics/index.ts +0 -93
  534. package/test/unit/spec/webinar/collection.ts +0 -13
  535. package/test/unit/spec/webinar/index.ts +0 -60
  536. package/test/utils/constants.js +0 -9
  537. package/test/utils/integrationTestUtils.js +0 -46
  538. /package/dist/common/errors/{reclaim-host-role-errors.d.ts → reclaim-host-role-error.d.ts} +0 -0
  539. /package/src/common/errors/{reclaim-host-role-errors.ts → reclaim-host-role-error.ts} +0 -0
@@ -1,925 +0,0 @@
1
- /*!
2
- * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.
3
- */
4
- import {WebexPlugin} from '@webex/webex-core';
5
- import {debounce, forEach} from 'lodash';
6
- import LoggerProxy from '../common/logs/logger-proxy';
7
-
8
- import {BREAKOUTS, MEETINGS, HTTP_VERBS, _ID_} from '../constants';
9
-
10
- import Breakout from './breakout';
11
- import BreakoutCollection from './collection';
12
- import BreakoutRequest from './request';
13
- import breakoutEvent from './events';
14
- import {boServiceErrorHandler, isSessionTypeChangedFromSessionToMain} from './utils';
15
-
16
- /**
17
- * @class Breakouts
18
- */
19
- const Breakouts = WebexPlugin.extend({
20
- namespace: MEETINGS,
21
- breakoutRequest: BreakoutRequest,
22
- collections: {
23
- breakouts: BreakoutCollection,
24
- },
25
-
26
- props: {
27
- allowBackToMain: 'boolean', // only present when in a breakout session
28
- delayCloseTime: 'number', // appears once breakouts start
29
- enableBreakoutSession: 'boolean', // appears from the moment you enable breakouts
30
- hasBreakoutPreAssignments: 'boolean', // appears from the moment you enable breakouts
31
- groupId: 'string', // appears from the moment you enable breakouts
32
- name: 'string', // only present when in a breakout session
33
- sessionId: 'string', // appears from the moment you enable breakouts
34
- sessionType: 'string', // appears from the moment you enable breakouts
35
- startTime: 'string', // appears once breakouts start
36
- status: 'string', // only present when in a breakout session
37
- url: 'string', // appears from the moment you enable breakouts
38
- locusUrl: 'string', // the current locus url
39
- breakoutServiceUrl: 'string', // the current breakout resource url
40
- mainLocusUrl: 'string', // the locus url of the main session
41
- groups: 'array', // appears when create breakouts
42
- manageGroups: 'array', // appears when manage breakouts
43
- preAssignments: 'array', // appears when getPreAssignments info hasBreakoutPreAssignments = true
44
- editLock: 'object', // appears when getBreakout info editlock = true
45
- intervalID: 'number',
46
- meetingId: 'string',
47
- canManageBreakouts: 'boolean', // appear the ability to manage breakouts
48
- },
49
- children: {
50
- currentBreakoutSession: Breakout,
51
- },
52
-
53
- derived: {
54
- isInMainSession: {
55
- cache: false,
56
- deps: ['sessionType'],
57
- /**
58
- * Returns true if the user is in the main session
59
- * @returns {boolean}
60
- */
61
- fn() {
62
- return this.sessionType === BREAKOUTS.SESSION_TYPES.MAIN;
63
- },
64
- },
65
- isActiveBreakout: {
66
- cache: false, // fix issue: sometimes the derived will not change even if the deps changed
67
- deps: ['sessionType', 'status'],
68
- /**
69
- * Returns true if the breakout status is active
70
- * @returns {boolean}
71
- */
72
- fn() {
73
- return (
74
- this.sessionType === BREAKOUTS.SESSION_TYPES.BREAKOUT &&
75
- (this.status === BREAKOUTS.STATUS.OPEN || this.status === BREAKOUTS.STATUS.CLOSING)
76
- );
77
- },
78
- },
79
- breakoutGroupId: {
80
- cache: false,
81
- deps: ['manageGroups'],
82
- /**
83
- * Returns the active group id
84
- * @returns {boolean}
85
- */
86
- fn() {
87
- if (this.manageGroups?.length) {
88
- return this.manageGroups[0].status !== BREAKOUTS.STATUS.CLOSED
89
- ? this.manageGroups[0].id
90
- : '';
91
- }
92
-
93
- return '';
94
- },
95
- },
96
- breakoutStatus: {
97
- cache: true,
98
- deps: ['isInMainSession', 'status', 'groups'],
99
- /**
100
- * Returns the breakout status
101
- * @returns {boolean}
102
- */
103
- fn() {
104
- return this.isInMainSession ? this.groups?.[0]?.status : this.status;
105
- },
106
- },
107
- shouldQueryPreAssignments: {
108
- cache: false,
109
- deps: ['canManageBreakouts', 'enableBreakoutSession', 'hasBreakoutPreAssignments'],
110
- /**
111
- * Returns should query preAssignments or not
112
- * @returns {boolean}
113
- */
114
- fn() {
115
- return !!(
116
- this.canManageBreakouts &&
117
- this.enableBreakoutSession &&
118
- this.hasBreakoutPreAssignments
119
- );
120
- },
121
- },
122
- },
123
-
124
- /**
125
- * initialize for the breakouts
126
- * @returns {void}
127
- */
128
- initialize() {
129
- this.listenTo(this, 'change:breakoutStatus', () => {
130
- if (this.breakoutStatus === BREAKOUTS.STATUS.CLOSING) {
131
- this.trigger(BREAKOUTS.EVENTS.BREAKOUTS_CLOSING);
132
- }
133
- });
134
- this.listenTo(this, 'change:shouldQueryPreAssignments', () => {
135
- if (this.shouldQueryPreAssignments && !this.preAssignments) {
136
- this.queryPreAssignments();
137
- }
138
- });
139
- this.debouncedQueryRosters = debounce(this.queryRosters, 10, {
140
- leading: true,
141
- trailing: false,
142
- });
143
- this.listenTo(this.breakouts, 'add', (breakout) => {
144
- this.debouncedQueryRosters();
145
- this.triggerReturnToMainEvent(breakout);
146
- });
147
- this.listenTo(this.breakouts, 'change:requestedLastModifiedTime', (breakout) => {
148
- this.triggerReturnToMainEvent(breakout);
149
- });
150
- this.listenToCurrentSessionTypeChange();
151
- this.listenToBroadcastMessages();
152
- this.listenToBreakoutRosters();
153
- this.listenToBreakoutHelp();
154
- // @ts-ignore
155
- this.breakoutRequest = new BreakoutRequest({webex: this.webex});
156
- },
157
-
158
- /**
159
- * Calls this to clean up listeners
160
- * @returns {void}
161
- */
162
- cleanUp() {
163
- this.stopListening();
164
- },
165
-
166
- /**
167
- * Update the current locus url of the meeting
168
- * @param {string} locusUrl // locus url
169
- * @returns {void}
170
- */
171
- locusUrlUpdate(locusUrl) {
172
- this.set('locusUrl', locusUrl);
173
- const {isInMainSession, mainLocusUrl} = this;
174
- if (isInMainSession || !mainLocusUrl) {
175
- this.set('mainLocusUrl', locusUrl);
176
- }
177
- },
178
-
179
- /**
180
- * Update whether self is moderator/cohost or not
181
- * @param {boolean} canManageBreakouts
182
- * @returns {void}
183
- */
184
- updateCanManageBreakouts(canManageBreakouts) {
185
- this.set('canManageBreakouts', canManageBreakouts);
186
- },
187
-
188
- /**
189
- * Update the current breakout resource url
190
- * @param {string} breakoutServiceUrl
191
- * @returns {void}
192
- */
193
- breakoutServiceUrlUpdate(breakoutServiceUrl) {
194
- this.set('breakoutServiceUrl', `${breakoutServiceUrl}/breakout/`);
195
- },
196
-
197
- /**
198
- * The initial roster lists need to be queried because you don't
199
- * get a breakout.roster event when you join the meeting
200
- * @returns {void}
201
- */
202
- queryRosters() {
203
- this.webex
204
- .request({uri: `${this.url}/roster`, qs: {locusUrl: btoa(this.locusUrl)}})
205
- .then((result) => {
206
- const {
207
- body: {rosters},
208
- } = result;
209
-
210
- rosters?.forEach(({locus}) => {
211
- this.handleRosterUpdate(locus);
212
- });
213
-
214
- this.trigger(BREAKOUTS.EVENTS.MEMBERS_UPDATE);
215
- })
216
- .catch((error) => {
217
- LoggerProxy.logger.error('Meeting:breakouts#queryRosters failed', error);
218
- });
219
- },
220
-
221
- /**
222
- *
223
- * @param {Object} locus // locus object
224
- * @returns {void}
225
- */
226
- handleRosterUpdate(locus) {
227
- const sessionId = locus.controls?.breakout?.sessionId;
228
-
229
- const session = this.breakouts.get(sessionId);
230
-
231
- if (!session) {
232
- return;
233
- }
234
-
235
- session.parseRoster(locus);
236
- },
237
- /**
238
- *Sets up listener for currentBreakoutSession sessionType changed
239
- * @returns {void}
240
- */
241
- listenToCurrentSessionTypeChange(): void {
242
- this.listenTo(
243
- this.currentBreakoutSession,
244
- 'change:sessionType',
245
- (currentBreakoutSession, sessionType) => {
246
- if (isSessionTypeChangedFromSessionToMain(currentBreakoutSession, sessionType)) {
247
- this.trigger(BREAKOUTS.EVENTS.LEAVE_BREAKOUT);
248
- }
249
- }
250
- );
251
- },
252
-
253
- /**
254
- * Sets up listener for broadcast messages sent to the breakout session
255
- * @returns {void}
256
- */
257
- listenToBroadcastMessages() {
258
- this.listenTo(this.webex.internal.llm, 'event:breakout.message', (event) => {
259
- const {
260
- data: {senderUserId, sentTime, message},
261
- } = event;
262
-
263
- this.trigger(BREAKOUTS.EVENTS.MESSAGE, {
264
- senderUserId,
265
- sentTime,
266
- message,
267
- // FIXME: This is only the current sessionId
268
- // We'd need to check that the dataChannelUrl is still the same
269
- // to guarantee that this message was sent to this session
270
- sessionId: this.currentBreakoutSession.sessionId,
271
- });
272
- });
273
- },
274
-
275
- /**
276
- * Sets up a listener for roster messags from mecury
277
- * @returns {void}
278
- */
279
- listenToBreakoutRosters() {
280
- this.listenTo(this.webex.internal.mercury, 'event:breakout.roster', (event) => {
281
- this.handleRosterUpdate(event.data.locus);
282
- this.trigger(BREAKOUTS.EVENTS.MEMBERS_UPDATE);
283
- });
284
- },
285
-
286
- /**
287
- * Sets up a listener for ask help notify from mecury
288
- * @returns {void}
289
- */
290
- listenToBreakoutHelp() {
291
- this.listenTo(this.webex.internal.mercury, 'event:breakout.help', (event) => {
292
- const {
293
- data: {participant, sessionId},
294
- } = event;
295
- this.trigger(BREAKOUTS.EVENTS.ASK_FOR_HELP, {participant, sessionId});
296
- });
297
- },
298
-
299
- /**
300
- * get current breakout is in progress or not
301
- * @returns {boolean}
302
- */
303
- isBreakoutInProgress() {
304
- const currentStatus = this.groups?.[0]?.status || this.status;
305
-
306
- return currentStatus === BREAKOUTS.STATUS.OPEN || currentStatus === BREAKOUTS.STATUS.CLOSING;
307
- },
308
-
309
- /**
310
- * get current breakout is in closing or not
311
- * @returns {boolean}
312
- */
313
- isBreakoutIClosing() {
314
- return (this.groups?.[0]?.status || this.status) === BREAKOUTS.STATUS.CLOSING;
315
- },
316
- /**
317
- * Updates the information about the current breakout
318
- * @param {Object} params
319
- * @returns {void}
320
- */
321
- updateBreakout(params) {
322
- this.set(params);
323
- // These values are set manually so they are unset when they are not included in params
324
- this.set('groups', params.groups);
325
- this.set('startTime', params.startTime);
326
- this.set('status', params.status);
327
-
328
- this.set('currentBreakoutSession', {
329
- sessionId: params.sessionId,
330
- groupId: params.groupId,
331
- name: params.name,
332
- current: true,
333
- sessionType: params.sessionType,
334
- url: params.url,
335
- [BREAKOUTS.SESSION_STATES.ACTIVE]: false,
336
- [BREAKOUTS.SESSION_STATES.ALLOWED]: false,
337
- [BREAKOUTS.SESSION_STATES.ASSIGNED]: false,
338
- [BREAKOUTS.SESSION_STATES.ASSIGNED_CURRENT]: false,
339
- [BREAKOUTS.SESSION_STATES.REQUESTED]: false,
340
- });
341
-
342
- if (!this.isBreakoutInProgress()) {
343
- this.clearBreakouts();
344
- }
345
-
346
- if (
347
- this.currentBreakoutSession.previous('sessionId') !== this.currentBreakoutSession.sessionId ||
348
- this.currentBreakoutSession.previous('groupId') !== this.currentBreakoutSession.groupId
349
- ) {
350
- // should report joined session changed
351
- const meeting = this.webex.meetings.getMeetingByType(_ID_, this.meetingId);
352
- breakoutEvent.onBreakoutJoinResponse(
353
- {
354
- currentSession: this.currentBreakoutSession,
355
- meeting,
356
- breakoutMoveId: params.breakoutMoveId,
357
- },
358
- // @ts-ignore
359
- this.webex.internal.newMetrics.submitClientEvent.bind(this.webex.internal.newMetrics)
360
- );
361
- }
362
- },
363
-
364
- /**
365
- * Updates the information about available breakouts
366
- * @param {Object} payload
367
- * @returns {void}
368
- */
369
- updateBreakoutSessions(payload) {
370
- const breakouts = {};
371
- if (this.isBreakoutIClosing()) {
372
- // fix issue: don't clear/update breakouts collection when in closing since locus DTO will send undefined or
373
- // only the MAIN session info here, if just update it, will miss the breakout roster info during
374
- // count down to end breakouts
375
- return;
376
- }
377
- if (payload.breakoutSessions) {
378
- forEach(BREAKOUTS.SESSION_STATES, (state) => {
379
- forEach(payload.breakoutSessions[state], (breakout) => {
380
- const {sessionId} = breakout;
381
-
382
- if (!breakouts[sessionId]) {
383
- breakouts[sessionId] = breakout;
384
- breakouts[sessionId][BREAKOUTS.SESSION_STATES.ACTIVE] = false;
385
- breakouts[sessionId][BREAKOUTS.SESSION_STATES.ASSIGNED] = false;
386
- breakouts[sessionId][BREAKOUTS.SESSION_STATES.ALLOWED] = false;
387
- breakouts[sessionId][BREAKOUTS.SESSION_STATES.ASSIGNED_CURRENT] = false;
388
- breakouts[sessionId][BREAKOUTS.SESSION_STATES.REQUESTED] = false;
389
- }
390
-
391
- breakouts[sessionId][state] = true;
392
-
393
- if (state === BREAKOUTS.SESSION_STATES.REQUESTED) {
394
- breakouts[sessionId].requestedLastModifiedTime = breakout.modifiedAt;
395
- }
396
- });
397
- });
398
- }
399
- forEach(breakouts, (breakout: typeof Breakout) => {
400
- // eslint-disable-next-line no-param-reassign
401
- breakout.url = this.url;
402
- });
403
-
404
- this.breakouts.set(Object.values(breakouts));
405
- },
406
- /**
407
- * clear breakouts collection
408
- * @returns {void}
409
- */
410
- clearBreakouts() {
411
- if (this.breakouts.length > 0) {
412
- this.breakouts.reset();
413
- }
414
- },
415
- /**
416
- * get main session
417
- * @returns {Breakout}
418
- */
419
- getMainSession() {
420
- if (this.isInMainSession) {
421
- return this.currentBreakoutSession;
422
- }
423
-
424
- const mainSession = this.breakouts.filter((breakout) => breakout.isMain)[0];
425
- if (!mainSession) {
426
- throw new Error('no main session found');
427
- }
428
-
429
- return mainSession;
430
- },
431
- /**
432
- * Host/CoHost ask all participants return to main session
433
- * @returns {Promise}
434
- */
435
- askAllToReturn() {
436
- const mainSession = this.getMainSession();
437
-
438
- return this.webex.request({
439
- method: HTTP_VERBS.POST,
440
- uri: `${this.url}/requestMove`,
441
- body: {
442
- groupId: mainSession.groupId,
443
- sessionId: mainSession.sessionId,
444
- },
445
- });
446
- },
447
-
448
- /**
449
- * Broadcast message to all breakout session's participants
450
- * @param {String} message
451
- * @param {Object} options
452
- * @returns {Promise}
453
- */
454
- broadcast(message, options) {
455
- const {breakoutGroupId} = this;
456
- if (!breakoutGroupId) {
457
- throw new Error('Cannot broadcast, no breakout session found');
458
- }
459
-
460
- return this.breakoutRequest.broadcast({
461
- url: this.url,
462
- message,
463
- options,
464
- groupId: breakoutGroupId,
465
- });
466
- },
467
- /**
468
- * Make enable breakout resource
469
- * @returns {Promise}
470
- */
471
- enableBreakouts() {
472
- if (this.breakoutServiceUrl) {
473
- // @ts-ignore
474
- return this.webex
475
- .request({
476
- method: HTTP_VERBS.POST,
477
- uri: this.breakoutServiceUrl,
478
- body: {
479
- locusUrl: this.locusUrl,
480
- },
481
- })
482
- .catch((err) => {
483
- LoggerProxy.logger.error(
484
- `Meeting:request#touchBreakout --> Error provisioning error ${err}`
485
- );
486
- throw err;
487
- });
488
- }
489
-
490
- return Promise.reject(new Error(`enableBreakouts: the breakoutServiceUrl is empty`));
491
- },
492
-
493
- /**
494
- * Make the meeting enable or disable breakout session
495
- * @param {boolean} enable
496
- * @returns {Promise}
497
- */
498
- async toggleBreakout(enable) {
499
- if (this.enableBreakoutSession === undefined) {
500
- const info = await this.enableBreakouts();
501
- // first time enable, set the initial data
502
- this.updateBreakout(info?.body);
503
- if (!enable) {
504
- await this.doToggleBreakout(enable);
505
- }
506
- } else {
507
- await this.doToggleBreakout(enable);
508
- }
509
- },
510
-
511
- /**
512
- * do toggle meeting breakout session enable or disable
513
- * @param {boolean} enable
514
- * @returns {Promise}
515
- */
516
- doToggleBreakout(enable) {
517
- const body = {
518
- ...(this.editLock && !!this.editLock.token ? {editlock: {token: this.editLock.token}} : {}),
519
- ...{enableBreakoutSession: enable},
520
- };
521
-
522
- // @ts-ignore
523
- return this.webex.request({
524
- method: HTTP_VERBS.PUT,
525
- uri: this.url,
526
- body,
527
- });
528
- },
529
-
530
- /**
531
- * set groups to manageGroups prop
532
- * @param {Object} breakoutInfo -- breakout groups
533
- * @returns {void}
534
- */
535
- _setManageGroups(breakoutInfo) {
536
- if (breakoutInfo?.body?.groups) {
537
- this.set('manageGroups', breakoutInfo.body.groups);
538
- }
539
- },
540
-
541
- /**
542
- * Create new breakout sessions
543
- * @param {object} params -- breakout session group
544
- * @returns {Promise}
545
- */
546
- async create(params) {
547
- const payload = {...params};
548
- const body = {
549
- ...(this.editLock && !!this.editLock.token ? {editlock: {token: this.editLock.token}} : {}),
550
- ...{groups: [payload]},
551
- };
552
- // @ts-ignore
553
- const breakoutInfo = await this.webex
554
- .request({
555
- method: HTTP_VERBS.PUT,
556
- uri: this.url,
557
- body,
558
- })
559
- .catch((error) => {
560
- return Promise.reject(boServiceErrorHandler(error, 'Breakouts#create'));
561
- });
562
-
563
- this._setManageGroups(breakoutInfo);
564
-
565
- // clear edit lock info after save breakout session info
566
- this._clearEditLockInfo();
567
-
568
- return breakoutInfo;
569
- },
570
-
571
- /**
572
- * Delete all breakout sessions
573
- * @returns {Promise}
574
- */
575
- async clearSessions() {
576
- const body = {
577
- ...(this.editLock && !!this.editLock.token ? {editlock: {token: this.editLock.token}} : {}),
578
- ...{groups: [{action: BREAKOUTS.ACTION.DELETE}]},
579
- };
580
- // @ts-ignore
581
- const breakoutInfo = await this.webex
582
- .request({
583
- method: HTTP_VERBS.PUT,
584
- uri: this.url,
585
- body,
586
- })
587
- .catch((error) => {
588
- return Promise.reject(boServiceErrorHandler(error, 'Breakouts#clearSessions'));
589
- });
590
-
591
- this._setManageGroups(breakoutInfo);
592
-
593
- return breakoutInfo;
594
- },
595
-
596
- /**
597
- * Host or cohost starts breakout sessions
598
- * @param {object} params
599
- * @returns {Promise}
600
- */
601
- async start(params = {}) {
602
- const action = BREAKOUTS.ACTION.START;
603
- const payload = {
604
- id: this.breakoutGroupId,
605
- action,
606
- allowBackToMain: false,
607
- allowToJoinLater: false,
608
- ...params,
609
- };
610
-
611
- const body = {
612
- ...(this.editLock && !!this.editLock.token
613
- ? {editlock: {token: this.editLock.token, refresh: true}}
614
- : {}),
615
- ...{groups: [payload]},
616
- };
617
-
618
- const breakoutInfo = await this.request({
619
- method: HTTP_VERBS.PUT,
620
- uri: this.url,
621
- body,
622
- }).catch((error) => {
623
- return Promise.reject(boServiceErrorHandler(error, 'Breakouts#start'));
624
- });
625
-
626
- this._setManageGroups(breakoutInfo);
627
-
628
- return breakoutInfo;
629
- },
630
-
631
- /**
632
- * Host or cohost ends breakout sessions
633
- * @param {object} params
634
- * @returns {Promise}
635
- */
636
- async end(params = {}) {
637
- const {delayCloseTime, breakoutGroupId: id} = this;
638
- const action = BREAKOUTS.ACTION.CLOSE;
639
- const payload = {
640
- id,
641
- action,
642
- delayCloseTime,
643
- ...params,
644
- };
645
-
646
- const body = {
647
- ...(this.editLock && !!this.editLock.token
648
- ? {editlock: {token: this.editLock.token, refresh: true}}
649
- : {}),
650
- ...{groups: [payload]},
651
- };
652
-
653
- const breakoutInfo = await this.request({
654
- method: HTTP_VERBS.PUT,
655
- uri: this.url,
656
- body,
657
- }).catch((error) => {
658
- return Promise.reject(boServiceErrorHandler(error, 'Breakouts#end'));
659
- });
660
-
661
- this._setManageGroups(breakoutInfo);
662
-
663
- return breakoutInfo;
664
- },
665
-
666
- /**
667
- * Host or cohost update breakout sessions
668
- * @param {Object} params
669
- * @param {String} params.id
670
- * @param {Boolean} unlockEdit
671
- * @returns {Promise}
672
- */
673
- async update(params: {id: string}, unlockEdit?: boolean) {
674
- if (!params.id) {
675
- return Promise.reject(new Error('Missing breakout group id'));
676
- }
677
- const payload = {...params};
678
-
679
- const body = {
680
- ...(this.editLock?.token
681
- ? {editlock: {token: this.editLock.token, refresh: !unlockEdit}}
682
- : {}),
683
- ...{groups: [payload]},
684
- };
685
-
686
- const breakoutInfo = await this.request({
687
- method: HTTP_VERBS.PUT,
688
- uri: this.url,
689
- body,
690
- }).catch((error) => {
691
- return Promise.reject(boServiceErrorHandler(error, 'Breakouts#update'));
692
- });
693
-
694
- if (unlockEdit) {
695
- this._clearEditLockInfo();
696
- }
697
-
698
- this._setManageGroups(breakoutInfo);
699
-
700
- return breakoutInfo;
701
- },
702
-
703
- /**
704
- * get existed breakout sessions
705
- * @param {boolean} editlock -- lock operations of the breakout sessions
706
- * @returns {Promise}
707
- */
708
- async getBreakout(editlock) {
709
- const breakout = await this.request({
710
- method: HTTP_VERBS.GET,
711
- uri: this.url + (editlock ? `?editlock=${editlock}` : ''),
712
- });
713
-
714
- this._setManageGroups(breakout);
715
- if (editlock && breakout.body?.editlock?.token) {
716
- this.set('editLock', breakout.body.editlock);
717
- this.keepEditLockAlive();
718
- }
719
-
720
- return breakout;
721
- },
722
-
723
- /**
724
- * enable and edit lock breakout
725
- * @returns {void}
726
- */
727
- async enableAndLockBreakout() {
728
- if (this.enableBreakoutSession) {
729
- this.lockBreakout();
730
- } else {
731
- const info = await this.enableBreakouts();
732
-
733
- if (info.body) {
734
- this.lockBreakout();
735
- }
736
- }
737
- },
738
-
739
- /**
740
- * breakout edit locked by yourself or not
741
- * @returns {boolean}
742
- */
743
- hasBreakoutLocked() {
744
- return (
745
- this.editLock &&
746
- this.editLock.token &&
747
- this.editLock.state === BREAKOUTS.EDIT_LOCK_STATUS.LOCKED
748
- );
749
- },
750
-
751
- /**
752
- * send breakout edit lock
753
- * @returns {void}
754
- */
755
- async lockBreakout() {
756
- if (this.editLock && !!this.editLock.token) {
757
- if (this.editLock.state === BREAKOUTS.EDIT_LOCK_STATUS.LOCKED) {
758
- throw new Error('Breakout already locked');
759
- } else {
760
- this.keepEditLockAlive();
761
- }
762
- } else {
763
- const breakout = await this.getBreakout(true);
764
- if (breakout.body?.editlock) {
765
- this.keepEditLockAlive();
766
- }
767
- }
768
- },
769
-
770
- /**
771
- * keep edit lock alive
772
- * @returns {void}
773
- */
774
- keepEditLockAlive() {
775
- if (this.editLock && !!this.editLock.token) {
776
- const ttl = this.editLock.ttl < 30 ? BREAKOUTS.DEFAULT_TTL : this.editLock.ttl;
777
- if (this.intervalID) {
778
- window.clearInterval(this.intervalID);
779
- }
780
-
781
- this.intervalID = window.setInterval(() => {
782
- this.request({
783
- method: HTTP_VERBS.PUT,
784
- uri: `${this.url}/editlock/${this.editLock.token}`,
785
- }).catch((error) => {
786
- this._clearEditLockInfo();
787
-
788
- return Promise.reject(boServiceErrorHandler(error, 'Breakouts#keepEditLockAlive'));
789
- });
790
- }, (ttl / 2) * 1000);
791
- }
792
- },
793
-
794
- /**
795
- * unlock edit breakout
796
- * @returns {void}
797
- */
798
- unLockEditBreakout() {
799
- if (this.editLock && !!this.editLock.token) {
800
- this.request({
801
- method: HTTP_VERBS.DELETE,
802
- uri: `${this.url}/editlock/${this.editLock.token}`,
803
- })
804
- .then(() => {
805
- this._clearEditLockInfo();
806
- })
807
- .catch((error) => {
808
- return Promise.reject(boServiceErrorHandler(error, 'Breakouts#unLockEditBreakout'));
809
- });
810
- }
811
- },
812
-
813
- /**
814
- * clear interval and edit lock info
815
- * @private
816
- * @returns {void}
817
- */
818
- _clearEditLockInfo() {
819
- if (this.intervalID) {
820
- clearInterval(this.intervalID);
821
- }
822
- this.set('editLock', {});
823
- },
824
-
825
- /**
826
- * assign participants to breakout session
827
- * @param {Array} sessions
828
- * @returns {void}
829
- */
830
- assign(sessions: any[]) {
831
- const internalSessions = sessions.map((item) => {
832
- return {
833
- id: item.id,
834
- assigned: item.memberIds,
835
- assignedEmails: item.emails,
836
- anyoneCanJoin: !!item.anyone,
837
- };
838
- });
839
-
840
- const body = {
841
- ...(this.editLock && !!this.editLock.token
842
- ? {editlock: {token: this.editLock.token, refresh: true}}
843
- : {}),
844
- ...{
845
- groups: [
846
- {
847
- id: this.breakoutGroupId,
848
- sessions: internalSessions,
849
- },
850
- ],
851
- },
852
- };
853
-
854
- return this.request({
855
- method: HTTP_VERBS.PUT,
856
- uri: this.url,
857
- body,
858
- });
859
- },
860
-
861
- /**
862
- * query preAssignments
863
- * @returns {void}
864
- */
865
- queryPreAssignments() {
866
- this.webex
867
- .request({uri: `${this.url}/preassignments`, qs: {locusUrl: btoa(this.locusUrl)}})
868
- .then((result) => {
869
- if (result.body?.groups) {
870
- this.set('preAssignments', result.body.groups);
871
- this.trigger(BREAKOUTS.EVENTS.PRE_ASSIGNMENTS_UPDATE);
872
- }
873
- })
874
- .catch((error) => {
875
- LoggerProxy.logger.error('Meeting:breakouts#queryPreAssignments failed', error);
876
- });
877
- },
878
- /**
879
- * assign participants dynamically after breakout sessions started,
880
- * but currently it only used for admitting participants from lobby into breakout directly
881
- * @param {Array} sessions
882
- * @returns {void}
883
- */
884
- dynamicAssign(sessions: any[]) {
885
- const updatedSessions = sessions.map((item) => {
886
- return {
887
- id: item.id,
888
- participants: item.participants,
889
- targetState: item.targetState,
890
- };
891
- });
892
-
893
- const body = {
894
- groups: [
895
- {
896
- id: this.breakoutGroupId,
897
- sessions: updatedSessions,
898
- },
899
- ],
900
- editlock: null,
901
- };
902
-
903
- if (this.editLock && this.editLock.token) {
904
- body.editlock = this.editLock;
905
- }
906
-
907
- return this.request({
908
- method: HTTP_VERBS.PUT,
909
- uri: `${this.url}/dynamicAssign`,
910
- body,
911
- });
912
- },
913
- /**
914
- * trigger ASK_RETURN_TO_MAIN event when main session requested
915
- * @param {Object} breakout
916
- * @returns {void}
917
- */
918
- triggerReturnToMainEvent(breakout) {
919
- if (breakout.isMain && breakout.requested) {
920
- this.trigger(BREAKOUTS.EVENTS.ASK_RETURN_TO_MAIN);
921
- }
922
- },
923
- });
924
-
925
- export default Breakouts;