@webex/plugin-meetings 3.0.0-beta.39 → 3.0.0-beta.391

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 (393) hide show
  1. package/README.md +58 -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/events.js +45 -0
  11. package/dist/breakouts/events.js.map +1 -0
  12. package/dist/breakouts/index.js +671 -81
  13. package/dist/breakouts/index.js.map +1 -1
  14. package/dist/breakouts/utils.js +45 -1
  15. package/dist/breakouts/utils.js.map +1 -1
  16. package/dist/common/errors/no-meeting-info.js +51 -0
  17. package/dist/common/errors/no-meeting-info.js.map +1 -0
  18. package/dist/common/errors/reclaim-host-role-errors.js +158 -0
  19. package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
  20. package/dist/common/errors/webex-errors.js +48 -7
  21. package/dist/common/errors/webex-errors.js.map +1 -1
  22. package/dist/common/logs/logger-proxy.js +1 -1
  23. package/dist/common/logs/logger-proxy.js.map +1 -1
  24. package/dist/common/logs/request.js +5 -1
  25. package/dist/common/logs/request.js.map +1 -1
  26. package/dist/common/queue.js +24 -9
  27. package/dist/common/queue.js.map +1 -1
  28. package/dist/config.js +5 -10
  29. package/dist/config.js.map +1 -1
  30. package/dist/constants.js +242 -33
  31. package/dist/constants.js.map +1 -1
  32. package/dist/controls-options-manager/enums.js +14 -2
  33. package/dist/controls-options-manager/enums.js.map +1 -1
  34. package/dist/controls-options-manager/index.js +109 -15
  35. package/dist/controls-options-manager/index.js.map +1 -1
  36. package/dist/controls-options-manager/types.js +7 -0
  37. package/dist/controls-options-manager/types.js.map +1 -0
  38. package/dist/controls-options-manager/util.js +309 -18
  39. package/dist/controls-options-manager/util.js.map +1 -1
  40. package/dist/index.js +110 -2
  41. package/dist/index.js.map +1 -1
  42. package/dist/interceptors/index.js +15 -0
  43. package/dist/interceptors/index.js.map +1 -0
  44. package/dist/interceptors/locusRetry.js +93 -0
  45. package/dist/interceptors/locusRetry.js.map +1 -0
  46. package/dist/interpretation/collection.js +23 -0
  47. package/dist/interpretation/collection.js.map +1 -0
  48. package/dist/interpretation/index.js +380 -0
  49. package/dist/interpretation/index.js.map +1 -0
  50. package/dist/interpretation/siLanguage.js +25 -0
  51. package/dist/interpretation/siLanguage.js.map +1 -0
  52. package/dist/locus-info/controlsUtils.js +91 -2
  53. package/dist/locus-info/controlsUtils.js.map +1 -1
  54. package/dist/locus-info/index.js +386 -62
  55. package/dist/locus-info/index.js.map +1 -1
  56. package/dist/locus-info/infoUtils.js +7 -1
  57. package/dist/locus-info/infoUtils.js.map +1 -1
  58. package/dist/locus-info/mediaSharesUtils.js +71 -1
  59. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  60. package/dist/locus-info/parser.js +249 -72
  61. package/dist/locus-info/parser.js.map +1 -1
  62. package/dist/locus-info/selfUtils.js +89 -14
  63. package/dist/locus-info/selfUtils.js.map +1 -1
  64. package/dist/media/index.js +65 -102
  65. package/dist/media/index.js.map +1 -1
  66. package/dist/media/properties.js +73 -124
  67. package/dist/media/properties.js.map +1 -1
  68. package/dist/mediaQualityMetrics/config.js +135 -330
  69. package/dist/mediaQualityMetrics/config.js.map +1 -1
  70. package/dist/meeting/in-meeting-actions.js +86 -2
  71. package/dist/meeting/in-meeting-actions.js.map +1 -1
  72. package/dist/meeting/index.js +4075 -2827
  73. package/dist/meeting/index.js.map +1 -1
  74. package/dist/meeting/locusMediaRequest.js +292 -0
  75. package/dist/meeting/locusMediaRequest.js.map +1 -0
  76. package/dist/meeting/muteState.js +224 -136
  77. package/dist/meeting/muteState.js.map +1 -1
  78. package/dist/meeting/request.js +177 -152
  79. package/dist/meeting/request.js.map +1 -1
  80. package/dist/meeting/util.js +672 -417
  81. package/dist/meeting/util.js.map +1 -1
  82. package/dist/meeting-info/index.js +73 -7
  83. package/dist/meeting-info/index.js.map +1 -1
  84. package/dist/meeting-info/meeting-info-v2.js +192 -51
  85. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  86. package/dist/meeting-info/util.js +1 -1
  87. package/dist/meeting-info/util.js.map +1 -1
  88. package/dist/meeting-info/utilv2.js +36 -36
  89. package/dist/meeting-info/utilv2.js.map +1 -1
  90. package/dist/meetings/collection.js +39 -0
  91. package/dist/meetings/collection.js.map +1 -1
  92. package/dist/meetings/index.js +484 -119
  93. package/dist/meetings/index.js.map +1 -1
  94. package/dist/meetings/meetings.types.js +7 -0
  95. package/dist/meetings/meetings.types.js.map +1 -0
  96. package/dist/meetings/request.js +2 -0
  97. package/dist/meetings/request.js.map +1 -1
  98. package/dist/meetings/util.js +73 -7
  99. package/dist/meetings/util.js.map +1 -1
  100. package/dist/member/index.js +58 -0
  101. package/dist/member/index.js.map +1 -1
  102. package/dist/member/types.js +25 -0
  103. package/dist/member/types.js.map +1 -0
  104. package/dist/member/util.js +132 -25
  105. package/dist/member/util.js.map +1 -1
  106. package/dist/members/collection.js +10 -0
  107. package/dist/members/collection.js.map +1 -1
  108. package/dist/members/index.js +102 -6
  109. package/dist/members/index.js.map +1 -1
  110. package/dist/members/request.js +106 -38
  111. package/dist/members/request.js.map +1 -1
  112. package/dist/members/types.js +15 -0
  113. package/dist/members/types.js.map +1 -0
  114. package/dist/members/util.js +326 -232
  115. package/dist/members/util.js.map +1 -1
  116. package/dist/metrics/constants.js +18 -1
  117. package/dist/metrics/constants.js.map +1 -1
  118. package/dist/metrics/index.js +1 -446
  119. package/dist/metrics/index.js.map +1 -1
  120. package/dist/multistream/mediaRequestManager.js +223 -32
  121. package/dist/multistream/mediaRequestManager.js.map +1 -1
  122. package/dist/multistream/receiveSlot.js +10 -0
  123. package/dist/multistream/receiveSlot.js.map +1 -1
  124. package/dist/multistream/receiveSlotManager.js +39 -36
  125. package/dist/multistream/receiveSlotManager.js.map +1 -1
  126. package/dist/multistream/remoteMedia.js +3 -1
  127. package/dist/multistream/remoteMedia.js.map +1 -1
  128. package/dist/multistream/remoteMediaGroup.js +76 -5
  129. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  130. package/dist/multistream/remoteMediaManager.js +366 -104
  131. package/dist/multistream/remoteMediaManager.js.map +1 -1
  132. package/dist/multistream/sendSlotManager.js +255 -0
  133. package/dist/multistream/sendSlotManager.js.map +1 -0
  134. package/dist/reachability/clusterReachability.js +356 -0
  135. package/dist/reachability/clusterReachability.js.map +1 -0
  136. package/dist/reachability/index.js +263 -390
  137. package/dist/reachability/index.js.map +1 -1
  138. package/dist/reachability/request.js +6 -4
  139. package/dist/reachability/request.js.map +1 -1
  140. package/dist/reachability/util.js +29 -0
  141. package/dist/reachability/util.js.map +1 -0
  142. package/dist/reconnection-manager/index.js +266 -202
  143. package/dist/reconnection-manager/index.js.map +1 -1
  144. package/dist/recording-controller/index.js +21 -2
  145. package/dist/recording-controller/index.js.map +1 -1
  146. package/dist/recording-controller/util.js +9 -8
  147. package/dist/recording-controller/util.js.map +1 -1
  148. package/dist/roap/index.js +51 -28
  149. package/dist/roap/index.js.map +1 -1
  150. package/dist/roap/request.js +48 -64
  151. package/dist/roap/request.js.map +1 -1
  152. package/dist/roap/turnDiscovery.js +220 -70
  153. package/dist/roap/turnDiscovery.js.map +1 -1
  154. package/dist/rtcMetrics/constants.js +12 -0
  155. package/dist/rtcMetrics/constants.js.map +1 -0
  156. package/dist/rtcMetrics/index.js +179 -0
  157. package/dist/rtcMetrics/index.js.map +1 -0
  158. package/dist/statsAnalyzer/index.js +357 -295
  159. package/dist/statsAnalyzer/index.js.map +1 -1
  160. package/dist/statsAnalyzer/mqaUtil.js +296 -156
  161. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  162. package/dist/types/annotation/annotation.types.d.ts +42 -0
  163. package/dist/types/annotation/constants.d.ts +31 -0
  164. package/dist/types/annotation/index.d.ts +117 -0
  165. package/dist/types/breakouts/events.d.ts +8 -0
  166. package/dist/types/breakouts/utils.d.ts +14 -0
  167. package/dist/types/common/errors/no-meeting-info.d.ts +14 -0
  168. package/dist/types/common/errors/reclaim-host-role-errors.d.ts +60 -0
  169. package/dist/types/common/errors/webex-errors.d.ts +25 -1
  170. package/dist/types/common/logs/request.d.ts +2 -0
  171. package/dist/types/common/queue.d.ts +9 -7
  172. package/dist/types/config.d.ts +2 -7
  173. package/dist/types/constants.d.ts +203 -31
  174. package/dist/types/controls-options-manager/enums.d.ts +11 -1
  175. package/dist/types/controls-options-manager/index.d.ts +17 -1
  176. package/dist/types/controls-options-manager/types.d.ts +43 -0
  177. package/dist/types/controls-options-manager/util.d.ts +1 -7
  178. package/dist/types/index.d.ts +6 -5
  179. package/dist/types/interceptors/index.d.ts +2 -0
  180. package/dist/types/interceptors/locusRetry.d.ts +27 -0
  181. package/dist/types/interpretation/collection.d.ts +5 -0
  182. package/dist/types/interpretation/index.d.ts +5 -0
  183. package/dist/types/interpretation/siLanguage.d.ts +5 -0
  184. package/dist/types/locus-info/index.d.ts +57 -4
  185. package/dist/types/locus-info/parser.d.ts +66 -6
  186. package/dist/types/media/index.d.ts +2 -0
  187. package/dist/types/media/properties.d.ts +34 -49
  188. package/dist/types/mediaQualityMetrics/config.d.ts +99 -223
  189. package/dist/types/meeting/in-meeting-actions.d.ts +86 -2
  190. package/dist/types/meeting/index.d.ts +567 -496
  191. package/dist/types/meeting/locusMediaRequest.d.ts +74 -0
  192. package/dist/types/meeting/muteState.d.ts +93 -25
  193. package/dist/types/meeting/request.d.ts +64 -43
  194. package/dist/types/meeting/util.d.ts +117 -1
  195. package/dist/types/meeting-info/index.d.ts +13 -1
  196. package/dist/types/meeting-info/meeting-info-v2.d.ts +31 -1
  197. package/dist/types/meetings/collection.d.ts +17 -0
  198. package/dist/types/meetings/index.d.ts +113 -21
  199. package/dist/types/meetings/meetings.types.d.ts +4 -0
  200. package/dist/types/member/index.d.ts +14 -0
  201. package/dist/types/member/types.d.ts +32 -0
  202. package/dist/types/members/collection.d.ts +5 -0
  203. package/dist/types/members/index.d.ts +35 -2
  204. package/dist/types/members/request.d.ts +73 -9
  205. package/dist/types/members/types.d.ts +25 -0
  206. package/dist/types/members/util.d.ts +214 -1
  207. package/dist/types/metrics/constants.d.ts +17 -0
  208. package/dist/types/metrics/index.d.ts +4 -111
  209. package/dist/types/multistream/mediaRequestManager.d.ts +72 -3
  210. package/dist/types/multistream/receiveSlot.d.ts +7 -3
  211. package/dist/types/multistream/receiveSlotManager.d.ts +14 -4
  212. package/dist/types/multistream/remoteMedia.d.ts +3 -31
  213. package/dist/types/multistream/remoteMediaGroup.d.ts +2 -9
  214. package/dist/types/multistream/remoteMediaManager.d.ts +62 -2
  215. package/dist/types/multistream/sendSlotManager.d.ts +70 -0
  216. package/dist/types/reachability/clusterReachability.d.ts +109 -0
  217. package/dist/types/reachability/index.d.ts +60 -95
  218. package/dist/types/reachability/request.d.ts +3 -1
  219. package/dist/types/reachability/util.d.ts +8 -0
  220. package/dist/types/reconnection-manager/index.d.ts +19 -0
  221. package/dist/types/recording-controller/index.d.ts +15 -1
  222. package/dist/types/recording-controller/util.d.ts +5 -4
  223. package/dist/types/roap/index.d.ts +2 -1
  224. package/dist/types/roap/request.d.ts +9 -8
  225. package/dist/types/roap/turnDiscovery.d.ts +39 -5
  226. package/dist/types/rtcMetrics/constants.d.ts +4 -0
  227. package/dist/types/rtcMetrics/index.d.ts +61 -0
  228. package/dist/types/statsAnalyzer/index.d.ts +34 -12
  229. package/dist/types/statsAnalyzer/mqaUtil.d.ts +28 -4
  230. package/dist/types/webinar/collection.d.ts +16 -0
  231. package/dist/types/webinar/index.d.ts +5 -0
  232. package/dist/webinar/collection.js +44 -0
  233. package/dist/webinar/collection.js.map +1 -0
  234. package/dist/webinar/index.js +69 -0
  235. package/dist/webinar/index.js.map +1 -0
  236. package/package.json +22 -19
  237. package/src/annotation/annotation.types.ts +50 -0
  238. package/src/annotation/constants.ts +36 -0
  239. package/src/annotation/index.ts +328 -0
  240. package/src/breakouts/README.md +35 -11
  241. package/src/breakouts/breakout.ts +67 -9
  242. package/src/breakouts/events.ts +56 -0
  243. package/src/breakouts/index.ts +558 -59
  244. package/src/breakouts/utils.ts +42 -0
  245. package/src/common/errors/no-meeting-info.ts +24 -0
  246. package/src/common/errors/reclaim-host-role-errors.ts +134 -0
  247. package/src/common/errors/webex-errors.ts +44 -2
  248. package/src/common/logs/logger-proxy.ts +1 -1
  249. package/src/common/logs/request.ts +5 -1
  250. package/src/common/queue.ts +22 -8
  251. package/src/config.ts +4 -9
  252. package/src/constants.ts +229 -21
  253. package/src/controls-options-manager/enums.ts +12 -0
  254. package/src/controls-options-manager/index.ts +116 -21
  255. package/src/controls-options-manager/types.ts +59 -0
  256. package/src/controls-options-manager/util.ts +294 -14
  257. package/src/index.ts +44 -0
  258. package/src/interceptors/index.ts +3 -0
  259. package/src/interceptors/locusRetry.ts +67 -0
  260. package/src/interpretation/README.md +60 -0
  261. package/src/interpretation/collection.ts +19 -0
  262. package/src/interpretation/index.ts +349 -0
  263. package/src/interpretation/siLanguage.ts +18 -0
  264. package/src/locus-info/controlsUtils.ts +108 -0
  265. package/src/locus-info/index.ts +417 -59
  266. package/src/locus-info/infoUtils.ts +10 -2
  267. package/src/locus-info/mediaSharesUtils.ts +80 -0
  268. package/src/locus-info/parser.ts +258 -47
  269. package/src/locus-info/selfUtils.ts +81 -5
  270. package/src/media/index.ts +100 -108
  271. package/src/media/properties.ts +88 -117
  272. package/src/mediaQualityMetrics/config.ts +103 -238
  273. package/src/meeting/in-meeting-actions.ts +171 -3
  274. package/src/meeting/index.ts +3411 -2435
  275. package/src/meeting/locusMediaRequest.ts +313 -0
  276. package/src/meeting/muteState.ts +223 -136
  277. package/src/meeting/request.ts +155 -120
  278. package/src/meeting/util.ts +685 -395
  279. package/src/meeting-info/index.ts +81 -8
  280. package/src/meeting-info/meeting-info-v2.ts +170 -14
  281. package/src/meeting-info/util.ts +1 -1
  282. package/src/meeting-info/utilv2.ts +23 -23
  283. package/src/meetings/collection.ts +33 -0
  284. package/src/meetings/index.ts +507 -127
  285. package/src/meetings/meetings.types.ts +12 -0
  286. package/src/meetings/request.ts +2 -0
  287. package/src/meetings/util.ts +81 -12
  288. package/src/member/index.ts +58 -0
  289. package/src/member/types.ts +38 -0
  290. package/src/member/util.ts +141 -25
  291. package/src/members/collection.ts +8 -0
  292. package/src/members/index.ts +134 -8
  293. package/src/members/request.ts +97 -17
  294. package/src/members/types.ts +29 -0
  295. package/src/members/util.ts +333 -240
  296. package/src/metrics/constants.ts +17 -0
  297. package/src/metrics/index.ts +1 -469
  298. package/src/multistream/mediaRequestManager.ts +271 -56
  299. package/src/multistream/receiveSlot.ts +11 -4
  300. package/src/multistream/receiveSlotManager.ts +34 -24
  301. package/src/multistream/remoteMedia.ts +5 -3
  302. package/src/multistream/remoteMediaGroup.ts +78 -0
  303. package/src/multistream/remoteMediaManager.ts +248 -44
  304. package/src/multistream/sendSlotManager.ts +199 -0
  305. package/src/reachability/clusterReachability.ts +320 -0
  306. package/src/reachability/index.ts +229 -346
  307. package/src/reachability/request.ts +8 -4
  308. package/src/reachability/util.ts +24 -0
  309. package/src/reconnection-manager/index.ts +128 -97
  310. package/src/recording-controller/index.ts +20 -3
  311. package/src/recording-controller/util.ts +26 -9
  312. package/src/roap/index.ts +52 -23
  313. package/src/roap/request.ts +48 -67
  314. package/src/roap/turnDiscovery.ts +147 -49
  315. package/src/rtcMetrics/constants.ts +3 -0
  316. package/src/rtcMetrics/index.ts +166 -0
  317. package/src/statsAnalyzer/index.ts +457 -416
  318. package/src/statsAnalyzer/mqaUtil.ts +317 -170
  319. package/src/webinar/collection.ts +31 -0
  320. package/src/webinar/index.ts +62 -0
  321. package/test/integration/spec/converged-space-meetings.js +60 -3
  322. package/test/integration/spec/journey.js +320 -261
  323. package/test/integration/spec/space-meeting.js +76 -3
  324. package/test/unit/spec/annotation/index.ts +418 -0
  325. package/test/unit/spec/breakouts/breakout.ts +118 -28
  326. package/test/unit/spec/breakouts/events.ts +89 -0
  327. package/test/unit/spec/breakouts/index.ts +1349 -114
  328. package/test/unit/spec/breakouts/utils.js +52 -1
  329. package/test/unit/spec/common/queue.js +31 -2
  330. package/test/unit/spec/controls-options-manager/index.js +163 -0
  331. package/test/unit/spec/controls-options-manager/util.js +576 -60
  332. package/test/unit/spec/fixture/locus.js +1 -0
  333. package/test/unit/spec/interceptors/locusRetry.ts +131 -0
  334. package/test/unit/spec/interpretation/collection.ts +15 -0
  335. package/test/unit/spec/interpretation/index.ts +625 -0
  336. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  337. package/test/unit/spec/locus-info/controlsUtils.js +316 -43
  338. package/test/unit/spec/locus-info/index.js +1363 -37
  339. package/test/unit/spec/locus-info/infoUtils.js +37 -15
  340. package/test/unit/spec/locus-info/lib/SeqCmp.json +16 -0
  341. package/test/unit/spec/locus-info/mediaSharesUtils.ts +41 -0
  342. package/test/unit/spec/locus-info/parser.js +116 -35
  343. package/test/unit/spec/locus-info/selfConstant.js +27 -4
  344. package/test/unit/spec/locus-info/selfUtils.js +208 -17
  345. package/test/unit/spec/media/index.ts +173 -81
  346. package/test/unit/spec/media/properties.ts +2 -2
  347. package/test/unit/spec/meeting/in-meeting-actions.ts +85 -3
  348. package/test/unit/spec/meeting/index.js +6821 -2172
  349. package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
  350. package/test/unit/spec/meeting/muteState.js +402 -212
  351. package/test/unit/spec/meeting/request.js +473 -54
  352. package/test/unit/spec/meeting/utils.js +773 -67
  353. package/test/unit/spec/meeting-info/index.js +300 -0
  354. package/test/unit/spec/meeting-info/meetinginfov2.js +526 -5
  355. package/test/unit/spec/meeting-info/utilv2.js +21 -0
  356. package/test/unit/spec/meetings/collection.js +26 -0
  357. package/test/unit/spec/meetings/index.js +1415 -213
  358. package/test/unit/spec/meetings/utils.js +229 -2
  359. package/test/unit/spec/member/index.js +61 -6
  360. package/test/unit/spec/member/util.js +510 -34
  361. package/test/unit/spec/members/index.js +432 -1
  362. package/test/unit/spec/members/request.js +206 -27
  363. package/test/unit/spec/members/utils.js +210 -0
  364. package/test/unit/spec/metrics/index.js +1 -50
  365. package/test/unit/spec/multistream/mediaRequestManager.ts +781 -114
  366. package/test/unit/spec/multistream/receiveSlot.ts +9 -1
  367. package/test/unit/spec/multistream/receiveSlotManager.ts +32 -30
  368. package/test/unit/spec/multistream/remoteMedia.ts +2 -0
  369. package/test/unit/spec/multistream/remoteMediaGroup.ts +345 -0
  370. package/test/unit/spec/multistream/remoteMediaManager.ts +525 -0
  371. package/test/unit/spec/multistream/sendSlotManager.ts +274 -0
  372. package/test/unit/spec/reachability/clusterReachability.ts +279 -0
  373. package/test/unit/spec/reachability/index.ts +551 -14
  374. package/test/unit/spec/reachability/request.js +3 -1
  375. package/test/unit/spec/reachability/util.ts +40 -0
  376. package/test/unit/spec/reconnection-manager/index.js +171 -11
  377. package/test/unit/spec/recording-controller/index.js +294 -218
  378. package/test/unit/spec/recording-controller/util.js +223 -96
  379. package/test/unit/spec/roap/index.ts +180 -83
  380. package/test/unit/spec/roap/request.ts +100 -62
  381. package/test/unit/spec/roap/turnDiscovery.ts +388 -96
  382. package/test/unit/spec/rtcMetrics/index.ts +122 -0
  383. package/test/unit/spec/stats-analyzer/index.js +1252 -12
  384. package/test/unit/spec/webinar/collection.ts +13 -0
  385. package/test/unit/spec/webinar/index.ts +60 -0
  386. package/test/utils/integrationTestUtils.js +46 -0
  387. package/test/utils/testUtils.js +0 -57
  388. package/test/utils/webex-test-users.js +12 -4
  389. package/dist/metrics/config.js +0 -289
  390. package/dist/metrics/config.js.map +0 -1
  391. package/dist/types/metrics/config.d.ts +0 -169
  392. package/src/index.js +0 -18
  393. package/src/metrics/config.ts +0 -485
