@webex/plugin-meetings 3.0.0-beta.31 → 3.0.0-beta.310

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 (378) hide show
  1. package/README.md +46 -8
  2. package/dist/annotation/annotation.types.js +7 -0
  3. package/dist/annotation/annotation.types.js.map +1 -0
  4. package/dist/annotation/constants.js +49 -0
  5. package/dist/annotation/constants.js.map +1 -0
  6. package/dist/annotation/index.js +342 -0
  7. package/dist/annotation/index.js.map +1 -0
  8. package/dist/breakouts/breakout.js +94 -15
  9. package/dist/breakouts/breakout.js.map +1 -1
  10. package/dist/breakouts/edit-lock-error.js +52 -0
  11. package/dist/breakouts/edit-lock-error.js.map +1 -0
  12. package/dist/breakouts/events.js +45 -0
  13. package/dist/breakouts/events.js.map +1 -0
  14. package/dist/breakouts/index.js +709 -35
  15. package/dist/breakouts/index.js.map +1 -1
  16. package/dist/breakouts/utils.js +45 -1
  17. package/dist/breakouts/utils.js.map +1 -1
  18. package/dist/common/errors/no-meeting-info.js +51 -0
  19. package/dist/common/errors/no-meeting-info.js.map +1 -0
  20. package/dist/common/errors/reclaim-host-role-errors.js +158 -0
  21. package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
  22. package/dist/common/errors/webex-errors.js +48 -7
  23. package/dist/common/errors/webex-errors.js.map +1 -1
  24. package/dist/common/logs/logger-proxy.js +1 -1
  25. package/dist/common/logs/logger-proxy.js.map +1 -1
  26. package/dist/common/logs/request.js +5 -1
  27. package/dist/common/logs/request.js.map +1 -1
  28. package/dist/common/queue.js +24 -9
  29. package/dist/common/queue.js.map +1 -1
  30. package/dist/config.js +5 -11
  31. package/dist/config.js.map +1 -1
  32. package/dist/constants.js +233 -29
  33. package/dist/constants.js.map +1 -1
  34. package/dist/controls-options-manager/enums.js +14 -2
  35. package/dist/controls-options-manager/enums.js.map +1 -1
  36. package/dist/controls-options-manager/index.js +109 -15
  37. package/dist/controls-options-manager/index.js.map +1 -1
  38. package/dist/controls-options-manager/types.js +7 -0
  39. package/dist/controls-options-manager/types.js.map +1 -0
  40. package/dist/controls-options-manager/util.js +309 -18
  41. package/dist/controls-options-manager/util.js.map +1 -1
  42. package/dist/index.js +112 -1
  43. package/dist/index.js.map +1 -1
  44. package/dist/interpretation/collection.js +23 -0
  45. package/dist/interpretation/collection.js.map +1 -0
  46. package/dist/interpretation/index.js +366 -0
  47. package/dist/interpretation/index.js.map +1 -0
  48. package/dist/interpretation/siLanguage.js +25 -0
  49. package/dist/interpretation/siLanguage.js.map +1 -0
  50. package/dist/locus-info/controlsUtils.js +91 -2
  51. package/dist/locus-info/controlsUtils.js.map +1 -1
  52. package/dist/locus-info/index.js +383 -62
  53. package/dist/locus-info/index.js.map +1 -1
  54. package/dist/locus-info/infoUtils.js +7 -1
  55. package/dist/locus-info/infoUtils.js.map +1 -1
  56. package/dist/locus-info/mediaSharesUtils.js +57 -1
  57. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  58. package/dist/locus-info/parser.js +249 -72
  59. package/dist/locus-info/parser.js.map +1 -1
  60. package/dist/locus-info/selfUtils.js +89 -14
  61. package/dist/locus-info/selfUtils.js.map +1 -1
  62. package/dist/media/index.js +61 -116
  63. package/dist/media/index.js.map +1 -1
  64. package/dist/media/properties.js +73 -124
  65. package/dist/media/properties.js.map +1 -1
  66. package/dist/meeting/in-meeting-actions.js +82 -2
  67. package/dist/meeting/in-meeting-actions.js.map +1 -1
  68. package/dist/meeting/index.js +3777 -2929
  69. package/dist/meeting/index.js.map +1 -1
  70. package/dist/meeting/locusMediaRequest.js +292 -0
  71. package/dist/meeting/locusMediaRequest.js.map +1 -0
  72. package/dist/meeting/muteState.js +230 -124
  73. package/dist/meeting/muteState.js.map +1 -1
  74. package/dist/meeting/request.js +260 -196
  75. package/dist/meeting/request.js.map +1 -1
  76. package/dist/meeting/util.js +601 -417
  77. package/dist/meeting/util.js.map +1 -1
  78. package/dist/meeting-info/index.js +73 -7
  79. package/dist/meeting-info/index.js.map +1 -1
  80. package/dist/meeting-info/meeting-info-v2.js +192 -51
  81. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  82. package/dist/meeting-info/util.js +1 -1
  83. package/dist/meeting-info/util.js.map +1 -1
  84. package/dist/meeting-info/utilv2.js +36 -36
  85. package/dist/meeting-info/utilv2.js.map +1 -1
  86. package/dist/meetings/collection.js +39 -0
  87. package/dist/meetings/collection.js.map +1 -1
  88. package/dist/meetings/index.js +415 -115
  89. package/dist/meetings/index.js.map +1 -1
  90. package/dist/meetings/meetings.types.js +7 -0
  91. package/dist/meetings/meetings.types.js.map +1 -0
  92. package/dist/meetings/request.js +2 -0
  93. package/dist/meetings/request.js.map +1 -1
  94. package/dist/meetings/util.js +72 -6
  95. package/dist/meetings/util.js.map +1 -1
  96. package/dist/member/index.js +58 -0
  97. package/dist/member/index.js.map +1 -1
  98. package/dist/member/types.js +25 -0
  99. package/dist/member/types.js.map +1 -0
  100. package/dist/member/util.js +132 -25
  101. package/dist/member/util.js.map +1 -1
  102. package/dist/members/collection.js +10 -0
  103. package/dist/members/collection.js.map +1 -1
  104. package/dist/members/index.js +102 -6
  105. package/dist/members/index.js.map +1 -1
  106. package/dist/members/request.js +106 -38
  107. package/dist/members/request.js.map +1 -1
  108. package/dist/members/types.js +15 -0
  109. package/dist/members/types.js.map +1 -0
  110. package/dist/members/util.js +326 -232
  111. package/dist/members/util.js.map +1 -1
  112. package/dist/metrics/constants.js +13 -5
  113. package/dist/metrics/constants.js.map +1 -1
  114. package/dist/metrics/index.js +1 -468
  115. package/dist/metrics/index.js.map +1 -1
  116. package/dist/multistream/mediaRequestManager.js +238 -49
  117. package/dist/multistream/mediaRequestManager.js.map +1 -1
  118. package/dist/multistream/receiveSlot.js +29 -16
  119. package/dist/multistream/receiveSlot.js.map +1 -1
  120. package/dist/multistream/receiveSlotManager.js +39 -36
  121. package/dist/multistream/receiveSlotManager.js.map +1 -1
  122. package/dist/multistream/remoteMedia.js +44 -18
  123. package/dist/multistream/remoteMedia.js.map +1 -1
  124. package/dist/multistream/remoteMediaGroup.js +60 -3
  125. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  126. package/dist/multistream/remoteMediaManager.js +209 -59
  127. package/dist/multistream/remoteMediaManager.js.map +1 -1
  128. package/dist/multistream/sendSlotManager.js +233 -0
  129. package/dist/multistream/sendSlotManager.js.map +1 -0
  130. package/dist/reachability/index.js +225 -59
  131. package/dist/reachability/index.js.map +1 -1
  132. package/dist/reachability/request.js +17 -8
  133. package/dist/reachability/request.js.map +1 -1
  134. package/dist/reconnection-manager/index.js +201 -156
  135. package/dist/reconnection-manager/index.js.map +1 -1
  136. package/dist/recording-controller/index.js +21 -2
  137. package/dist/recording-controller/index.js.map +1 -1
  138. package/dist/recording-controller/util.js +9 -8
  139. package/dist/recording-controller/util.js.map +1 -1
  140. package/dist/roap/index.js +62 -32
  141. package/dist/roap/index.js.map +1 -1
  142. package/dist/roap/request.js +112 -97
  143. package/dist/roap/request.js.map +1 -1
  144. package/dist/roap/turnDiscovery.js +95 -36
  145. package/dist/roap/turnDiscovery.js.map +1 -1
  146. package/dist/rtcMetrics/constants.js +12 -0
  147. package/dist/rtcMetrics/constants.js.map +1 -0
  148. package/dist/rtcMetrics/index.js +117 -0
  149. package/dist/rtcMetrics/index.js.map +1 -0
  150. package/dist/statsAnalyzer/index.js +86 -78
  151. package/dist/statsAnalyzer/index.js.map +1 -1
  152. package/dist/statsAnalyzer/mqaUtil.js +11 -10
  153. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  154. package/dist/types/annotation/annotation.types.d.ts +42 -0
  155. package/dist/types/annotation/constants.d.ts +31 -0
  156. package/dist/types/annotation/index.d.ts +117 -0
  157. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  158. package/dist/types/breakouts/events.d.ts +8 -0
  159. package/dist/types/breakouts/utils.d.ts +14 -0
  160. package/dist/types/common/errors/no-meeting-info.d.ts +14 -0
  161. package/dist/types/common/errors/reclaim-host-role-errors.d.ts +60 -0
  162. package/dist/types/common/errors/webex-errors.d.ts +25 -1
  163. package/dist/types/common/logs/request.d.ts +2 -0
  164. package/dist/types/common/queue.d.ts +9 -7
  165. package/dist/types/config.d.ts +1 -7
  166. package/dist/types/constants.d.ts +194 -24
  167. package/dist/types/controls-options-manager/enums.d.ts +11 -1
  168. package/dist/types/controls-options-manager/index.d.ts +17 -1
  169. package/dist/types/controls-options-manager/types.d.ts +43 -0
  170. package/dist/types/controls-options-manager/util.d.ts +1 -7
  171. package/dist/types/index.d.ts +6 -4
  172. package/dist/types/interpretation/collection.d.ts +5 -0
  173. package/dist/types/interpretation/index.d.ts +5 -0
  174. package/dist/types/interpretation/siLanguage.d.ts +5 -0
  175. package/dist/types/locus-info/index.d.ts +57 -4
  176. package/dist/types/locus-info/parser.d.ts +67 -6
  177. package/dist/types/media/index.d.ts +2 -0
  178. package/dist/types/media/properties.d.ts +34 -48
  179. package/dist/types/meeting/in-meeting-actions.d.ts +82 -2
  180. package/dist/types/meeting/index.d.ts +463 -510
  181. package/dist/types/meeting/locusMediaRequest.d.ts +74 -0
  182. package/dist/types/meeting/muteState.d.ts +99 -23
  183. package/dist/types/meeting/request.d.ts +72 -43
  184. package/dist/types/meeting/util.d.ts +101 -1
  185. package/dist/types/meeting-info/index.d.ts +13 -1
  186. package/dist/types/meeting-info/meeting-info-v2.d.ts +31 -1
  187. package/dist/types/meetings/collection.d.ts +17 -0
  188. package/dist/types/meetings/index.d.ts +98 -20
  189. package/dist/types/meetings/meetings.types.d.ts +4 -0
  190. package/dist/types/member/index.d.ts +14 -0
  191. package/dist/types/member/types.d.ts +32 -0
  192. package/dist/types/members/collection.d.ts +5 -0
  193. package/dist/types/members/index.d.ts +35 -2
  194. package/dist/types/members/request.d.ts +73 -9
  195. package/dist/types/members/types.d.ts +25 -0
  196. package/dist/types/members/util.d.ts +214 -1
  197. package/dist/types/metrics/constants.d.ts +12 -4
  198. package/dist/types/metrics/index.d.ts +4 -119
  199. package/dist/types/multistream/mediaRequestManager.d.ts +73 -5
  200. package/dist/types/multistream/receiveSlot.d.ts +13 -11
  201. package/dist/types/multistream/receiveSlotManager.d.ts +14 -4
  202. package/dist/types/multistream/remoteMedia.d.ts +8 -29
  203. package/dist/types/multistream/remoteMediaGroup.d.ts +0 -9
  204. package/dist/types/multistream/remoteMediaManager.d.ts +46 -2
  205. package/dist/types/multistream/sendSlotManager.d.ts +61 -0
  206. package/dist/types/reachability/index.d.ts +61 -7
  207. package/dist/types/reachability/request.d.ts +7 -3
  208. package/dist/types/reconnection-manager/index.d.ts +9 -0
  209. package/dist/types/recording-controller/index.d.ts +15 -1
  210. package/dist/types/recording-controller/util.d.ts +5 -4
  211. package/dist/types/roap/index.d.ts +2 -1
  212. package/dist/types/roap/request.d.ts +15 -11
  213. package/dist/types/roap/turnDiscovery.d.ts +21 -3
  214. package/dist/types/rtcMetrics/constants.d.ts +4 -0
  215. package/dist/types/rtcMetrics/index.d.ts +47 -0
  216. package/dist/types/statsAnalyzer/index.d.ts +7 -1
  217. package/dist/types/webinar/collection.d.ts +16 -0
  218. package/dist/types/webinar/index.d.ts +5 -0
  219. package/dist/webinar/collection.js +44 -0
  220. package/dist/webinar/collection.js.map +1 -0
  221. package/dist/webinar/index.js +69 -0
  222. package/dist/webinar/index.js.map +1 -0
  223. package/package.json +23 -20
  224. package/src/annotation/annotation.types.ts +50 -0
  225. package/src/annotation/constants.ts +36 -0
  226. package/src/annotation/index.ts +328 -0
  227. package/src/breakouts/README.md +42 -12
  228. package/src/breakouts/breakout.ts +67 -9
  229. package/src/breakouts/edit-lock-error.ts +25 -0
  230. package/src/breakouts/events.ts +56 -0
  231. package/src/breakouts/index.ts +592 -20
  232. package/src/breakouts/utils.ts +42 -0
  233. package/src/common/errors/no-meeting-info.ts +24 -0
  234. package/src/common/errors/reclaim-host-role-errors.ts +134 -0
  235. package/src/common/errors/webex-errors.ts +44 -2
  236. package/src/common/logs/logger-proxy.ts +1 -1
  237. package/src/common/logs/request.ts +5 -1
  238. package/src/common/queue.ts +22 -8
  239. package/src/config.ts +4 -10
  240. package/src/constants.ts +221 -19
  241. package/src/controls-options-manager/enums.ts +12 -0
  242. package/src/controls-options-manager/index.ts +116 -21
  243. package/src/controls-options-manager/types.ts +59 -0
  244. package/src/controls-options-manager/util.ts +294 -14
  245. package/src/index.ts +40 -0
  246. package/src/interpretation/README.md +60 -0
  247. package/src/interpretation/collection.ts +19 -0
  248. package/src/interpretation/index.ts +332 -0
  249. package/src/interpretation/siLanguage.ts +18 -0
  250. package/src/locus-info/controlsUtils.ts +108 -0
  251. package/src/locus-info/index.ts +413 -59
  252. package/src/locus-info/infoUtils.ts +10 -2
  253. package/src/locus-info/mediaSharesUtils.ts +64 -0
  254. package/src/locus-info/parser.ts +258 -47
  255. package/src/locus-info/selfUtils.ts +81 -5
  256. package/src/media/index.ts +102 -122
  257. package/src/media/properties.ts +87 -110
  258. package/src/meeting/in-meeting-actions.ts +163 -3
  259. package/src/meeting/index.ts +3132 -2541
  260. package/src/meeting/locusMediaRequest.ts +313 -0
  261. package/src/meeting/muteState.ts +229 -131
  262. package/src/meeting/request.ts +177 -121
  263. package/src/meeting/util.ts +588 -394
  264. package/src/meeting-info/index.ts +81 -8
  265. package/src/meeting-info/meeting-info-v2.ts +170 -14
  266. package/src/meeting-info/util.ts +1 -1
  267. package/src/meeting-info/utilv2.ts +23 -23
  268. package/src/meetings/collection.ts +33 -0
  269. package/src/meetings/index.ts +445 -123
  270. package/src/meetings/meetings.types.ts +12 -0
  271. package/src/meetings/request.ts +2 -0
  272. package/src/meetings/util.ts +80 -11
  273. package/src/member/index.ts +58 -0
  274. package/src/member/types.ts +38 -0
  275. package/src/member/util.ts +141 -25
  276. package/src/members/collection.ts +8 -0
  277. package/src/members/index.ts +134 -8
  278. package/src/members/request.ts +97 -17
  279. package/src/members/types.ts +29 -0
  280. package/src/members/util.ts +333 -240
  281. package/src/metrics/constants.ts +12 -4
  282. package/src/metrics/index.ts +1 -490
  283. package/src/multistream/mediaRequestManager.ts +289 -79
  284. package/src/multistream/receiveSlot.ts +31 -17
  285. package/src/multistream/receiveSlotManager.ts +34 -24
  286. package/src/multistream/remoteMedia.ts +27 -2
  287. package/src/multistream/remoteMediaGroup.ts +59 -0
  288. package/src/multistream/remoteMediaManager.ts +148 -30
  289. package/src/multistream/sendSlotManager.ts +170 -0
  290. package/src/reachability/index.ts +228 -37
  291. package/src/reachability/request.ts +17 -8
  292. package/src/reconnection-manager/index.ts +83 -56
  293. package/src/recording-controller/index.ts +20 -3
  294. package/src/recording-controller/util.ts +26 -9
  295. package/src/roap/index.ts +63 -32
  296. package/src/roap/request.ts +100 -104
  297. package/src/roap/turnDiscovery.ts +48 -26
  298. package/src/rtcMetrics/constants.ts +3 -0
  299. package/src/rtcMetrics/index.ts +100 -0
  300. package/src/statsAnalyzer/index.ts +105 -91
  301. package/src/statsAnalyzer/mqaUtil.ts +13 -14
  302. package/src/webinar/collection.ts +31 -0
  303. package/src/webinar/index.ts +62 -0
  304. package/test/integration/spec/converged-space-meetings.js +60 -3
  305. package/test/integration/spec/journey.js +320 -261
  306. package/test/integration/spec/space-meeting.js +76 -3
  307. package/test/unit/spec/annotation/index.ts +418 -0
  308. package/test/unit/spec/breakouts/breakout.ts +118 -28
  309. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  310. package/test/unit/spec/breakouts/events.ts +89 -0
  311. package/test/unit/spec/breakouts/index.ts +1395 -69
  312. package/test/unit/spec/breakouts/utils.js +52 -1
  313. package/test/unit/spec/common/queue.js +31 -2
  314. package/test/unit/spec/controls-options-manager/index.js +163 -0
  315. package/test/unit/spec/controls-options-manager/util.js +576 -60
  316. package/test/unit/spec/fixture/locus.js +1 -0
  317. package/test/unit/spec/interpretation/collection.ts +15 -0
  318. package/test/unit/spec/interpretation/index.ts +589 -0
  319. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  320. package/test/unit/spec/locus-info/controlsUtils.js +316 -43
  321. package/test/unit/spec/locus-info/index.js +1304 -33
  322. package/test/unit/spec/locus-info/infoUtils.js +37 -15
  323. package/test/unit/spec/locus-info/lib/SeqCmp.json +16 -0
  324. package/test/unit/spec/locus-info/mediaSharesUtils.ts +32 -0
  325. package/test/unit/spec/locus-info/parser.js +116 -35
  326. package/test/unit/spec/locus-info/selfConstant.js +27 -4
  327. package/test/unit/spec/locus-info/selfUtils.js +208 -17
  328. package/test/unit/spec/media/index.ts +104 -37
  329. package/test/unit/spec/media/properties.ts +2 -2
  330. package/test/unit/spec/meeting/in-meeting-actions.ts +81 -3
  331. package/test/unit/spec/meeting/index.js +5216 -1956
  332. package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
  333. package/test/unit/spec/meeting/muteState.js +408 -208
  334. package/test/unit/spec/meeting/request.js +483 -49
  335. package/test/unit/spec/meeting/utils.js +679 -64
  336. package/test/unit/spec/meeting-info/index.js +300 -0
  337. package/test/unit/spec/meeting-info/meetinginfov2.js +526 -5
  338. package/test/unit/spec/meeting-info/utilv2.js +21 -0
  339. package/test/unit/spec/meetings/collection.js +26 -0
  340. package/test/unit/spec/meetings/index.js +1011 -205
  341. package/test/unit/spec/meetings/utils.js +202 -2
  342. package/test/unit/spec/member/index.js +61 -6
  343. package/test/unit/spec/member/util.js +510 -34
  344. package/test/unit/spec/members/index.js +432 -1
  345. package/test/unit/spec/members/request.js +206 -27
  346. package/test/unit/spec/members/utils.js +210 -0
  347. package/test/unit/spec/metrics/index.js +1 -50
  348. package/test/unit/spec/multistream/mediaRequestManager.ts +803 -162
  349. package/test/unit/spec/multistream/receiveSlot.ts +28 -20
  350. package/test/unit/spec/multistream/receiveSlotManager.ts +32 -30
  351. package/test/unit/spec/multistream/remoteMedia.ts +30 -0
  352. package/test/unit/spec/multistream/remoteMediaGroup.ts +266 -0
  353. package/test/unit/spec/multistream/remoteMediaManager.ts +326 -0
  354. package/test/unit/spec/multistream/sendSlotManager.ts +242 -0
  355. package/test/unit/spec/reachability/index.ts +549 -9
  356. package/test/unit/spec/reachability/request.js +68 -0
  357. package/test/unit/spec/reconnection-manager/index.js +85 -9
  358. package/test/unit/spec/recording-controller/index.js +294 -218
  359. package/test/unit/spec/recording-controller/util.js +223 -96
  360. package/test/unit/spec/roap/index.ts +178 -64
  361. package/test/unit/spec/roap/request.ts +203 -85
  362. package/test/unit/spec/roap/turnDiscovery.ts +82 -36
  363. package/test/unit/spec/rtcMetrics/index.ts +73 -0
  364. package/test/unit/spec/stats-analyzer/index.js +136 -2
  365. package/test/unit/spec/webinar/collection.ts +13 -0
  366. package/test/unit/spec/webinar/index.ts +60 -0
  367. package/test/utils/integrationTestUtils.js +46 -0
  368. package/test/utils/testUtils.js +0 -52
  369. package/dist/meeting/effectsState.js +0 -262
  370. package/dist/meeting/effectsState.js.map +0 -1
  371. package/dist/metrics/config.js +0 -299
  372. package/dist/metrics/config.js.map +0 -1
  373. package/dist/types/meeting/effectsState.d.ts +0 -42
  374. package/dist/types/metrics/config.d.ts +0 -178
  375. package/src/index.js +0 -16
  376. package/src/meeting/effectsState.ts +0 -211
  377. package/src/metrics/config.ts +0 -495
  378. package/test/unit/spec/meeting/effectsState.js +0 -285
