@webex/plugin-meetings 3.0.0-beta.26 → 3.0.0-beta.261

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 (361) 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 +841 -19
  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/webex-errors.js +28 -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/queue.js +24 -9
  25. package/dist/common/queue.js.map +1 -1
  26. package/dist/config.js +5 -10
  27. package/dist/config.js.map +1 -1
  28. package/dist/constants.js +196 -28
  29. package/dist/constants.js.map +1 -1
  30. package/dist/controls-options-manager/enums.js +14 -2
  31. package/dist/controls-options-manager/enums.js.map +1 -1
  32. package/dist/controls-options-manager/index.js +109 -15
  33. package/dist/controls-options-manager/index.js.map +1 -1
  34. package/dist/controls-options-manager/types.js +7 -0
  35. package/dist/controls-options-manager/types.js.map +1 -0
  36. package/dist/controls-options-manager/util.js +309 -18
  37. package/dist/controls-options-manager/util.js.map +1 -1
  38. package/dist/index.js +112 -1
  39. package/dist/index.js.map +1 -1
  40. package/dist/interpretation/collection.js +23 -0
  41. package/dist/interpretation/collection.js.map +1 -0
  42. package/dist/interpretation/index.js +366 -0
  43. package/dist/interpretation/index.js.map +1 -0
  44. package/dist/interpretation/siLanguage.js +25 -0
  45. package/dist/interpretation/siLanguage.js.map +1 -0
  46. package/dist/locus-info/controlsUtils.js +91 -2
  47. package/dist/locus-info/controlsUtils.js.map +1 -1
  48. package/dist/locus-info/index.js +381 -62
  49. package/dist/locus-info/index.js.map +1 -1
  50. package/dist/locus-info/infoUtils.js +7 -1
  51. package/dist/locus-info/infoUtils.js.map +1 -1
  52. package/dist/locus-info/mediaSharesUtils.js +43 -1
  53. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  54. package/dist/locus-info/parser.js +224 -63
  55. package/dist/locus-info/parser.js.map +1 -1
  56. package/dist/locus-info/selfUtils.js +89 -14
  57. package/dist/locus-info/selfUtils.js.map +1 -1
  58. package/dist/media/index.js +58 -116
  59. package/dist/media/index.js.map +1 -1
  60. package/dist/media/properties.js +60 -121
  61. package/dist/media/properties.js.map +1 -1
  62. package/dist/meeting/in-meeting-actions.js +82 -2
  63. package/dist/meeting/in-meeting-actions.js.map +1 -1
  64. package/dist/meeting/index.js +3022 -2795
  65. package/dist/meeting/index.js.map +1 -1
  66. package/dist/meeting/locusMediaRequest.js +292 -0
  67. package/dist/meeting/locusMediaRequest.js.map +1 -0
  68. package/dist/meeting/muteState.js +230 -124
  69. package/dist/meeting/muteState.js.map +1 -1
  70. package/dist/meeting/request.js +256 -196
  71. package/dist/meeting/request.js.map +1 -1
  72. package/dist/meeting/util.js +601 -417
  73. package/dist/meeting/util.js.map +1 -1
  74. package/dist/meeting-info/index.js +70 -7
  75. package/dist/meeting-info/index.js.map +1 -1
  76. package/dist/meeting-info/meeting-info-v2.js +189 -51
  77. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  78. package/dist/meeting-info/util.js +1 -1
  79. package/dist/meeting-info/util.js.map +1 -1
  80. package/dist/meeting-info/utilv2.js +36 -36
  81. package/dist/meeting-info/utilv2.js.map +1 -1
  82. package/dist/meetings/collection.js +22 -0
  83. package/dist/meetings/collection.js.map +1 -1
  84. package/dist/meetings/index.js +372 -90
  85. package/dist/meetings/index.js.map +1 -1
  86. package/dist/meetings/meetings.types.js +7 -0
  87. package/dist/meetings/meetings.types.js.map +1 -0
  88. package/dist/meetings/request.js +2 -0
  89. package/dist/meetings/request.js.map +1 -1
  90. package/dist/meetings/util.js +88 -1
  91. package/dist/meetings/util.js.map +1 -1
  92. package/dist/member/index.js +49 -0
  93. package/dist/member/index.js.map +1 -1
  94. package/dist/member/types.js +25 -0
  95. package/dist/member/types.js.map +1 -0
  96. package/dist/member/util.js +121 -25
  97. package/dist/member/util.js.map +1 -1
  98. package/dist/members/collection.js +10 -0
  99. package/dist/members/collection.js.map +1 -1
  100. package/dist/members/index.js +86 -5
  101. package/dist/members/index.js.map +1 -1
  102. package/dist/members/request.js +106 -38
  103. package/dist/members/request.js.map +1 -1
  104. package/dist/members/types.js +15 -0
  105. package/dist/members/types.js.map +1 -0
  106. package/dist/members/util.js +316 -233
  107. package/dist/members/util.js.map +1 -1
  108. package/dist/metrics/constants.js +10 -5
  109. package/dist/metrics/constants.js.map +1 -1
  110. package/dist/metrics/index.js +1 -468
  111. package/dist/metrics/index.js.map +1 -1
  112. package/dist/multistream/mediaRequestManager.js +238 -49
  113. package/dist/multistream/mediaRequestManager.js.map +1 -1
  114. package/dist/multistream/receiveSlot.js +49 -16
  115. package/dist/multistream/receiveSlot.js.map +1 -1
  116. package/dist/multistream/receiveSlotManager.js +52 -34
  117. package/dist/multistream/receiveSlotManager.js.map +1 -1
  118. package/dist/multistream/remoteMedia.js +44 -18
  119. package/dist/multistream/remoteMedia.js.map +1 -1
  120. package/dist/multistream/remoteMediaGroup.js +60 -3
  121. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  122. package/dist/multistream/remoteMediaManager.js +209 -59
  123. package/dist/multistream/remoteMediaManager.js.map +1 -1
  124. package/dist/multistream/sendSlotManager.js +233 -0
  125. package/dist/multistream/sendSlotManager.js.map +1 -0
  126. package/dist/reachability/index.js +161 -57
  127. package/dist/reachability/index.js.map +1 -1
  128. package/dist/reachability/request.js +17 -8
  129. package/dist/reachability/request.js.map +1 -1
  130. package/dist/reconnection-manager/index.js +199 -154
  131. package/dist/reconnection-manager/index.js.map +1 -1
  132. package/dist/recording-controller/index.js +21 -2
  133. package/dist/recording-controller/index.js.map +1 -1
  134. package/dist/recording-controller/util.js +9 -8
  135. package/dist/recording-controller/util.js.map +1 -1
  136. package/dist/roap/index.js +23 -29
  137. package/dist/roap/index.js.map +1 -1
  138. package/dist/roap/request.js +112 -97
  139. package/dist/roap/request.js.map +1 -1
  140. package/dist/roap/turnDiscovery.js +96 -36
  141. package/dist/roap/turnDiscovery.js.map +1 -1
  142. package/dist/rtcMetrics/constants.js +12 -0
  143. package/dist/rtcMetrics/constants.js.map +1 -0
  144. package/dist/rtcMetrics/index.js +117 -0
  145. package/dist/rtcMetrics/index.js.map +1 -0
  146. package/dist/statsAnalyzer/index.js +51 -34
  147. package/dist/statsAnalyzer/index.js.map +1 -1
  148. package/dist/statsAnalyzer/mqaUtil.js +6 -6
  149. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  150. package/dist/types/annotation/annotation.types.d.ts +42 -0
  151. package/dist/types/annotation/constants.d.ts +31 -0
  152. package/dist/types/annotation/index.d.ts +117 -0
  153. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  154. package/dist/types/breakouts/events.d.ts +8 -0
  155. package/dist/types/breakouts/request.d.ts +22 -0
  156. package/dist/types/breakouts/utils.d.ts +15 -0
  157. package/dist/types/common/errors/webex-errors.d.ts +13 -1
  158. package/dist/types/common/queue.d.ts +9 -7
  159. package/dist/types/config.d.ts +1 -6
  160. package/dist/types/constants.d.ts +155 -21
  161. package/dist/types/controls-options-manager/enums.d.ts +11 -1
  162. package/dist/types/controls-options-manager/index.d.ts +17 -1
  163. package/dist/types/controls-options-manager/types.d.ts +43 -0
  164. package/dist/types/controls-options-manager/util.d.ts +1 -7
  165. package/dist/types/index.d.ts +6 -4
  166. package/dist/types/interpretation/collection.d.ts +5 -0
  167. package/dist/types/interpretation/index.d.ts +5 -0
  168. package/dist/types/interpretation/siLanguage.d.ts +5 -0
  169. package/dist/types/locus-info/index.d.ts +57 -4
  170. package/dist/types/locus-info/parser.d.ts +65 -6
  171. package/dist/types/media/index.d.ts +2 -0
  172. package/dist/types/media/properties.d.ts +34 -48
  173. package/dist/types/meeting/in-meeting-actions.d.ts +82 -2
  174. package/dist/types/meeting/index.d.ts +344 -506
  175. package/dist/types/meeting/locusMediaRequest.d.ts +74 -0
  176. package/dist/types/meeting/muteState.d.ts +99 -23
  177. package/dist/types/meeting/request.d.ts +72 -43
  178. package/dist/types/meeting/util.d.ts +101 -1
  179. package/dist/types/meeting-info/index.d.ts +13 -1
  180. package/dist/types/meeting-info/meeting-info-v2.d.ts +31 -1
  181. package/dist/types/meetings/collection.d.ts +8 -0
  182. package/dist/types/meetings/index.d.ts +86 -12
  183. package/dist/types/meetings/meetings.types.d.ts +4 -0
  184. package/dist/types/member/index.d.ts +13 -0
  185. package/dist/types/member/types.d.ts +32 -0
  186. package/dist/types/members/collection.d.ts +5 -0
  187. package/dist/types/members/index.d.ts +35 -2
  188. package/dist/types/members/request.d.ts +73 -9
  189. package/dist/types/members/types.d.ts +24 -0
  190. package/dist/types/members/util.d.ts +209 -1
  191. package/dist/types/metrics/constants.d.ts +9 -4
  192. package/dist/types/metrics/index.d.ts +4 -119
  193. package/dist/types/multistream/mediaRequestManager.d.ts +73 -5
  194. package/dist/types/multistream/receiveSlot.d.ts +16 -12
  195. package/dist/types/multistream/receiveSlotManager.d.ts +19 -4
  196. package/dist/types/multistream/remoteMedia.d.ts +8 -29
  197. package/dist/types/multistream/remoteMediaGroup.d.ts +0 -9
  198. package/dist/types/multistream/remoteMediaManager.d.ts +46 -2
  199. package/dist/types/multistream/sendSlotManager.d.ts +61 -0
  200. package/dist/types/reachability/index.d.ts +44 -7
  201. package/dist/types/reachability/request.d.ts +7 -3
  202. package/dist/types/reconnection-manager/index.d.ts +9 -0
  203. package/dist/types/recording-controller/index.d.ts +15 -1
  204. package/dist/types/recording-controller/util.d.ts +5 -4
  205. package/dist/types/roap/request.d.ts +15 -11
  206. package/dist/types/roap/turnDiscovery.d.ts +18 -1
  207. package/dist/types/rtcMetrics/constants.d.ts +4 -0
  208. package/dist/types/rtcMetrics/index.d.ts +47 -0
  209. package/dist/types/statsAnalyzer/index.d.ts +6 -1
  210. package/package.json +23 -20
  211. package/src/annotation/annotation.types.ts +50 -0
  212. package/src/annotation/constants.ts +36 -0
  213. package/src/annotation/index.ts +328 -0
  214. package/src/breakouts/README.md +44 -14
  215. package/src/breakouts/breakout.ts +87 -9
  216. package/src/breakouts/edit-lock-error.ts +25 -0
  217. package/src/breakouts/events.ts +56 -0
  218. package/src/breakouts/index.ts +710 -10
  219. package/src/breakouts/request.ts +55 -0
  220. package/src/breakouts/utils.ts +57 -0
  221. package/src/common/errors/webex-errors.ts +27 -2
  222. package/src/common/logs/logger-proxy.ts +1 -1
  223. package/src/common/queue.ts +22 -8
  224. package/src/config.ts +4 -9
  225. package/src/constants.ts +178 -18
  226. package/src/controls-options-manager/enums.ts +12 -0
  227. package/src/controls-options-manager/index.ts +116 -21
  228. package/src/controls-options-manager/types.ts +59 -0
  229. package/src/controls-options-manager/util.ts +294 -14
  230. package/src/index.ts +40 -0
  231. package/src/interpretation/README.md +60 -0
  232. package/src/interpretation/collection.ts +19 -0
  233. package/src/interpretation/index.ts +332 -0
  234. package/src/interpretation/siLanguage.ts +18 -0
  235. package/src/locus-info/controlsUtils.ts +108 -0
  236. package/src/locus-info/index.ts +412 -59
  237. package/src/locus-info/infoUtils.ts +10 -2
  238. package/src/locus-info/mediaSharesUtils.ts +48 -0
  239. package/src/locus-info/parser.ts +231 -39
  240. package/src/locus-info/selfUtils.ts +81 -5
  241. package/src/media/index.ts +100 -122
  242. package/src/media/properties.ts +70 -108
  243. package/src/meeting/in-meeting-actions.ts +163 -3
  244. package/src/meeting/index.ts +2471 -2306
  245. package/src/meeting/locusMediaRequest.ts +313 -0
  246. package/src/meeting/muteState.ts +229 -131
  247. package/src/meeting/request.ts +172 -121
  248. package/src/meeting/util.ts +588 -394
  249. package/src/meeting-info/index.ts +79 -8
  250. package/src/meeting-info/meeting-info-v2.ts +168 -14
  251. package/src/meeting-info/util.ts +1 -1
  252. package/src/meeting-info/utilv2.ts +23 -23
  253. package/src/meetings/collection.ts +20 -0
  254. package/src/meetings/index.ts +414 -108
  255. package/src/meetings/meetings.types.ts +12 -0
  256. package/src/meetings/request.ts +2 -0
  257. package/src/meetings/util.ts +103 -4
  258. package/src/member/index.ts +49 -0
  259. package/src/member/types.ts +38 -0
  260. package/src/member/util.ts +127 -25
  261. package/src/members/collection.ts +8 -0
  262. package/src/members/index.ts +107 -6
  263. package/src/members/request.ts +97 -17
  264. package/src/members/types.ts +28 -0
  265. package/src/members/util.ts +319 -240
  266. package/src/metrics/constants.ts +9 -4
  267. package/src/metrics/index.ts +1 -490
  268. package/src/multistream/mediaRequestManager.ts +289 -79
  269. package/src/multistream/receiveSlot.ts +55 -18
  270. package/src/multistream/receiveSlotManager.ts +46 -24
  271. package/src/multistream/remoteMedia.ts +27 -2
  272. package/src/multistream/remoteMediaGroup.ts +59 -0
  273. package/src/multistream/remoteMediaManager.ts +148 -30
  274. package/src/multistream/sendSlotManager.ts +170 -0
  275. package/src/reachability/index.ts +165 -37
  276. package/src/reachability/request.ts +17 -8
  277. package/src/reconnection-manager/index.ts +81 -54
  278. package/src/recording-controller/index.ts +20 -3
  279. package/src/recording-controller/util.ts +26 -9
  280. package/src/roap/index.ts +23 -30
  281. package/src/roap/request.ts +100 -104
  282. package/src/roap/turnDiscovery.ts +51 -25
  283. package/src/rtcMetrics/constants.ts +3 -0
  284. package/src/rtcMetrics/index.ts +100 -0
  285. package/src/statsAnalyzer/index.ts +73 -35
  286. package/src/statsAnalyzer/mqaUtil.ts +8 -10
  287. package/test/integration/spec/converged-space-meetings.js +233 -0
  288. package/test/integration/spec/journey.js +320 -261
  289. package/test/integration/spec/space-meeting.js +76 -3
  290. package/test/unit/spec/annotation/index.ts +418 -0
  291. package/test/unit/spec/breakouts/breakout.ts +142 -24
  292. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  293. package/test/unit/spec/breakouts/events.ts +89 -0
  294. package/test/unit/spec/breakouts/index.ts +1545 -48
  295. package/test/unit/spec/breakouts/request.ts +104 -0
  296. package/test/unit/spec/breakouts/utils.js +72 -0
  297. package/test/unit/spec/common/queue.js +31 -2
  298. package/test/unit/spec/controls-options-manager/index.js +163 -0
  299. package/test/unit/spec/controls-options-manager/util.js +576 -60
  300. package/test/unit/spec/fixture/locus.js +1 -0
  301. package/test/unit/spec/interpretation/collection.ts +15 -0
  302. package/test/unit/spec/interpretation/index.ts +589 -0
  303. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  304. package/test/unit/spec/locus-info/controlsUtils.js +316 -43
  305. package/test/unit/spec/locus-info/index.js +1283 -33
  306. package/test/unit/spec/locus-info/infoUtils.js +37 -15
  307. package/test/unit/spec/locus-info/mediaSharesUtils.ts +22 -0
  308. package/test/unit/spec/locus-info/parser.js +62 -22
  309. package/test/unit/spec/locus-info/selfConstant.js +27 -4
  310. package/test/unit/spec/locus-info/selfUtils.js +208 -17
  311. package/test/unit/spec/media/index.ts +104 -37
  312. package/test/unit/spec/meeting/in-meeting-actions.ts +81 -3
  313. package/test/unit/spec/meeting/index.js +4095 -1913
  314. package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
  315. package/test/unit/spec/meeting/muteState.js +408 -208
  316. package/test/unit/spec/meeting/request.js +440 -45
  317. package/test/unit/spec/meeting/utils.js +679 -64
  318. package/test/unit/spec/meeting-info/index.js +293 -0
  319. package/test/unit/spec/meeting-info/meetinginfov2.js +517 -5
  320. package/test/unit/spec/meeting-info/utilv2.js +21 -0
  321. package/test/unit/spec/meetings/collection.js +14 -0
  322. package/test/unit/spec/meetings/index.js +941 -151
  323. package/test/unit/spec/meetings/utils.js +206 -2
  324. package/test/unit/spec/member/index.js +58 -4
  325. package/test/unit/spec/member/util.js +479 -35
  326. package/test/unit/spec/members/index.js +319 -1
  327. package/test/unit/spec/members/request.js +206 -27
  328. package/test/unit/spec/members/utils.js +184 -0
  329. package/test/unit/spec/metrics/index.js +1 -50
  330. package/test/unit/spec/multistream/mediaRequestManager.ts +803 -162
  331. package/test/unit/spec/multistream/receiveSlot.ts +72 -13
  332. package/test/unit/spec/multistream/receiveSlotManager.ts +58 -28
  333. package/test/unit/spec/multistream/remoteMedia.ts +30 -0
  334. package/test/unit/spec/multistream/remoteMediaGroup.ts +266 -0
  335. package/test/unit/spec/multistream/remoteMediaManager.ts +326 -0
  336. package/test/unit/spec/multistream/sendSlotManager.ts +242 -0
  337. package/test/unit/spec/reachability/index.ts +343 -9
  338. package/test/unit/spec/reachability/request.js +68 -0
  339. package/test/unit/spec/reconnection-manager/index.js +84 -9
  340. package/test/unit/spec/recording-controller/index.js +294 -218
  341. package/test/unit/spec/recording-controller/util.js +223 -96
  342. package/test/unit/spec/roap/index.ts +31 -51
  343. package/test/unit/spec/roap/request.ts +203 -85
  344. package/test/unit/spec/roap/turnDiscovery.ts +48 -13
  345. package/test/unit/spec/rtcMetrics/index.ts +68 -0
  346. package/test/unit/spec/stats-analyzer/index.js +29 -2
  347. package/test/utils/constants.js +9 -0
  348. package/test/utils/integrationTestUtils.js +46 -0
  349. package/test/utils/testUtils.js +0 -45
  350. package/test/utils/webex-config.js +4 -0
  351. package/test/utils/webex-test-users.js +6 -3
  352. package/dist/meeting/effectsState.js +0 -262
  353. package/dist/meeting/effectsState.js.map +0 -1
  354. package/dist/metrics/config.js +0 -299
  355. package/dist/metrics/config.js.map +0 -1
  356. package/dist/types/meeting/effectsState.d.ts +0 -42
  357. package/dist/types/metrics/config.d.ts +0 -178
  358. package/src/index.js +0 -16
  359. package/src/meeting/effectsState.ts +0 -211
  360. package/src/metrics/config.ts +0 -495
  361. package/test/unit/spec/meeting/effectsState.js +0 -285