@@ -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,11 +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
- var _editLockError = _interopRequireDefault(require("./edit-lock-error"));
23
- /*!
24
- * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.
25
- */
26
-
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; }
27
31
  /**
28
32
  * @class Breakouts
29
33
  */
@@ -40,6 +44,8 @@ var Breakouts = _webexCore.WebexPlugin.extend({
40
44
  // appears once breakouts start
41
45
  enableBreakoutSession: 'boolean',
42
46
  // appears from the moment you enable breakouts
47
+ hasBreakoutPreAssignments: 'boolean',
48
+ // appears from the moment you enable breakouts
43
49
  groupId: 'string',
44
50
  // appears from the moment you enable breakouts
45
51
  name: 'string',
@@ -57,8 +63,20 @@ var Breakouts = _webexCore.WebexPlugin.extend({
57
63
  locusUrl: 'string',
58
64
  // the current locus url
59
65
  breakoutServiceUrl: 'string',
60
- // the current breakout resouce url
61
- groups: 'array' // appears when create breakouts
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
62
80
  },
63
81
 
64
82
  children: {
@@ -66,6 +84,7 @@ var Breakouts = _webexCore.WebexPlugin.extend({
66
84
  },
67
85
  derived: {
68
86
  isInMainSession: {
87
+ cache: false,
69
88
  deps: ['sessionType'],
70
89
  /**
71
90
  * Returns true if the user is in the main session
@@ -74,6 +93,56 @@ var Breakouts = _webexCore.WebexPlugin.extend({
74
93
  fn: function fn() {
75
94
  return this.sessionType === _constants.BREAKOUTS.SESSION_TYPES.MAIN;
76
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
+ }
77
146
  }
78
147
  },
79
148
  /**
@@ -82,20 +151,31 @@ var Breakouts = _webexCore.WebexPlugin.extend({
82
151
  */
83
152
  initialize: function initialize() {
84
153
  var _this = this;
85
- this.listenTo(this, 'change:status', function () {
86
- if (_this.status === _constants.BREAKOUTS.STATUS.CLOSING) {
154
+ this.listenTo(this, 'change:breakoutStatus', function () {
155
+ if (_this.breakoutStatus === _constants.BREAKOUTS.STATUS.CLOSING) {
87
156
  _this.trigger(_constants.BREAKOUTS.EVENTS.BREAKOUTS_CLOSING);
88
157
  }
89
158
  });
159
+ this.listenTo(this, 'change:shouldQueryPreAssignments', function () {
160
+ if (_this.shouldQueryPreAssignments && !_this.preAssignments) {
161
+ _this.queryPreAssignments();
162
+ }
163
+ });
90
164
  this.debouncedQueryRosters = (0, _debounce2.default)(this.queryRosters, 10, {
91
165
  leading: true,
92
166
  trailing: false
93
167
  });
94
- this.listenTo(this.breakouts, 'add', function () {
168
+ this.listenTo(this.breakouts, 'add', function (breakout) {
95
169
  _this.debouncedQueryRosters();
170
+ _this.triggerReturnToMainEvent(breakout);
171
+ });
172
+ this.listenTo(this.breakouts, 'change:requestedLastModifiedTime', function (breakout) {
173
+ _this.triggerReturnToMainEvent(breakout);
96
174
  });
175
+ this.listenToCurrentSessionTypeChange();
97
176
  this.listenToBroadcastMessages();
98
177
  this.listenToBreakoutRosters();
178
+ this.listenToBreakoutHelp();
99
179
  // @ts-ignore
100
180
  this.breakoutRequest = new _request.default({
101
181
  webex: this.webex
@@ -115,9 +195,22 @@ var Breakouts = _webexCore.WebexPlugin.extend({
115
195
  */
116
196
  locusUrlUpdate: function locusUrlUpdate(locusUrl) {
117
197
  this.set('locusUrl', locusUrl);
198
+ var isInMainSession = this.isInMainSession,
199
+ mainLocusUrl = this.mainLocusUrl;
200
+ if (isInMainSession || !mainLocusUrl) {
201
+ this.set('mainLocusUrl', locusUrl);
202
+ }
203
+ },
204
+ /**
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);
118
211
  },
119
212
  /**
120
- * Update the current breakout resouce url
213
+ * Update the current breakout resource url
121
214
  * @param {string} breakoutServiceUrl
122
215
  * @returns {void}
123
216
  */
@@ -138,7 +231,7 @@ var Breakouts = _webexCore.WebexPlugin.extend({
138
231
  }
139
232
  }).then(function (result) {
140
233
  var rosters = result.body.rosters;
141
- rosters.forEach(function (_ref) {
234
+ rosters === null || rosters === void 0 ? void 0 : rosters.forEach(function (_ref) {
142
235
  var locus = _ref.locus;
143
236
  _this2.handleRosterUpdate(locus);
144
237
  });
@@ -161,25 +254,37 @@ var Breakouts = _webexCore.WebexPlugin.extend({
161
254
  }
162
255
  session.parseRoster(locus);
163
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
+ },
164
269
  /**
165
270
  * Sets up listener for broadcast messages sent to the breakout session
166
271
  * @returns {void}
167
272
  */
168
273
  listenToBroadcastMessages: function listenToBroadcastMessages() {
169
- var _this3 = this;
274
+ var _this4 = this;
170
275
  this.listenTo(this.webex.internal.llm, 'event:breakout.message', function (event) {
171
276
  var _event$data = event.data,
172
277
  senderUserId = _event$data.senderUserId,
173
278
  sentTime = _event$data.sentTime,
174
279
  message = _event$data.message;
175
- _this3.trigger(_constants.BREAKOUTS.EVENTS.MESSAGE, {
280
+ _this4.trigger(_constants.BREAKOUTS.EVENTS.MESSAGE, {
176
281
  senderUserId: senderUserId,
177
282
  sentTime: sentTime,
178
283
  message: message,
179
284
  // FIXME: This is only the current sessionId
180
285
  // We'd need to check that the dataChannelUrl is still the same
181
286
  // to guarantee that this message was sent to this session
182
- sessionId: _this3.currentBreakoutSession.sessionId
287
+ sessionId: _this4.currentBreakoutSession.sessionId
183
288
  });
184
289
  });
185
290
  },
@@ -188,12 +293,45 @@ var Breakouts = _webexCore.WebexPlugin.extend({
188
293
  * @returns {void}
189
294
  */
190
295
  listenToBreakoutRosters: function listenToBreakoutRosters() {
191
- var _this4 = this;
296
+ var _this5 = this;
192
297
  this.listenTo(this.webex.internal.mercury, 'event:breakout.roster', function (event) {
193
- _this4.handleRosterUpdate(event.data.locus);
194
- _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
+ });
195
316
  });
196
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
+ },
197
335
  /**
198
336
  * Updates the information about the current breakout
199
337
  * @param {Object} params
@@ -202,6 +340,10 @@ var Breakouts = _webexCore.WebexPlugin.extend({
202
340
  updateBreakout: function updateBreakout(params) {
203
341
  var _this$set;
204
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);
205
347
  this.set('currentBreakoutSession', (_this$set = {
206
348
  sessionId: params.sessionId,
207
349
  groupId: params.groupId,
@@ -209,8 +351,21 @@ var Breakouts = _webexCore.WebexPlugin.extend({
209
351
  current: true,
210
352
  sessionType: params.sessionType,
211
353
  url: params.url
212
- }, (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));
213
- 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
+ }
214
369
  },
215
370
  /**
216
371
  * Updates the information about available breakouts
@@ -218,8 +373,14 @@ var Breakouts = _webexCore.WebexPlugin.extend({
218
373
  * @returns {void}
219
374
  */
220
375
  updateBreakoutSessions: function updateBreakoutSessions(payload) {
221
- var _this5 = this;
376
+ var _this7 = this;
222
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
+ }
223
384
  if (payload.breakoutSessions) {
224
385
  (0, _forEach2.default)(_constants.BREAKOUTS.SESSION_STATES, function (state) {
225
386
  (0, _forEach2.default)(payload.breakoutSessions[state], function (breakout) {
@@ -233,15 +394,27 @@ var Breakouts = _webexCore.WebexPlugin.extend({
233
394
  breakouts[sessionId][_constants.BREAKOUTS.SESSION_STATES.REQUESTED] = false;
234
395
  }
235
396
  breakouts[sessionId][state] = true;
397
+ if (state === _constants.BREAKOUTS.SESSION_STATES.REQUESTED) {
398
+ breakouts[sessionId].requestedLastModifiedTime = breakout.modifiedAt;
399
+ }
236
400
  });
237
401
  });
238
402
  }
239
403
  (0, _forEach2.default)(breakouts, function (breakout) {
240
404
  // eslint-disable-next-line no-param-reassign
241
- breakout.url = _this5.url;
405
+ breakout.url = _this7.url;
242
406
  });
243
407
  this.breakouts.set((0, _values.default)(breakouts));
244
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
+ },
245
418
  /**
246
419
  * get main session
247
420
  * @returns {Breakout}
@@ -280,10 +453,7 @@ var Breakouts = _webexCore.WebexPlugin.extend({
280
453
  * @returns {Promise}
281
454
  */
282
455
  broadcast: function broadcast(message, options) {
283
- var _this$breakouts$filte;
284
- var breakoutGroupId = this.isInMainSession ? (_this$breakouts$filte = this.breakouts.filter(function (breakout) {
285
- return !breakout.isMain;
286
- })[0]) === null || _this$breakouts$filte === void 0 ? void 0 : _this$breakouts$filte.groupId : this.groupId;
456
+ var breakoutGroupId = this.breakoutGroupId;
287
457
  if (!breakoutGroupId) {
288
458
  throw new Error('Cannot broadcast, no breakout session found');
289
459
  }
@@ -315,39 +485,39 @@ var Breakouts = _webexCore.WebexPlugin.extend({
315
485
  return _promise.default.reject(new Error("enableBreakouts: the breakoutServiceUrl is empty"));
316
486
  },
317
487
  /**
318
- * Make the meeting enbale or disable breakout session
488
+ * Make the meeting enable or disable breakout session
319
489
  * @param {boolean} enable
320
490
  * @returns {Promise}
321
491
  */
322
492
  toggleBreakout: function toggleBreakout(enable) {
323
- var _this6 = this;
493
+ var _this8 = this;
324
494
  return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
325
495
  var info;
326
496
  return _regenerator.default.wrap(function _callee$(_context) {
327
497
  while (1) switch (_context.prev = _context.next) {
328
498
  case 0:
329
- if (!(_this6.enableBreakoutSession === undefined)) {
499
+ if (!(_this8.enableBreakoutSession === undefined)) {
330
500
  _context.next = 10;
331
501
  break;
332
502
  }
333
503
  _context.next = 3;
334
- return _this6.enableBreakouts();
504
+ return _this8.enableBreakouts();
335
505
  case 3:
336
506
  info = _context.sent;
507
+ // first time enable, set the initial data
508
+ _this8.updateBreakout(info === null || info === void 0 ? void 0 : info.body);
337
509
  if (enable) {
338
510
  _context.next = 8;
339
511
  break;
340
512
  }
341
- // if enable is false, updateBreakout set the param then set enableBreakoutSession as false
342
- _this6.updateBreakout(info.body);
343
513
  _context.next = 8;
344
- return _this6.doToggleBreakout(enable);
514
+ return _this8.doToggleBreakout(enable);
345
515
  case 8:
346
516
  _context.next = 12;
347
517
  break;
348
518
  case 10:
349
519
  _context.next = 12;
350
- return _this6.doToggleBreakout(enable);
520
+ return _this8.doToggleBreakout(enable);
351
521
  case 12:
352
522
  case "end":
353
523
  return _context.stop();
@@ -361,50 +531,68 @@ var Breakouts = _webexCore.WebexPlugin.extend({
361
531
  * @returns {Promise}
362
532
  */
363
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
+
364
542
  // @ts-ignore
365
543
  return this.webex.request({
366
544
  method: _constants.HTTP_VERBS.PUT,
367
545
  uri: this.url,
368
- body: {
369
- enableBreakoutSession: enable
370
- }
546
+ body: body
371
547
  });
372
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
+ },
373
560
  /**
374
561
  * Create new breakout sessions
375
- * @param {object} sessions -- breakout session group
562
+ * @param {object} params -- breakout session group
376
563
  * @returns {Promise}
377
564
  */
378
- create: function create(sessions) {
379
- var _this7 = this;
565
+ create: function create(params) {
566
+ var _this9 = this;
380
567
  return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
381
- var breakInfo;
568
+ var payload, body, breakoutInfo;
382
569
  return _regenerator.default.wrap(function _callee2$(_context2) {
383
570
  while (1) switch (_context2.prev = _context2.next) {
384
571
  case 0:
385
- _context2.next = 2;
386
- return _this7.webex.request({
387
- method: _constants.HTTP_VERBS.PUT,
388
- uri: _this7.url,
389
- body: {
390
- groups: [{
391
- sessions: sessions
392
- }]
572
+ payload = _objectSpread({}, params);
573
+ body = _objectSpread(_objectSpread({}, _this9.editLock && !!_this9.editLock.token ? {
574
+ editlock: {
575
+ token: _this9.editLock.token
393
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
394
585
  }).catch(function (error) {
395
- if (error.body && error.body.errorCode === _constants.BREAKOUTS.ERROR_CODE.EDIT_LOCK_TOKEN_MISMATCH) {
396
- _loggerProxy.default.logger.info("Breakouts#create --> Edit lock token mismatch");
397
- return _promise.default.reject(new _editLockError.default('Edit lock token mismatch', error));
398
- }
399
- return _promise.default.reject(error);
586
+ return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#create'));
400
587
  });
401
- case 2:
402
- breakInfo = _context2.sent;
403
- if (breakInfo.body && breakInfo.body.groups && breakInfo.body.groups) {
404
- _this7.set('groups', breakInfo.body.groups);
405
- }
406
- return _context2.abrupt("return", _promise.default.resolve(breakInfo));
407
- case 5:
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:
408
596
  case "end":
409
597
  return _context2.stop();
410
598
  }
@@ -416,42 +604,444 @@ var Breakouts = _webexCore.WebexPlugin.extend({
416
604
  * @returns {Promise}
417
605
  */
418
606
  clearSessions: function clearSessions() {
419
- var _this8 = this;
607
+ var _this10 = this;
420
608
  return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
421
- var breakInfo;
609
+ var body, breakoutInfo;
422
610
  return _regenerator.default.wrap(function _callee3$(_context3) {
423
611
  while (1) switch (_context3.prev = _context3.next) {
424
612
  case 0:
425
- _context3.next = 2;
426
- return _this8.webex.request({
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({
427
624
  method: _constants.HTTP_VERBS.PUT,
428
- uri: _this8.url,
429
- body: {
430
- groups: [{
431
- action: _constants.BREAKOUTS.ACTION_TYPES.DELETE
432
- }]
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
433
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
434
675
  }).catch(function (error) {
435
- if (error.body && error.body.errorCode === _constants.BREAKOUTS.ERROR_CODE.EDIT_LOCK_TOKEN_MISMATCH) {
436
- _loggerProxy.default.logger.info("Breakouts#clearSessions --> Edit lock token mismatch");
437
- return _promise.default.reject(new _editLockError.default('Edit lock token mismatch', 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
438
714
  }
439
- return _promise.default.reject(error);
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) : '')
440
806
  });
441
807
  case 2:
442
- breakInfo = _context3.sent;
443
- if (breakInfo.body && breakInfo.body.groups && breakInfo.body.groups) {
444
- _this8.set('groups', breakInfo.body.groups);
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();
445
813
  }
446
- return _context3.abrupt("return", _promise.default.resolve(breakInfo));
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');
447
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:
448
896
  case "end":
449
- return _context3.stop();
897
+ return _context9.stop();
450
898
  }
451
- }, _callee3);
899
+ }, _callee9);
452
900
  }))();
453
901
  },
454
- version: "3.0.0-beta.39"
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
970
+ }
971
+ } : {}), {
972
+ groups: [{
973
+ id: this.breakoutGroupId,
974
+ sessions: internalSessions
975
+ }]
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
+ }
1043
+ },
1044
+ version: "3.0.0-beta.391"
455
1045
  });
456
1046
  var _default = Breakouts;
457
1047
  exports.default = _default;