@webex/plugin-meetings 3.0.0-beta.28 → 3.0.0-beta.280

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