@@ -1,5 +1,10 @@
1
1
  "use strict";
2
2
 
3
+ var _Object$keys = require("@babel/runtime-corejs2/core-js/object/keys");
4
+ var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs2/core-js/object/get-own-property-symbols");
5
+ var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor");
6
+ var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptors");
7
+ var _Object$defineProperties = require("@babel/runtime-corejs2/core-js/object/define-properties");
3
8
  var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
9
  var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
5
10
  _Object$defineProperty(exports, "__esModule", {
@@ -19,10 +24,10 @@ var _constants = require("../constants");
19
24
  var _breakout = _interopRequireDefault(require("./breakout"));
20
25
  var _collection = _interopRequireDefault(require("./collection"));
21
26
  var _request = _interopRequireDefault(require("./request"));
22
- /*!
23
- * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.
24
- */
25
-
27
+ var _events = _interopRequireDefault(require("./events"));
28
+ var _utils = require("./utils");
29
+ function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
30
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
26
31
  /**
27
32
  * @class Breakouts
28
33
  */
@@ -39,6 +44,8 @@ var Breakouts = _webexCore.WebexPlugin.extend({
39
44
  // appears once breakouts start
40
45
  enableBreakoutSession: 'boolean',
41
46
  // appears from the moment you enable breakouts
47
+ hasBreakoutPreAssignments: 'boolean',
48
+ // appears from the moment you enable breakouts
42
49
  groupId: 'string',
43
50
  // appears from the moment you enable breakouts
44
51
  name: 'string',
@@ -55,7 +62,21 @@ var Breakouts = _webexCore.WebexPlugin.extend({
55
62
  // appears from the moment you enable breakouts
56
63
  locusUrl: 'string',
57
64
  // the current locus url
58
- breakoutServiceUrl: 'string' // the current breakout resouce url
65
+ breakoutServiceUrl: 'string',
66
+ // the current breakout resource url
67
+ mainLocusUrl: 'string',
68
+ // the locus url of the main session
69
+ groups: 'array',
70
+ // appears when create breakouts
71
+ manageGroups: 'array',
72
+ // appears when manage breakouts
73
+ preAssignments: 'array',
74
+ // appears when getPreAssignments info hasBreakoutPreAssignments = true
75
+ editLock: 'object',
76
+ // appears when getBreakout info editlock = true
77
+ intervalID: 'number',
78
+ meetingId: 'string',
79
+ canManageBreakouts: 'boolean' // appear the ability to manage breakouts
59
80
  },
60
81
 
61
82
  children: {
@@ -63,6 +84,7 @@ var Breakouts = _webexCore.WebexPlugin.extend({
63
84
  },
64
85
  derived: {
65
86
  isInMainSession: {
87
+ cache: false,
66
88
  deps: ['sessionType'],
67
89
  /**
68
90
  * Returns true if the user is in the main session
@@ -71,6 +93,56 @@ var Breakouts = _webexCore.WebexPlugin.extend({
71
93
  fn: function fn() {
72
94
  return this.sessionType === _constants.BREAKOUTS.SESSION_TYPES.MAIN;
73
95
  }
96
+ },
97
+ isActiveBreakout: {
98
+ cache: false,
99
+ // fix issue: sometimes the derived will not change even if the deps changed
100
+ deps: ['sessionType', 'status'],
101
+ /**
102
+ * Returns true if the breakout status is active
103
+ * @returns {boolean}
104
+ */
105
+ fn: function fn() {
106
+ return this.sessionType === _constants.BREAKOUTS.SESSION_TYPES.BREAKOUT && (this.status === _constants.BREAKOUTS.STATUS.OPEN || this.status === _constants.BREAKOUTS.STATUS.CLOSING);
107
+ }
108
+ },
109
+ breakoutGroupId: {
110
+ cache: false,
111
+ deps: ['manageGroups'],
112
+ /**
113
+ * Returns the active group id
114
+ * @returns {boolean}
115
+ */
116
+ fn: function fn() {
117
+ var _this$manageGroups;
118
+ if ((_this$manageGroups = this.manageGroups) !== null && _this$manageGroups !== void 0 && _this$manageGroups.length) {
119
+ return this.manageGroups[0].status !== _constants.BREAKOUTS.STATUS.CLOSED ? this.manageGroups[0].id : '';
120
+ }
121
+ return '';
122
+ }
123
+ },
124
+ breakoutStatus: {
125
+ cache: true,
126
+ deps: ['isInMainSession', 'status', 'groups'],
127
+ /**
128
+ * Returns the breakout status
129
+ * @returns {boolean}
130
+ */
131
+ fn: function fn() {
132
+ var _this$groups, _this$groups$;
133
+ return this.isInMainSession ? (_this$groups = this.groups) === null || _this$groups === void 0 ? void 0 : (_this$groups$ = _this$groups[0]) === null || _this$groups$ === void 0 ? void 0 : _this$groups$.status : this.status;
134
+ }
135
+ },
136
+ shouldQueryPreAssignments: {
137
+ cache: false,
138
+ deps: ['canManageBreakouts', 'enableBreakoutSession', 'hasBreakoutPreAssignments'],
139
+ /**
140
+ * Returns should query preAssignments or not
141
+ * @returns {boolean}
142
+ */
143
+ fn: function fn() {
144
+ return !!(this.canManageBreakouts && this.enableBreakoutSession && this.hasBreakoutPreAssignments);
145
+ }
74
146
  }
75
147
  },
76
148
  /**
@@ -79,20 +151,31 @@ var Breakouts = _webexCore.WebexPlugin.extend({
79
151
  */
80
152
  initialize: function initialize() {
81
153
  var _this = this;
82
- this.listenTo(this, 'change:status', function () {
83
- if (_this.status === _constants.BREAKOUTS.STATUS.CLOSING) {
154
+ this.listenTo(this, 'change:breakoutStatus', function () {
155
+ if (_this.breakoutStatus === _constants.BREAKOUTS.STATUS.CLOSING) {
84
156
  _this.trigger(_constants.BREAKOUTS.EVENTS.BREAKOUTS_CLOSING);
85
157
  }
86
158
  });
159
+ this.listenTo(this, 'change:shouldQueryPreAssignments', function () {
160
+ if (_this.shouldQueryPreAssignments && !_this.preAssignments) {
161
+ _this.queryPreAssignments();
162
+ }
163
+ });
87
164
  this.debouncedQueryRosters = (0, _debounce2.default)(this.queryRosters, 10, {
88
165
  leading: true,
89
166
  trailing: false
90
167
  });
91
- this.listenTo(this.breakouts, 'add', function () {
168
+ this.listenTo(this.breakouts, 'add', function (breakout) {
92
169
  _this.debouncedQueryRosters();
170
+ _this.triggerReturnToMainEvent(breakout);
171
+ });
172
+ this.listenTo(this.breakouts, 'change:requestedLastModifiedTime', function (breakout) {
173
+ _this.triggerReturnToMainEvent(breakout);
93
174
  });
175
+ this.listenToCurrentSessionTypeChange();
94
176
  this.listenToBroadcastMessages();
95
177
  this.listenToBreakoutRosters();
178
+ this.listenToBreakoutHelp();
96
179
  // @ts-ignore
97
180
  this.breakoutRequest = new _request.default({
98
181
  webex: this.webex
@@ -112,9 +195,22 @@ var Breakouts = _webexCore.WebexPlugin.extend({
112
195
  */
113
196
  locusUrlUpdate: function locusUrlUpdate(locusUrl) {
114
197
  this.set('locusUrl', locusUrl);
198
+ var isInMainSession = this.isInMainSession,
199
+ mainLocusUrl = this.mainLocusUrl;
200
+ if (isInMainSession || !mainLocusUrl) {
201
+ this.set('mainLocusUrl', locusUrl);
202
+ }
115
203
  },
116
204
  /**
117
- * Update the current breakout resouce url
205
+ * Update whether self is moderator/cohost or not
206
+ * @param {boolean} canManageBreakouts
207
+ * @returns {void}
208
+ */
209
+ updateCanManageBreakouts: function updateCanManageBreakouts(canManageBreakouts) {
210
+ this.set('canManageBreakouts', canManageBreakouts);
211
+ },
212
+ /**
213
+ * Update the current breakout resource url
118
214
  * @param {string} breakoutServiceUrl
119
215
  * @returns {void}
120
216
  */
@@ -135,7 +231,7 @@ var Breakouts = _webexCore.WebexPlugin.extend({
135
231
  }
136
232
  }).then(function (result) {
137
233
  var rosters = result.body.rosters;
138
- rosters.forEach(function (_ref) {
234
+ rosters === null || rosters === void 0 ? void 0 : rosters.forEach(function (_ref) {
139
235
  var locus = _ref.locus;
140
236
  _this2.handleRosterUpdate(locus);
141
237
  });
@@ -158,25 +254,37 @@ var Breakouts = _webexCore.WebexPlugin.extend({
158
254
  }
159
255
  session.parseRoster(locus);
160
256
  },
257
+ /**
258
+ *Sets up listener for currentBreakoutSession sessionType changed
259
+ * @returns {void}
260
+ */
261
+ listenToCurrentSessionTypeChange: function listenToCurrentSessionTypeChange() {
262
+ var _this3 = this;
263
+ this.listenTo(this.currentBreakoutSession, 'change:sessionType', function (currentBreakoutSession, sessionType) {
264
+ if ((0, _utils.isSessionTypeChangedFromSessionToMain)(currentBreakoutSession, sessionType)) {
265
+ _this3.trigger(_constants.BREAKOUTS.EVENTS.LEAVE_BREAKOUT);
266
+ }
267
+ });
268
+ },
161
269
  /**
162
270
  * Sets up listener for broadcast messages sent to the breakout session
163
271
  * @returns {void}
164
272
  */
165
273
  listenToBroadcastMessages: function listenToBroadcastMessages() {
166
- var _this3 = this;
274
+ var _this4 = this;
167
275
  this.listenTo(this.webex.internal.llm, 'event:breakout.message', function (event) {
168
276
  var _event$data = event.data,
169
277
  senderUserId = _event$data.senderUserId,
170
278
  sentTime = _event$data.sentTime,
171
279
  message = _event$data.message;
172
- _this3.trigger(_constants.BREAKOUTS.EVENTS.MESSAGE, {
280
+ _this4.trigger(_constants.BREAKOUTS.EVENTS.MESSAGE, {
173
281
  senderUserId: senderUserId,
174
282
  sentTime: sentTime,
175
283
  message: message,
176
284
  // FIXME: This is only the current sessionId
177
285
  // We'd need to check that the dataChannelUrl is still the same
178
286
  // to guarantee that this message was sent to this session
179
- sessionId: _this3.currentBreakoutSession.sessionId
287
+ sessionId: _this4.currentBreakoutSession.sessionId
180
288
  });
181
289
  });
182
290
  },
@@ -185,12 +293,45 @@ var Breakouts = _webexCore.WebexPlugin.extend({
185
293
  * @returns {void}
186
294
  */
187
295
  listenToBreakoutRosters: function listenToBreakoutRosters() {
188
- var _this4 = this;
296
+ var _this5 = this;
189
297
  this.listenTo(this.webex.internal.mercury, 'event:breakout.roster', function (event) {
190
- _this4.handleRosterUpdate(event.data.locus);
191
- _this4.trigger(_constants.BREAKOUTS.EVENTS.MEMBERS_UPDATE);
298
+ _this5.handleRosterUpdate(event.data.locus);
299
+ _this5.trigger(_constants.BREAKOUTS.EVENTS.MEMBERS_UPDATE);
300
+ });
301
+ },
302
+ /**
303
+ * Sets up a listener for ask help notify from mecury
304
+ * @returns {void}
305
+ */
306
+ listenToBreakoutHelp: function listenToBreakoutHelp() {
307
+ var _this6 = this;
308
+ this.listenTo(this.webex.internal.mercury, 'event:breakout.help', function (event) {
309
+ var _event$data2 = event.data,
310
+ participant = _event$data2.participant,
311
+ sessionId = _event$data2.sessionId;
312
+ _this6.trigger(_constants.BREAKOUTS.EVENTS.ASK_FOR_HELP, {
313
+ participant: participant,
314
+ sessionId: sessionId
315
+ });
192
316
  });
193
317
  },
318
+ /**
319
+ * get current breakout is in progress or not
320
+ * @returns {boolean}
321
+ */
322
+ isBreakoutInProgress: function isBreakoutInProgress() {
323
+ var _this$groups2, _this$groups2$;
324
+ var currentStatus = ((_this$groups2 = this.groups) === null || _this$groups2 === void 0 ? void 0 : (_this$groups2$ = _this$groups2[0]) === null || _this$groups2$ === void 0 ? void 0 : _this$groups2$.status) || this.status;
325
+ return currentStatus === _constants.BREAKOUTS.STATUS.OPEN || currentStatus === _constants.BREAKOUTS.STATUS.CLOSING;
326
+ },
327
+ /**
328
+ * get current breakout is in closing or not
329
+ * @returns {boolean}
330
+ */
331
+ isBreakoutIClosing: function isBreakoutIClosing() {
332
+ var _this$groups3, _this$groups3$;
333
+ return (((_this$groups3 = this.groups) === null || _this$groups3 === void 0 ? void 0 : (_this$groups3$ = _this$groups3[0]) === null || _this$groups3$ === void 0 ? void 0 : _this$groups3$.status) || this.status) === _constants.BREAKOUTS.STATUS.CLOSING;
334
+ },
194
335
  /**
195
336
  * Updates the information about the current breakout
196
337
  * @param {Object} params
@@ -199,6 +340,10 @@ var Breakouts = _webexCore.WebexPlugin.extend({
199
340
  updateBreakout: function updateBreakout(params) {
200
341
  var _this$set;
201
342
  this.set(params);
343
+ // These values are set manually so they are unset when they are not included in params
344
+ this.set('groups', params.groups);
345
+ this.set('startTime', params.startTime);
346
+ this.set('status', params.status);
202
347
  this.set('currentBreakoutSession', (_this$set = {
203
348
  sessionId: params.sessionId,
204
349
  groupId: params.groupId,
@@ -206,8 +351,21 @@ var Breakouts = _webexCore.WebexPlugin.extend({
206
351
  current: true,
207
352
  sessionType: params.sessionType,
208
353
  url: params.url
209
- }, (0, _defineProperty2.default)(_this$set, _constants.BREAKOUTS.SESSION_STATES.ACTIVE, false), (0, _defineProperty2.default)(_this$set, _constants.BREAKOUTS.SESSION_STATES.ALLOWED, false), (0, _defineProperty2.default)(_this$set, _constants.BREAKOUTS.SESSION_STATES.ALLOWED, false), (0, _defineProperty2.default)(_this$set, _constants.BREAKOUTS.SESSION_STATES.ASSIGNED_CURRENT, false), (0, _defineProperty2.default)(_this$set, _constants.BREAKOUTS.SESSION_STATES.REQUESTED, false), _this$set));
210
- this.set('enableBreakoutSession', params.enableBreakoutSession);
354
+ }, (0, _defineProperty2.default)(_this$set, _constants.BREAKOUTS.SESSION_STATES.ACTIVE, false), (0, _defineProperty2.default)(_this$set, _constants.BREAKOUTS.SESSION_STATES.ALLOWED, false), (0, _defineProperty2.default)(_this$set, _constants.BREAKOUTS.SESSION_STATES.ASSIGNED, false), (0, _defineProperty2.default)(_this$set, _constants.BREAKOUTS.SESSION_STATES.ASSIGNED_CURRENT, false), (0, _defineProperty2.default)(_this$set, _constants.BREAKOUTS.SESSION_STATES.REQUESTED, false), _this$set));
355
+ if (!this.isBreakoutInProgress()) {
356
+ this.clearBreakouts();
357
+ }
358
+ if (this.currentBreakoutSession.previous('sessionId') !== this.currentBreakoutSession.sessionId || this.currentBreakoutSession.previous('groupId') !== this.currentBreakoutSession.groupId) {
359
+ // should report joined session changed
360
+ var meeting = this.webex.meetings.getMeetingByType(_constants._ID_, this.meetingId);
361
+ _events.default.onBreakoutJoinResponse({
362
+ currentSession: this.currentBreakoutSession,
363
+ meeting: meeting,
364
+ breakoutMoveId: params.breakoutMoveId
365
+ },
366
+ // @ts-ignore
367
+ this.webex.internal.newMetrics.submitClientEvent.bind(this.webex.internal.newMetrics));
368
+ }
211
369
  },
212
370
  /**
213
371
  * Updates the information about available breakouts
@@ -215,8 +373,14 @@ var Breakouts = _webexCore.WebexPlugin.extend({
215
373
  * @returns {void}
216
374
  */
217
375
  updateBreakoutSessions: function updateBreakoutSessions(payload) {
218
- var _this5 = this;
376
+ var _this7 = this;
219
377
  var breakouts = {};
378
+ if (this.isBreakoutIClosing()) {
379
+ // fix issue: don't clear/update breakouts collection when in closing since locus DTO will send undefined or
380
+ // only the MAIN session info here, if just update it, will miss the breakout roster info during
381
+ // count down to end breakouts
382
+ return;
383
+ }
220
384
  if (payload.breakoutSessions) {
221
385
  (0, _forEach2.default)(_constants.BREAKOUTS.SESSION_STATES, function (state) {
222
386
  (0, _forEach2.default)(payload.breakoutSessions[state], function (breakout) {
@@ -230,15 +394,27 @@ var Breakouts = _webexCore.WebexPlugin.extend({
230
394
  breakouts[sessionId][_constants.BREAKOUTS.SESSION_STATES.REQUESTED] = false;
231
395
  }
232
396
  breakouts[sessionId][state] = true;
397
+ if (state === _constants.BREAKOUTS.SESSION_STATES.REQUESTED) {
398
+ breakouts[sessionId].requestedLastModifiedTime = breakout.modifiedAt;
399
+ }
233
400
  });
234
401
  });
235
402
  }
236
403
  (0, _forEach2.default)(breakouts, function (breakout) {
237
404
  // eslint-disable-next-line no-param-reassign
238
- breakout.url = _this5.url;
405
+ breakout.url = _this7.url;
239
406
  });
240
407
  this.breakouts.set((0, _values.default)(breakouts));
241
408
  },
409
+ /**
410
+ * clear breakouts collection
411
+ * @returns {void}
412
+ */
413
+ clearBreakouts: function clearBreakouts() {
414
+ if (this.breakouts.length > 0) {
415
+ this.breakouts.reset();
416
+ }
417
+ },
242
418
  /**
243
419
  * get main session
244
420
  * @returns {Breakout}
@@ -277,10 +453,7 @@ var Breakouts = _webexCore.WebexPlugin.extend({
277
453
  * @returns {Promise}
278
454
  */
279
455
  broadcast: function broadcast(message, options) {
280
- var _this$breakouts$filte;
281
- var breakoutGroupId = this.isInMainSession ? (_this$breakouts$filte = this.breakouts.filter(function (breakout) {
282
- return !breakout.isMain;
283
- })[0]) === null || _this$breakouts$filte === void 0 ? void 0 : _this$breakouts$filte.groupId : this.groupId;
456
+ var breakoutGroupId = this.breakoutGroupId;
284
457
  if (!breakoutGroupId) {
285
458
  throw new Error('Cannot broadcast, no breakout session found');
286
459
  }
@@ -312,39 +485,39 @@ var Breakouts = _webexCore.WebexPlugin.extend({
312
485
  return _promise.default.reject(new Error("enableBreakouts: the breakoutServiceUrl is empty"));
313
486
  },
314
487
  /**
315
- * Make the meeting enbale or disable breakout session
488
+ * Make the meeting enable or disable breakout session
316
489
  * @param {boolean} enable
317
490
  * @returns {Promise}
318
491
  */
319
492
  toggleBreakout: function toggleBreakout(enable) {
320
- var _this6 = this;
493
+ var _this8 = this;
321
494
  return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
322
495
  var info;
323
496
  return _regenerator.default.wrap(function _callee$(_context) {
324
497
  while (1) switch (_context.prev = _context.next) {
325
498
  case 0:
326
- if (!(_this6.enableBreakoutSession === undefined)) {
499
+ if (!(_this8.enableBreakoutSession === undefined)) {
327
500
  _context.next = 10;
328
501
  break;
329
502
  }
330
503
  _context.next = 3;
331
- return _this6.enableBreakouts();
504
+ return _this8.enableBreakouts();
332
505
  case 3:
333
506
  info = _context.sent;
507
+ // first time enable, set the initial data
508
+ _this8.updateBreakout(info === null || info === void 0 ? void 0 : info.body);
334
509
  if (enable) {
335
510
  _context.next = 8;
336
511
  break;
337
512
  }
338
- // if enable is false, updateBreakout set the param then set enableBreakoutSession as false
339
- _this6.updateBreakout(info.body);
340
513
  _context.next = 8;
341
- return _this6.doToggleBreakout(enable);
514
+ return _this8.doToggleBreakout(enable);
342
515
  case 8:
343
516
  _context.next = 12;
344
517
  break;
345
518
  case 10:
346
519
  _context.next = 12;
347
- return _this6.doToggleBreakout(enable);
520
+ return _this8.doToggleBreakout(enable);
348
521
  case 12:
349
522
  case "end":
350
523
  return _context.stop();
@@ -358,16 +531,517 @@ var Breakouts = _webexCore.WebexPlugin.extend({
358
531
  * @returns {Promise}
359
532
  */
360
533
  doToggleBreakout: function doToggleBreakout(enable) {
534
+ var body = _objectSpread(_objectSpread({}, this.editLock && !!this.editLock.token ? {
535
+ editlock: {
536
+ token: this.editLock.token
537
+ }
538
+ } : {}), {
539
+ enableBreakoutSession: enable
540
+ });
541
+
361
542
  // @ts-ignore
362
543
  return this.webex.request({
363
544
  method: _constants.HTTP_VERBS.PUT,
364
545
  uri: this.url,
365
- body: {
366
- enableBreakoutSession: enable
546
+ body: body
547
+ });
548
+ },
549
+ /**
550
+ * set groups to manageGroups prop
551
+ * @param {Object} breakoutInfo -- breakout groups
552
+ * @returns {void}
553
+ */
554
+ _setManageGroups: function _setManageGroups(breakoutInfo) {
555
+ var _breakoutInfo$body;
556
+ if (breakoutInfo !== null && breakoutInfo !== void 0 && (_breakoutInfo$body = breakoutInfo.body) !== null && _breakoutInfo$body !== void 0 && _breakoutInfo$body.groups) {
557
+ this.set('manageGroups', breakoutInfo.body.groups);
558
+ }
559
+ },
560
+ /**
561
+ * Create new breakout sessions
562
+ * @param {object} params -- breakout session group
563
+ * @returns {Promise}
564
+ */
565
+ create: function create(params) {
566
+ var _this9 = this;
567
+ return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
568
+ var payload, body, breakoutInfo;
569
+ return _regenerator.default.wrap(function _callee2$(_context2) {
570
+ while (1) switch (_context2.prev = _context2.next) {
571
+ case 0:
572
+ payload = _objectSpread({}, params);
573
+ body = _objectSpread(_objectSpread({}, _this9.editLock && !!_this9.editLock.token ? {
574
+ editlock: {
575
+ token: _this9.editLock.token
576
+ }
577
+ } : {}), {
578
+ groups: [payload]
579
+ }); // @ts-ignore
580
+ _context2.next = 4;
581
+ return _this9.webex.request({
582
+ method: _constants.HTTP_VERBS.PUT,
583
+ uri: _this9.url,
584
+ body: body
585
+ }).catch(function (error) {
586
+ return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#create'));
587
+ });
588
+ case 4:
589
+ breakoutInfo = _context2.sent;
590
+ _this9._setManageGroups(breakoutInfo);
591
+
592
+ // clear edit lock info after save breakout session info
593
+ _this9._clearEditLockInfo();
594
+ return _context2.abrupt("return", breakoutInfo);
595
+ case 8:
596
+ case "end":
597
+ return _context2.stop();
598
+ }
599
+ }, _callee2);
600
+ }))();
601
+ },
602
+ /**
603
+ * Delete all breakout sessions
604
+ * @returns {Promise}
605
+ */
606
+ clearSessions: function clearSessions() {
607
+ var _this10 = this;
608
+ return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
609
+ var body, breakoutInfo;
610
+ return _regenerator.default.wrap(function _callee3$(_context3) {
611
+ while (1) switch (_context3.prev = _context3.next) {
612
+ case 0:
613
+ body = _objectSpread(_objectSpread({}, _this10.editLock && !!_this10.editLock.token ? {
614
+ editlock: {
615
+ token: _this10.editLock.token
616
+ }
617
+ } : {}), {
618
+ groups: [{
619
+ action: _constants.BREAKOUTS.ACTION.DELETE
620
+ }]
621
+ }); // @ts-ignore
622
+ _context3.next = 3;
623
+ return _this10.webex.request({
624
+ method: _constants.HTTP_VERBS.PUT,
625
+ uri: _this10.url,
626
+ body: body
627
+ }).catch(function (error) {
628
+ return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#clearSessions'));
629
+ });
630
+ case 3:
631
+ breakoutInfo = _context3.sent;
632
+ _this10._setManageGroups(breakoutInfo);
633
+ return _context3.abrupt("return", breakoutInfo);
634
+ case 6:
635
+ case "end":
636
+ return _context3.stop();
637
+ }
638
+ }, _callee3);
639
+ }))();
640
+ },
641
+ /**
642
+ * Host or cohost starts breakout sessions
643
+ * @param {object} params
644
+ * @returns {Promise}
645
+ */
646
+ start: function start() {
647
+ var _arguments = arguments,
648
+ _this11 = this;
649
+ return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {
650
+ var params, action, payload, body, breakoutInfo;
651
+ return _regenerator.default.wrap(function _callee4$(_context4) {
652
+ while (1) switch (_context4.prev = _context4.next) {
653
+ case 0:
654
+ params = _arguments.length > 0 && _arguments[0] !== undefined ? _arguments[0] : {};
655
+ action = _constants.BREAKOUTS.ACTION.START;
656
+ payload = _objectSpread({
657
+ id: _this11.breakoutGroupId,
658
+ action: action,
659
+ allowBackToMain: false,
660
+ allowToJoinLater: false
661
+ }, params);
662
+ body = _objectSpread(_objectSpread({}, _this11.editLock && !!_this11.editLock.token ? {
663
+ editlock: {
664
+ token: _this11.editLock.token,
665
+ refresh: true
666
+ }
667
+ } : {}), {
668
+ groups: [payload]
669
+ });
670
+ _context4.next = 6;
671
+ return _this11.request({
672
+ method: _constants.HTTP_VERBS.PUT,
673
+ uri: _this11.url,
674
+ body: body
675
+ }).catch(function (error) {
676
+ return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#start'));
677
+ });
678
+ case 6:
679
+ breakoutInfo = _context4.sent;
680
+ _this11._setManageGroups(breakoutInfo);
681
+ return _context4.abrupt("return", breakoutInfo);
682
+ case 9:
683
+ case "end":
684
+ return _context4.stop();
685
+ }
686
+ }, _callee4);
687
+ }))();
688
+ },
689
+ /**
690
+ * Host or cohost ends breakout sessions
691
+ * @param {object} params
692
+ * @returns {Promise}
693
+ */
694
+ end: function end() {
695
+ var _arguments2 = arguments,
696
+ _this12 = this;
697
+ return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {
698
+ var params, delayCloseTime, id, action, payload, body, breakoutInfo;
699
+ return _regenerator.default.wrap(function _callee5$(_context5) {
700
+ while (1) switch (_context5.prev = _context5.next) {
701
+ case 0:
702
+ params = _arguments2.length > 0 && _arguments2[0] !== undefined ? _arguments2[0] : {};
703
+ delayCloseTime = _this12.delayCloseTime, id = _this12.breakoutGroupId;
704
+ action = _constants.BREAKOUTS.ACTION.CLOSE;
705
+ payload = _objectSpread({
706
+ id: id,
707
+ action: action,
708
+ delayCloseTime: delayCloseTime
709
+ }, params);
710
+ body = _objectSpread(_objectSpread({}, _this12.editLock && !!_this12.editLock.token ? {
711
+ editlock: {
712
+ token: _this12.editLock.token,
713
+ refresh: true
714
+ }
715
+ } : {}), {
716
+ groups: [payload]
717
+ });
718
+ _context5.next = 7;
719
+ return _this12.request({
720
+ method: _constants.HTTP_VERBS.PUT,
721
+ uri: _this12.url,
722
+ body: body
723
+ }).catch(function (error) {
724
+ return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#end'));
725
+ });
726
+ case 7:
727
+ breakoutInfo = _context5.sent;
728
+ _this12._setManageGroups(breakoutInfo);
729
+ return _context5.abrupt("return", breakoutInfo);
730
+ case 10:
731
+ case "end":
732
+ return _context5.stop();
733
+ }
734
+ }, _callee5);
735
+ }))();
736
+ },
737
+ /**
738
+ * Host or cohost update breakout sessions
739
+ * @param {Object} params
740
+ * @param {String} params.id
741
+ * @param {Boolean} unlockEdit
742
+ * @returns {Promise}
743
+ */
744
+ update: function update(params, unlockEdit) {
745
+ var _this13 = this;
746
+ return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6() {
747
+ var _this13$editLock;
748
+ var payload, body, breakoutInfo;
749
+ return _regenerator.default.wrap(function _callee6$(_context6) {
750
+ while (1) switch (_context6.prev = _context6.next) {
751
+ case 0:
752
+ if (params.id) {
753
+ _context6.next = 2;
754
+ break;
755
+ }
756
+ return _context6.abrupt("return", _promise.default.reject(new Error('Missing breakout group id')));
757
+ case 2:
758
+ payload = _objectSpread({}, params);
759
+ body = _objectSpread(_objectSpread({}, (_this13$editLock = _this13.editLock) !== null && _this13$editLock !== void 0 && _this13$editLock.token ? {
760
+ editlock: {
761
+ token: _this13.editLock.token,
762
+ refresh: !unlockEdit
763
+ }
764
+ } : {}), {
765
+ groups: [payload]
766
+ });
767
+ _context6.next = 6;
768
+ return _this13.request({
769
+ method: _constants.HTTP_VERBS.PUT,
770
+ uri: _this13.url,
771
+ body: body
772
+ }).catch(function (error) {
773
+ return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#update'));
774
+ });
775
+ case 6:
776
+ breakoutInfo = _context6.sent;
777
+ if (unlockEdit) {
778
+ _this13._clearEditLockInfo();
779
+ }
780
+ _this13._setManageGroups(breakoutInfo);
781
+ return _context6.abrupt("return", breakoutInfo);
782
+ case 10:
783
+ case "end":
784
+ return _context6.stop();
785
+ }
786
+ }, _callee6);
787
+ }))();
788
+ },
789
+ /**
790
+ * get existed breakout sessions
791
+ * @param {boolean} editlock -- lock operations of the breakout sessions
792
+ * @returns {Promise}
793
+ */
794
+ getBreakout: function getBreakout(editlock) {
795
+ var _this14 = this;
796
+ return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7() {
797
+ var _breakout$body, _breakout$body$editlo;
798
+ var breakout;
799
+ return _regenerator.default.wrap(function _callee7$(_context7) {
800
+ while (1) switch (_context7.prev = _context7.next) {
801
+ case 0:
802
+ _context7.next = 2;
803
+ return _this14.request({
804
+ method: _constants.HTTP_VERBS.GET,
805
+ uri: _this14.url + (editlock ? "?editlock=".concat(editlock) : '')
806
+ });
807
+ case 2:
808
+ breakout = _context7.sent;
809
+ _this14._setManageGroups(breakout);
810
+ if (editlock && (_breakout$body = breakout.body) !== null && _breakout$body !== void 0 && (_breakout$body$editlo = _breakout$body.editlock) !== null && _breakout$body$editlo !== void 0 && _breakout$body$editlo.token) {
811
+ _this14.set('editLock', breakout.body.editlock);
812
+ _this14.keepEditLockAlive();
813
+ }
814
+ return _context7.abrupt("return", breakout);
815
+ case 6:
816
+ case "end":
817
+ return _context7.stop();
818
+ }
819
+ }, _callee7);
820
+ }))();
821
+ },
822
+ /**
823
+ * enable and edit lock breakout
824
+ * @returns {void}
825
+ */
826
+ enableAndLockBreakout: function enableAndLockBreakout() {
827
+ var _this15 = this;
828
+ return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8() {
829
+ var info;
830
+ return _regenerator.default.wrap(function _callee8$(_context8) {
831
+ while (1) switch (_context8.prev = _context8.next) {
832
+ case 0:
833
+ if (!_this15.enableBreakoutSession) {
834
+ _context8.next = 4;
835
+ break;
836
+ }
837
+ _this15.lockBreakout();
838
+ _context8.next = 8;
839
+ break;
840
+ case 4:
841
+ _context8.next = 6;
842
+ return _this15.enableBreakouts();
843
+ case 6:
844
+ info = _context8.sent;
845
+ if (info.body) {
846
+ _this15.lockBreakout();
847
+ }
848
+ case 8:
849
+ case "end":
850
+ return _context8.stop();
851
+ }
852
+ }, _callee8);
853
+ }))();
854
+ },
855
+ /**
856
+ * breakout edit locked by yourself or not
857
+ * @returns {boolean}
858
+ */
859
+ hasBreakoutLocked: function hasBreakoutLocked() {
860
+ return this.editLock && this.editLock.token && this.editLock.state === _constants.BREAKOUTS.EDIT_LOCK_STATUS.LOCKED;
861
+ },
862
+ /**
863
+ * send breakout edit lock
864
+ * @returns {void}
865
+ */
866
+ lockBreakout: function lockBreakout() {
867
+ var _this16 = this;
868
+ return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9() {
869
+ var _breakout$body2, breakout;
870
+ return _regenerator.default.wrap(function _callee9$(_context9) {
871
+ while (1) switch (_context9.prev = _context9.next) {
872
+ case 0:
873
+ if (!(_this16.editLock && !!_this16.editLock.token)) {
874
+ _context9.next = 8;
875
+ break;
876
+ }
877
+ if (!(_this16.editLock.state === _constants.BREAKOUTS.EDIT_LOCK_STATUS.LOCKED)) {
878
+ _context9.next = 5;
879
+ break;
880
+ }
881
+ throw new Error('Breakout already locked');
882
+ case 5:
883
+ _this16.keepEditLockAlive();
884
+ case 6:
885
+ _context9.next = 12;
886
+ break;
887
+ case 8:
888
+ _context9.next = 10;
889
+ return _this16.getBreakout(true);
890
+ case 10:
891
+ breakout = _context9.sent;
892
+ if ((_breakout$body2 = breakout.body) !== null && _breakout$body2 !== void 0 && _breakout$body2.editlock) {
893
+ _this16.keepEditLockAlive();
894
+ }
895
+ case 12:
896
+ case "end":
897
+ return _context9.stop();
898
+ }
899
+ }, _callee9);
900
+ }))();
901
+ },
902
+ /**
903
+ * keep edit lock alive
904
+ * @returns {void}
905
+ */
906
+ keepEditLockAlive: function keepEditLockAlive() {
907
+ var _this17 = this;
908
+ if (this.editLock && !!this.editLock.token) {
909
+ var ttl = this.editLock.ttl < 30 ? _constants.BREAKOUTS.DEFAULT_TTL : this.editLock.ttl;
910
+ if (this.intervalID) {
911
+ window.clearInterval(this.intervalID);
912
+ }
913
+ this.intervalID = window.setInterval(function () {
914
+ _this17.request({
915
+ method: _constants.HTTP_VERBS.PUT,
916
+ uri: "".concat(_this17.url, "/editlock/").concat(_this17.editLock.token)
917
+ }).catch(function (error) {
918
+ _this17._clearEditLockInfo();
919
+ return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#keepEditLockAlive'));
920
+ });
921
+ }, ttl / 2 * 1000);
922
+ }
923
+ },
924
+ /**
925
+ * unlock edit breakout
926
+ * @returns {void}
927
+ */
928
+ unLockEditBreakout: function unLockEditBreakout() {
929
+ var _this18 = this;
930
+ if (this.editLock && !!this.editLock.token) {
931
+ this.request({
932
+ method: _constants.HTTP_VERBS.DELETE,
933
+ uri: "".concat(this.url, "/editlock/").concat(this.editLock.token)
934
+ }).then(function () {
935
+ _this18._clearEditLockInfo();
936
+ }).catch(function (error) {
937
+ return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#unLockEditBreakout'));
938
+ });
939
+ }
940
+ },
941
+ /**
942
+ * clear interval and edit lock info
943
+ * @private
944
+ * @returns {void}
945
+ */
946
+ _clearEditLockInfo: function _clearEditLockInfo() {
947
+ if (this.intervalID) {
948
+ clearInterval(this.intervalID);
949
+ }
950
+ this.set('editLock', {});
951
+ },
952
+ /**
953
+ * assign participants to breakout session
954
+ * @param {Array} sessions
955
+ * @returns {void}
956
+ */
957
+ assign: function assign(sessions) {
958
+ var internalSessions = sessions.map(function (item) {
959
+ return {
960
+ id: item.id,
961
+ assigned: item.memberIds,
962
+ assignedEmails: item.emails,
963
+ anyoneCanJoin: !!item.anyone
964
+ };
965
+ });
966
+ var body = _objectSpread(_objectSpread({}, this.editLock && !!this.editLock.token ? {
967
+ editlock: {
968
+ token: this.editLock.token,
969
+ refresh: true
367
970
  }
971
+ } : {}), {
972
+ groups: [{
973
+ id: this.breakoutGroupId,
974
+ sessions: internalSessions
975
+ }]
368
976
  });
977
+ return this.request({
978
+ method: _constants.HTTP_VERBS.PUT,
979
+ uri: this.url,
980
+ body: body
981
+ });
982
+ },
983
+ /**
984
+ * query preAssignments
985
+ * @returns {void}
986
+ */
987
+ queryPreAssignments: function queryPreAssignments() {
988
+ var _this19 = this;
989
+ this.webex.request({
990
+ uri: "".concat(this.url, "/preassignments"),
991
+ qs: {
992
+ locusUrl: btoa(this.locusUrl)
993
+ }
994
+ }).then(function (result) {
995
+ var _result$body;
996
+ if ((_result$body = result.body) !== null && _result$body !== void 0 && _result$body.groups) {
997
+ _this19.set('preAssignments', result.body.groups);
998
+ _this19.trigger(_constants.BREAKOUTS.EVENTS.PRE_ASSIGNMENTS_UPDATE);
999
+ }
1000
+ }).catch(function (error) {
1001
+ _loggerProxy.default.logger.error('Meeting:breakouts#queryPreAssignments failed', error);
1002
+ });
1003
+ },
1004
+ /**
1005
+ * assign participants dynamically after breakout sessions started,
1006
+ * but currently it only used for admitting participants from lobby into breakout directly
1007
+ * @param {Array} sessions
1008
+ * @returns {void}
1009
+ */
1010
+ dynamicAssign: function dynamicAssign(sessions) {
1011
+ var updatedSessions = sessions.map(function (item) {
1012
+ return {
1013
+ id: item.id,
1014
+ participants: item.participants,
1015
+ targetState: item.targetState
1016
+ };
1017
+ });
1018
+ var body = {
1019
+ groups: [{
1020
+ id: this.breakoutGroupId,
1021
+ sessions: updatedSessions
1022
+ }],
1023
+ editlock: null
1024
+ };
1025
+ if (this.editLock && this.editLock.token) {
1026
+ body.editlock = this.editLock;
1027
+ }
1028
+ return this.request({
1029
+ method: _constants.HTTP_VERBS.PUT,
1030
+ uri: "".concat(this.url, "/dynamicAssign"),
1031
+ body: body
1032
+ });
1033
+ },
1034
+ /**
1035
+ * trigger ASK_RETURN_TO_MAIN event when main session requested
1036
+ * @param {Object} breakout
1037
+ * @returns {void}
1038
+ */
1039
+ triggerReturnToMainEvent: function triggerReturnToMainEvent(breakout) {
1040
+ if (breakout.isMain && breakout.requested) {
1041
+ this.trigger(_constants.BREAKOUTS.EVENTS.ASK_RETURN_TO_MAIN);
1042
+ }
369
1043
  },
370
- version: "3.0.0-beta.31"
1044
+ version: "3.0.0-beta.310"
371
1045
  });
372
1046
  var _default = Breakouts;
373
1047
  exports.default = _default;