@@ -16,6 +16,7 @@ import MembersRequest from './request';
16
16
  import MembersUtil from './util';
17
17
  import {ReceiveSlotManager} from '../multistream/receiveSlotManager';
18
18
  import {MediaRequestManager} from '../multistream/mediaRequestManager';
19
+ import {ServerRoleShape} from './types';
19
20
 
20
21
  /**
21
22
  * Members Update Event
@@ -96,8 +97,14 @@ export default class Members extends StatelessWebexPlugin {
96
97
  * @private
97
98
  * @memberof Members
98
99
  */
100
+
99
101
  // @ts-ignore
100
- this.membersRequest = new MembersRequest({}, options);
102
+ this.membersRequest = new MembersRequest(
103
+ {
104
+ meeting: attrs.meeting,
105
+ },
106
+ options
107
+ );
101
108
  /**
102
109
  * The Members Collection cache
103
110
  * @instance
@@ -282,6 +289,25 @@ export default class Members extends StatelessWebexPlugin {
282
289
  );
283
290
  }
284
291
 
292
+ /**
293
+ * clear member collection
294
+ * @returns {void}
295
+ * @private
296
+ * @memberof Members
297
+ */
298
+ clearMembers() {
299
+ this.membersCollection.reset();
300
+ Trigger.trigger(
301
+ this,
302
+ {
303
+ file: 'members',
304
+ function: 'clearMembers',
305
+ },
306
+ EVENT_TRIGGERS.MEMBERS_CLEAR,
307
+ {}
308
+ );
309
+ }
310
+
285
311
  /**
286
312
  * when new participant updates come in, both delta and full participants, update them in members collection
287
313
  * delta object in the event will have {updated, added} and full will be the full membersCollection
@@ -291,11 +317,16 @@ export default class Members extends StatelessWebexPlugin {
291
317
  * @private
292
318
  * @memberof Members
293
319
  */
294
- locusParticipantsUpdate(payload: {participants: object}) {
320
+ locusParticipantsUpdate(payload: {participants: object; isReplace?: boolean}) {
295
321
  if (payload) {
322
+ if (payload.isReplace) {
323
+ this.clearMembers();
324
+ }
296
325
  const delta = this.handleLocusInfoUpdatedParticipants(payload);
297
326
  const full = this.handleMembersUpdate(delta); // SDK should propagate the full list for both delta and non delta updates
298
327
 
328
+ this.receiveSlotManager?.updateMemberIds();
329
+
299
330
  Trigger.trigger(
300
331
  this,
301
332
  {
@@ -306,6 +337,7 @@ export default class Members extends StatelessWebexPlugin {
306
337
  {
307
338
  delta,
308
339
  full,
340
+ isReplace: !!payload.isReplace,
309
341
  }
310
342
  );
311
343
  }
@@ -731,15 +763,22 @@ export default class Members extends StatelessWebexPlugin {
731
763
  /**
732
764
  * Admits waiting members (invited guests to meeting)
733
765
  * @param {Array} memberIds
766
+ * @param {Object} sessionLocusUrls: {authorizingLocusUrl, mainLocusUrl}
734
767
  * @returns {Promise}
735
768
  * @public
736
769
  * @memberof Members
737
770
  */
738
- public admitMembers(memberIds: Array<any>) {
771
+ public admitMembers(
772
+ memberIds: Array<any>,
773
+ sessionLocusUrls?: {authorizingLocusUrl: string; mainLocusUrl: string}
774
+ ) {
739
775
  if (isEmpty(memberIds)) {
740
776
  return Promise.reject(new ParameterError('No member ids provided to admit.'));
741
777
  }
742
- const options = MembersUtil.generateAdmitMemberOptions(memberIds, this.locusUrl);
778
+ const options = {
779
+ sessionLocusUrls,
780
+ ...MembersUtil.generateAdmitMemberOptions(memberIds, this.locusUrl),
781
+ };
743
782
 
744
783
  return this.membersRequest.admitMember(options);
745
784
  }
@@ -771,11 +810,12 @@ export default class Members extends StatelessWebexPlugin {
771
810
  * Audio mutes another member in a meeting
772
811
  * @param {String} memberId
773
812
  * @param {boolean} [mute] default true
813
+ * @param {boolean} [isAudio] default true
774
814
  * @returns {Promise}
775
815
  * @public
776
816
  * @memberof Members
777
817
  */
778
- public muteMember(memberId: string, mute = true) {
818
+ public muteMember(memberId: string, mute = true, isAudio = true) {
779
819
  if (!this.locusUrl) {
780
820
  return Promise.reject(
781
821
  new ParameterError(
@@ -788,11 +828,37 @@ export default class Members extends StatelessWebexPlugin {
788
828
  new ParameterError('The member id must be defined to mute the member.')
789
829
  );
790
830
  }
791
- const options = MembersUtil.generateMuteMemberOptions(memberId, mute, this.locusUrl);
831
+ const options = MembersUtil.generateMuteMemberOptions(memberId, mute, this.locusUrl, isAudio);
792
832
 
793
833
  return this.membersRequest.muteMember(options);
794
834
  }
795
835
 
836
+ /**
837
+ * Assign role(s) to a member in the meeting
838
+ * @param {String} memberId
839
+ * @param {[ServerRoleShape]} roles - to assign an array of roles
840
+ * @returns {Promise}
841
+ * @public
842
+ * @memberof Members
843
+ */
844
+ public assignRoles(memberId: string, roles: Array<ServerRoleShape>) {
845
+ if (!this.locusUrl) {
846
+ return Promise.reject(
847
+ new ParameterError(
848
+ 'The associated locus url for this meetings members object must be defined.'
849
+ )
850
+ );
851
+ }
852
+ if (!memberId) {
853
+ return Promise.reject(
854
+ new ParameterError('The member id must be defined to assign the roles to a member.')
855
+ );
856
+ }
857
+ const options = MembersUtil.generateRoleAssignmentMemberOptions(memberId, roles, this.locusUrl);
858
+
859
+ return this.membersRequest.assignRolesMember(options);
860
+ }
861
+
796
862
  /**
797
863
  * Raise or lower the hand of a member in a meeting
798
864
  * @param {String} memberId
@@ -958,4 +1024,39 @@ export default class Members extends StatelessWebexPlugin {
958
1024
 
959
1025
  return csis;
960
1026
  }
1027
+
1028
+ /**
1029
+ * Edit display name of participants in a meeting
1030
+ * @param {string} memberId - id of the participant who is receiving request
1031
+ * @param {string} requestingParticipantId - id of the participant who is sending request (optional)
1032
+ * @param {string} [alias] - alias name
1033
+ * @returns {Promise}
1034
+ * @public
1035
+ * @memberof Members
1036
+ */
1037
+ public editDisplayName(memberId: string, requestingParticipantId: string, alias: string) {
1038
+ if (!this.locusUrl) {
1039
+ return Promise.reject(
1040
+ new ParameterError(
1041
+ 'The associated locus url for this meetings members object must be defined.'
1042
+ )
1043
+ );
1044
+ }
1045
+ if (!memberId) {
1046
+ return Promise.reject(
1047
+ new ParameterError('The member id must be defined to edit display name of the member.')
1048
+ );
1049
+ }
1050
+
1051
+ const {locusUrl} = this;
1052
+
1053
+ const options = MembersUtil.generateEditDisplayNameMemberOptions(
1054
+ memberId,
1055
+ requestingParticipantId,
1056
+ alias,
1057
+ locusUrl
1058
+ );
1059
+
1060
+ return this.membersRequest.editDisplayNameMember(options);
1061
+ }
961
1062
  }
@@ -5,12 +5,26 @@ import {MEETINGS} from '../constants';
5
5
  import ParameterError from '../common/errors/parameter';
6
6
 
7
7
  import MembersUtil from './util';
8
+ import MeetingUtil from '../meeting/util';
8
9
 
9
10
  /**
10
11
  * @class MembersRequest
11
12
  */
12
13
  export default class MembersRequest extends StatelessWebexPlugin {
13
14
  namespace = MEETINGS;
15
+ locusDeltaRequest: (options: object) => Promise<any>;
16
+
17
+ /**
18
+ * Constructor
19
+ * @param {Object} attrs
20
+ * @param {Object} options
21
+ */
22
+ constructor(attrs: {meeting: any}, options: object) {
23
+ const {meeting, ...otherAttrs} = attrs;
24
+ super(otherAttrs, options);
25
+
26
+ this.locusDeltaRequest = MeetingUtil.generateLocusDeltaRequest(meeting);
27
+ }
14
28
 
15
29
  /**
16
30
  *
@@ -36,8 +50,7 @@ export default class MembersRequest extends StatelessWebexPlugin {
36
50
  }
37
51
  const requestParams = MembersUtil.getAddMemberRequestParams(options);
38
52
 
39
- // @ts-ignore
40
- return this.request(requestParams);
53
+ return this.locusDeltaRequest(requestParams);
41
54
  }
42
55
 
43
56
  /**
@@ -55,10 +68,16 @@ export default class MembersRequest extends StatelessWebexPlugin {
55
68
  }
56
69
  const requestParams = MembersUtil.getAdmitMemberRequestParams(options);
57
70
 
58
- // @ts-ignore
59
- return this.request(requestParams);
71
+ return this.locusDeltaRequest(requestParams);
60
72
  }
61
73
 
74
+ /**
75
+ * Sends a request to remove a member
76
+ * @param {Object} options
77
+ * @param {String} options.locusUrl
78
+ * @param {String} options.memberId ID of member
79
+ * @returns {Promise}
80
+ */
62
81
  removeMember(options) {
63
82
  if (!options || !options.locusUrl || !options.memberId) {
64
83
  throw new ParameterError(
@@ -68,10 +87,16 @@ export default class MembersRequest extends StatelessWebexPlugin {
68
87
 
69
88
  const requestParams = MembersUtil.getRemoveMemberRequestParams(options);
70
89
 
71
- // @ts-ignore
72
- return this.request(requestParams);
90
+ return this.locusDeltaRequest(requestParams);
73
91
  }
74
92
 
93
+ /**
94
+ * Sends a request to mute a member
95
+ * @param {Object} options
96
+ * @param {String} options.locusUrl
97
+ * @param {String} options.memberId ID of member
98
+ * @returns {Promise}
99
+ */
75
100
  muteMember(options) {
76
101
  if (!options || !options.locusUrl || !options.memberId) {
77
102
  throw new ParameterError(
@@ -82,9 +107,35 @@ export default class MembersRequest extends StatelessWebexPlugin {
82
107
  const requestParams = MembersUtil.getMuteMemberRequestParams(options);
83
108
 
84
109
  // @ts-ignore
85
- return this.request(requestParams);
110
+ return this.locusDeltaRequest(requestParams);
111
+ }
112
+
113
+ /**
114
+ * Sends a request to the DTMF endpoint to send tones
115
+ * @param {Object} options
116
+ * @param {String} options.locusUrl
117
+ * @param {String} options.memberId ID of PSTN user
118
+ * @returns {Promise}
119
+ */
120
+ assignRolesMember(options: any) {
121
+ if (!options || !options.locusUrl || !options.memberId) {
122
+ throw new ParameterError(
123
+ 'memberId must be defined, and the associated locus url for this meeting object must be defined.'
124
+ );
125
+ }
126
+
127
+ const requestParams = MembersUtil.getRoleAssignmentMemberRequestParams(options);
128
+
129
+ return this.locusDeltaRequest(requestParams);
86
130
  }
87
131
 
132
+ /**
133
+ * Sends a request to raise or lower a member's hand
134
+ * @param {Object} options
135
+ * @param {String} options.locusUrl
136
+ * @param {String} options.memberId ID of member
137
+ * @returns {Promise}
138
+ */
88
139
  raiseOrLowerHandMember(options) {
89
140
  if (!options || !options.locusUrl || !options.memberId) {
90
141
  throw new ParameterError(
@@ -94,10 +145,16 @@ export default class MembersRequest extends StatelessWebexPlugin {
94
145
 
95
146
  const requestParams = MembersUtil.getRaiseHandMemberRequestParams(options);
96
147
 
97
- // @ts-ignore
98
- return this.request(requestParams);
148
+ return this.locusDeltaRequest(requestParams);
99
149
  }
100
150
 
151
+ /**
152
+ * Sends a request to lower all hands
153
+ * @param {Object} options
154
+ * @param {String} options.locusUrl
155
+ * @param {String} options.requestingParticipantId ID of requesting participant
156
+ * @returns {Promise}
157
+ */
101
158
  lowerAllHandsMember(options) {
102
159
  if (!options || !options.locusUrl || !options.requestingParticipantId) {
103
160
  throw new ParameterError(
@@ -107,10 +164,36 @@ export default class MembersRequest extends StatelessWebexPlugin {
107
164
 
108
165
  const requestParams = MembersUtil.getLowerAllHandsMemberRequestParams(options);
109
166
 
110
- // @ts-ignore
111
- return this.request(requestParams);
167
+ return this.locusDeltaRequest(requestParams);
168
+ }
169
+
170
+ /**
171
+ *
172
+ * @param {Object} options with format of {locusUrl: string, requestingParticipantId: string}
173
+ * @returns {Promise}
174
+ * @throws {Error} if the options are not valid and complete, must have requestingParticipantId AND locusUrl
175
+ * @memberof MembersRequest
176
+ */
177
+ editDisplayNameMember(options: {locusUrl: string; requestingParticipantId: string}) {
178
+ if (!options || !options.locusUrl || !options.requestingParticipantId) {
179
+ throw new ParameterError(
180
+ 'requestingParticipantId must be defined, and the associated locus url for this meeting object must be defined.'
181
+ );
182
+ }
183
+
184
+ const requestParams = MembersUtil.editDisplayNameMemberRequestParams(options);
185
+
186
+ return this.locusDeltaRequest(requestParams);
112
187
  }
113
188
 
189
+ /**
190
+ * Sends a request to raise or lower a member's hand
191
+ * @param {Object} options
192
+ * @param {String} options.locusUrl
193
+ * @param {String} options.memberId ID of member
194
+ * @param {String} options.moderator ID of moderator
195
+ * @returns {Promise}
196
+ */
114
197
  transferHostToMember(options) {
115
198
  if (!options || !options.locusUrl || !options.memberId || !options.moderator) {
116
199
  throw new ParameterError(
@@ -120,8 +203,7 @@ export default class MembersRequest extends StatelessWebexPlugin {
120
203
 
121
204
  const requestParams = MembersUtil.getTransferHostToMemberRequestParams(options);
122
205
 
123
- // @ts-ignore
124
- return this.request(requestParams);
206
+ return this.locusDeltaRequest(requestParams);
125
207
  }
126
208
 
127
209
  /**
@@ -150,8 +232,7 @@ export default class MembersRequest extends StatelessWebexPlugin {
150
232
 
151
233
  const requestParams = MembersUtil.generateSendDTMFRequestParams(options);
152
234
 
153
- // @ts-ignore
154
- return this.request(requestParams);
235
+ return this.locusDeltaRequest(requestParams);
155
236
  }
156
237
 
157
238
  /**
@@ -169,7 +250,6 @@ export default class MembersRequest extends StatelessWebexPlugin {
169
250
 
170
251
  const requestParams = MembersUtil.generateCancelInviteRequestParams(options);
171
252
 
172
- // @ts-ignore
173
- return this.request(requestParams);
253
+ return this.locusDeltaRequest(requestParams);
174
254
  }
175
255
  }
@@ -0,0 +1,28 @@
1
+ export enum ServerRoles {
2
+ Cohost = 'COHOST',
3
+ Moderator = 'MODERATOR',
4
+ Presenter = 'PRESENTER',
5
+ }
6
+
7
+ export type ServerRoleShape = {
8
+ type: ServerRoles;
9
+ hasRole: boolean;
10
+ };
11
+
12
+ export type RoleAssignmentOptions = {
13
+ roles: Array<ServerRoleShape>;
14
+ locusUrl: string;
15
+ memberId: string;
16
+ };
17
+
18
+ export type RoleAssignmentBody = {
19
+ role: {
20
+ roles: Array<ServerRoleShape>;
21
+ };
22
+ };
23
+
24
+ export type RoleAssignmentRequest = {
25
+ method: string;
26
+ uri: string;
27
+ body: RoleAssignmentBody;
28
+ };