@webex/plugin-meetings 3.0.0-beta.15 → 3.0.0-beta.151
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.
- package/README.md +45 -1
- package/dist/annotation/annotation.types.js +7 -0
- package/dist/annotation/annotation.types.js.map +1 -0
- package/dist/annotation/constants.js +49 -0
- package/dist/annotation/constants.js.map +1 -0
- package/dist/annotation/index.js +359 -0
- package/dist/annotation/index.js.map +1 -0
- package/dist/breakouts/breakout.js +193 -0
- package/dist/breakouts/breakout.js.map +1 -0
- package/dist/breakouts/collection.js +23 -0
- package/dist/breakouts/collection.js.map +1 -0
- package/dist/breakouts/edit-lock-error.js +52 -0
- package/dist/breakouts/edit-lock-error.js.map +1 -0
- package/dist/breakouts/events.js +43 -0
- package/dist/breakouts/events.js.map +1 -0
- package/dist/breakouts/index.js +1046 -0
- package/dist/breakouts/index.js.map +1 -0
- package/dist/breakouts/request.js +78 -0
- package/dist/breakouts/request.js.map +1 -0
- package/dist/breakouts/utils.js +67 -0
- package/dist/breakouts/utils.js.map +1 -0
- package/dist/common/browser-detection.js +1 -21
- package/dist/common/browser-detection.js.map +1 -1
- package/dist/common/collection.js +5 -20
- package/dist/common/collection.js.map +1 -1
- package/dist/common/config.js +0 -7
- package/dist/common/config.js.map +1 -1
- package/dist/common/errors/captcha-error.js +0 -21
- package/dist/common/errors/captcha-error.js.map +1 -1
- package/dist/common/errors/intent-to-join.js +0 -21
- package/dist/common/errors/intent-to-join.js.map +1 -1
- package/dist/common/errors/join-meeting.js +0 -21
- package/dist/common/errors/join-meeting.js.map +1 -1
- package/dist/common/errors/media.js +0 -21
- package/dist/common/errors/media.js.map +1 -1
- package/dist/common/errors/parameter.js +0 -28
- package/dist/common/errors/parameter.js.map +1 -1
- package/dist/common/errors/password-error.js +0 -21
- package/dist/common/errors/password-error.js.map +1 -1
- package/dist/common/errors/permission.js +0 -21
- package/dist/common/errors/permission.js.map +1 -1
- package/dist/common/errors/reconnection-in-progress.js +0 -17
- package/dist/common/errors/reconnection-in-progress.js.map +1 -1
- package/dist/common/errors/reconnection.js +0 -21
- package/dist/common/errors/reconnection.js.map +1 -1
- package/dist/common/errors/stats.js +0 -21
- package/dist/common/errors/stats.js.map +1 -1
- package/dist/common/errors/webex-errors.js +9 -43
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/common/errors/webex-meetings-error.js +1 -24
- package/dist/common/errors/webex-meetings-error.js.map +1 -1
- package/dist/common/events/events-scope.js +0 -22
- package/dist/common/events/events-scope.js.map +1 -1
- package/dist/common/events/events.js +0 -23
- package/dist/common/events/events.js.map +1 -1
- package/dist/common/events/trigger-proxy.js +0 -12
- package/dist/common/events/trigger-proxy.js.map +1 -1
- package/dist/common/events/util.js +0 -15
- package/dist/common/events/util.js.map +1 -1
- package/dist/common/logs/logger-config.js +0 -4
- package/dist/common/logs/logger-config.js.map +1 -1
- package/dist/common/logs/logger-proxy.js +1 -8
- package/dist/common/logs/logger-proxy.js.map +1 -1
- package/dist/common/logs/request.js +35 -61
- package/dist/common/logs/request.js.map +1 -1
- package/dist/common/queue.js +4 -14
- package/dist/common/queue.js.map +1 -1
- package/dist/config.js +7 -13
- package/dist/config.js.map +1 -1
- package/dist/constants.js +208 -64
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/constants.js +14 -0
- package/dist/controls-options-manager/constants.js.map +1 -0
- package/dist/controls-options-manager/enums.js +27 -0
- package/dist/controls-options-manager/enums.js.map +1 -0
- package/dist/controls-options-manager/index.js +297 -0
- package/dist/controls-options-manager/index.js.map +1 -0
- package/dist/controls-options-manager/types.js +7 -0
- package/dist/controls-options-manager/types.js.map +1 -0
- package/dist/controls-options-manager/util.js +300 -0
- package/dist/controls-options-manager/util.js.map +1 -0
- package/dist/index.js +78 -17
- package/dist/index.js.map +1 -1
- package/dist/locus-info/controlsUtils.js +100 -29
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/embeddedAppsUtils.js +3 -26
- package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
- package/dist/locus-info/fullState.js +0 -15
- package/dist/locus-info/fullState.js.map +1 -1
- package/dist/locus-info/hostUtils.js +4 -12
- package/dist/locus-info/hostUtils.js.map +1 -1
- package/dist/locus-info/index.js +387 -208
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js +0 -38
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js +54 -38
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.js +90 -126
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js +93 -92
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js +70 -219
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +74 -198
- package/dist/media/properties.js.map +1 -1
- package/dist/media/util.js +1 -8
- package/dist/media/util.js.map +1 -1
- package/dist/mediaQualityMetrics/config.js +505 -495
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +79 -14
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +2685 -3324
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/locusMediaRequest.js +291 -0
- package/dist/meeting/locusMediaRequest.js.map +1 -0
- package/dist/meeting/muteState.js +243 -185
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +296 -342
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/request.type.js +0 -1
- package/dist/meeting/request.type.js.map +1 -1
- package/dist/meeting/state.js +16 -26
- package/dist/meeting/state.js.map +1 -1
- package/dist/meeting/util.js +446 -585
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/collection.js +3 -25
- package/dist/meeting-info/collection.js.map +1 -1
- package/dist/meeting-info/index.js +8 -31
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +261 -242
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/request.js +1 -16
- package/dist/meeting-info/request.js.map +1 -1
- package/dist/meeting-info/util.js +98 -183
- package/dist/meeting-info/util.js.map +1 -1
- package/dist/meeting-info/utilv2.js +156 -232
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.js +24 -20
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.js +526 -372
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/meetings.types.js +7 -0
- package/dist/meetings/meetings.types.js.map +1 -0
- package/dist/meetings/request.js +21 -40
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +172 -141
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +58 -57
- package/dist/member/index.js.map +1 -1
- package/dist/member/types.js +15 -0
- package/dist/member/types.js.map +1 -0
- package/dist/member/util.js +101 -69
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.js +12 -12
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +123 -162
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +120 -85
- package/dist/members/request.js.map +1 -1
- package/dist/members/types.js +15 -0
- package/dist/members/types.js.map +1 -0
- package/dist/members/util.js +314 -260
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/config.js +50 -16
- package/dist/metrics/config.js.map +1 -1
- package/dist/metrics/constants.js +4 -7
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.js +75 -147
- package/dist/metrics/index.js.map +1 -1
- package/dist/multistream/mediaRequestManager.js +170 -50
- package/dist/multistream/mediaRequestManager.js.map +1 -1
- package/dist/multistream/receiveSlot.js +58 -65
- package/dist/multistream/receiveSlot.js.map +1 -1
- package/dist/multistream/receiveSlotManager.js +73 -94
- package/dist/multistream/receiveSlotManager.js.map +1 -1
- package/dist/multistream/remoteMedia.js +55 -74
- package/dist/multistream/remoteMedia.js.map +1 -1
- package/dist/multistream/remoteMediaGroup.js +66 -43
- package/dist/multistream/remoteMediaGroup.js.map +1 -1
- package/dist/multistream/remoteMediaManager.js +502 -442
- package/dist/multistream/remoteMediaManager.js.map +1 -1
- package/dist/networkQualityMonitor/index.js +24 -51
- package/dist/networkQualityMonitor/index.js.map +1 -1
- package/dist/personal-meeting-room/index.js +3 -38
- package/dist/personal-meeting-room/index.js.map +1 -1
- package/dist/personal-meeting-room/request.js +2 -33
- package/dist/personal-meeting-room/request.js.map +1 -1
- package/dist/personal-meeting-room/util.js +0 -13
- package/dist/personal-meeting-room/util.js.map +1 -1
- package/dist/reachability/index.js +190 -199
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.js +14 -23
- package/dist/reachability/request.js.map +1 -1
- package/dist/reactions/constants.js +13 -0
- package/dist/reactions/constants.js.map +1 -0
- package/dist/reactions/reactions.js +2 -4
- package/dist/reactions/reactions.js.map +1 -1
- package/dist/reactions/reactions.type.js +18 -24
- package/dist/reactions/reactions.type.js.map +1 -1
- package/dist/reconnection-manager/index.js +356 -476
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/recording-controller/enums.js +17 -0
- package/dist/recording-controller/enums.js.map +1 -0
- package/dist/recording-controller/index.js +343 -0
- package/dist/recording-controller/index.js.map +1 -0
- package/dist/recording-controller/util.js +63 -0
- package/dist/recording-controller/util.js.map +1 -0
- package/dist/roap/index.js +32 -75
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +129 -136
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/turnDiscovery.js +143 -103
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/statsAnalyzer/global.js +1 -95
- package/dist/statsAnalyzer/global.js.map +1 -1
- package/dist/statsAnalyzer/index.js +369 -462
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js +144 -94
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/transcription/index.js +9 -44
- package/dist/transcription/index.js.map +1 -1
- package/dist/types/annotation/annotation.types.d.ts +43 -0
- package/dist/types/annotation/constants.d.ts +31 -0
- package/dist/types/annotation/index.d.ts +124 -0
- package/dist/types/breakouts/breakout.d.ts +8 -0
- package/dist/types/breakouts/collection.d.ts +5 -0
- package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
- package/dist/types/breakouts/events.d.ts +2 -0
- package/dist/types/breakouts/index.d.ts +5 -0
- package/dist/types/breakouts/request.d.ts +22 -0
- package/dist/types/breakouts/utils.d.ts +15 -0
- package/dist/types/common/browser-detection.d.ts +9 -0
- package/dist/types/common/collection.d.ts +48 -0
- package/dist/types/common/config.d.ts +2 -0
- package/dist/types/common/errors/captcha-error.d.ts +15 -0
- package/dist/types/common/errors/intent-to-join.d.ts +16 -0
- package/dist/types/common/errors/join-meeting.d.ts +17 -0
- package/dist/types/common/errors/media.d.ts +15 -0
- package/dist/types/common/errors/parameter.d.ts +15 -0
- package/dist/types/common/errors/password-error.d.ts +15 -0
- package/dist/types/common/errors/permission.d.ts +14 -0
- package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
- package/dist/types/common/errors/reconnection.d.ts +15 -0
- package/dist/types/common/errors/stats.d.ts +15 -0
- package/dist/types/common/errors/webex-errors.d.ts +69 -0
- package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
- package/dist/types/common/events/events-scope.d.ts +17 -0
- package/dist/types/common/events/events.d.ts +12 -0
- package/dist/types/common/events/trigger-proxy.d.ts +2 -0
- package/dist/types/common/events/util.d.ts +2 -0
- package/dist/types/common/logs/logger-config.d.ts +2 -0
- package/dist/types/common/logs/logger-proxy.d.ts +2 -0
- package/dist/types/common/logs/request.d.ts +34 -0
- package/dist/types/common/queue.d.ts +32 -0
- package/dist/types/config.d.ts +72 -0
- package/dist/types/constants.d.ts +978 -0
- package/dist/types/controls-options-manager/constants.d.ts +4 -0
- package/dist/types/controls-options-manager/enums.d.ts +15 -0
- package/dist/types/controls-options-manager/index.d.ts +136 -0
- package/dist/types/controls-options-manager/types.d.ts +43 -0
- package/dist/types/controls-options-manager/util.d.ts +1 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/locus-info/controlsUtils.d.ts +2 -0
- package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
- package/dist/types/locus-info/fullState.d.ts +2 -0
- package/dist/types/locus-info/hostUtils.d.ts +2 -0
- package/dist/types/locus-info/index.d.ts +315 -0
- package/dist/types/locus-info/infoUtils.d.ts +2 -0
- package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
- package/dist/types/locus-info/parser.d.ts +212 -0
- package/dist/types/locus-info/selfUtils.d.ts +2 -0
- package/dist/types/media/index.d.ts +34 -0
- package/dist/types/media/properties.d.ts +86 -0
- package/dist/types/media/util.d.ts +2 -0
- package/dist/types/mediaQualityMetrics/config.d.ts +365 -0
- package/dist/types/meeting/in-meeting-actions.d.ts +149 -0
- package/dist/types/meeting/index.d.ts +1509 -0
- package/dist/types/meeting/locusMediaRequest.d.ts +70 -0
- package/dist/types/meeting/muteState.d.ts +184 -0
- package/dist/types/meeting/request.d.ts +270 -0
- package/dist/types/meeting/request.type.d.ts +11 -0
- package/dist/types/meeting/state.d.ts +9 -0
- package/dist/types/meeting/util.d.ts +75 -0
- package/dist/types/meeting-info/collection.d.ts +20 -0
- package/dist/types/meeting-info/index.d.ts +57 -0
- package/dist/types/meeting-info/meeting-info-v2.d.ts +122 -0
- package/dist/types/meeting-info/request.d.ts +22 -0
- package/dist/types/meeting-info/util.d.ts +2 -0
- package/dist/types/meeting-info/utilv2.d.ts +2 -0
- package/dist/types/meetings/collection.d.ts +31 -0
- package/dist/types/meetings/index.d.ts +364 -0
- package/dist/types/meetings/meetings.types.d.ts +4 -0
- package/dist/types/meetings/request.d.ts +27 -0
- package/dist/types/meetings/util.d.ts +18 -0
- package/dist/types/member/index.d.ts +157 -0
- package/dist/types/member/types.d.ts +21 -0
- package/dist/types/member/util.d.ts +2 -0
- package/dist/types/members/collection.d.ts +29 -0
- package/dist/types/members/index.d.ts +353 -0
- package/dist/types/members/request.d.ts +114 -0
- package/dist/types/members/types.d.ts +24 -0
- package/dist/types/members/util.d.ts +210 -0
- package/dist/types/metrics/config.d.ts +195 -0
- package/dist/types/metrics/constants.d.ts +55 -0
- package/dist/types/metrics/index.d.ts +169 -0
- package/dist/types/multistream/mediaRequestManager.d.ts +104 -0
- package/dist/types/multistream/receiveSlot.d.ts +68 -0
- package/dist/types/multistream/receiveSlotManager.d.ts +56 -0
- package/dist/types/multistream/remoteMedia.d.ts +72 -0
- package/dist/types/multistream/remoteMediaGroup.d.ts +47 -0
- package/dist/types/multistream/remoteMediaManager.d.ts +277 -0
- package/dist/types/networkQualityMonitor/index.d.ts +70 -0
- package/dist/types/personal-meeting-room/index.d.ts +47 -0
- package/dist/types/personal-meeting-room/request.d.ts +14 -0
- package/dist/types/personal-meeting-room/util.d.ts +2 -0
- package/dist/types/reachability/index.d.ts +152 -0
- package/dist/types/reachability/request.d.ts +37 -0
- package/dist/types/reactions/constants.d.ts +3 -0
- package/dist/types/reactions/reactions.d.ts +4 -0
- package/dist/types/reactions/reactions.type.d.ts +52 -0
- package/dist/types/reconnection-manager/index.d.ts +126 -0
- package/dist/types/recording-controller/enums.d.ts +7 -0
- package/dist/types/recording-controller/index.d.ts +193 -0
- package/dist/types/recording-controller/util.d.ts +13 -0
- package/dist/types/roap/index.d.ts +77 -0
- package/dist/types/roap/request.d.ts +36 -0
- package/dist/types/roap/turnDiscovery.d.ts +91 -0
- package/dist/types/statsAnalyzer/global.d.ts +36 -0
- package/dist/types/statsAnalyzer/index.d.ts +200 -0
- package/dist/types/statsAnalyzer/mqaUtil.d.ts +24 -0
- package/dist/types/transcription/index.d.ts +64 -0
- package/package.json +28 -21
- package/src/annotation/annotation.types.ts +52 -0
- package/src/annotation/constants.ts +36 -0
- package/src/annotation/index.ts +343 -0
- package/src/breakouts/README.md +220 -0
- package/src/breakouts/breakout.ts +163 -0
- package/src/breakouts/collection.ts +19 -0
- package/src/breakouts/edit-lock-error.ts +25 -0
- package/src/breakouts/events.ts +37 -0
- package/src/breakouts/index.ts +921 -0
- package/src/breakouts/request.ts +55 -0
- package/src/breakouts/utils.ts +57 -0
- package/src/common/errors/webex-errors.ts +6 -2
- package/src/common/logs/logger-proxy.ts +1 -1
- package/src/config.ts +5 -7
- package/src/constants.ts +155 -20
- package/src/controls-options-manager/constants.ts +5 -0
- package/src/controls-options-manager/enums.ts +18 -0
- package/src/controls-options-manager/index.ts +278 -0
- package/src/controls-options-manager/types.ts +59 -0
- package/src/controls-options-manager/util.ts +286 -0
- package/src/index.ts +34 -0
- package/src/locus-info/controlsUtils.ts +108 -0
- package/src/locus-info/index.ts +310 -21
- package/src/locus-info/mediaSharesUtils.ts +48 -0
- package/src/locus-info/parser.ts +2 -1
- package/src/locus-info/selfUtils.ts +71 -1
- package/src/media/index.ts +70 -142
- package/src/media/properties.ts +41 -104
- package/src/mediaQualityMetrics/config.ts +379 -377
- package/src/meeting/in-meeting-actions.ts +156 -0
- package/src/meeting/index.ts +1730 -1768
- package/src/meeting/locusMediaRequest.ts +309 -0
- package/src/meeting/muteState.ts +228 -132
- package/src/meeting/request.ts +100 -91
- package/src/meeting/request.type.ts +2 -0
- package/src/meeting/util.ts +421 -421
- package/src/meeting-info/meeting-info-v2.ts +134 -13
- package/src/meeting-info/utilv2.ts +13 -3
- package/src/meetings/collection.ts +20 -0
- package/src/meetings/index.ts +375 -83
- package/src/meetings/meetings.types.ts +9 -0
- package/src/meetings/request.ts +3 -1
- package/src/meetings/util.ts +103 -4
- package/src/member/index.ts +40 -0
- package/src/member/types.ts +24 -0
- package/src/member/util.ts +81 -1
- package/src/members/collection.ts +8 -0
- package/src/members/index.ts +108 -6
- package/src/members/request.ts +98 -17
- package/src/members/types.ts +28 -0
- package/src/members/util.ts +319 -240
- package/src/metrics/config.ts +49 -10
- package/src/metrics/constants.ts +2 -4
- package/src/metrics/index.ts +43 -27
- package/src/multistream/mediaRequestManager.ts +210 -45
- package/src/multistream/receiveSlot.ts +68 -26
- package/src/multistream/receiveSlotManager.ts +61 -38
- package/src/multistream/remoteMedia.ts +29 -3
- package/src/multistream/remoteMediaGroup.ts +61 -2
- package/src/multistream/remoteMediaManager.ts +260 -66
- package/src/networkQualityMonitor/index.ts +6 -6
- package/src/reachability/index.ts +75 -25
- package/src/reachability/request.ts +10 -5
- package/src/reactions/constants.ts +4 -0
- package/src/reactions/reactions.ts +4 -4
- package/src/reactions/reactions.type.ts +28 -3
- package/src/reconnection-manager/index.ts +53 -32
- package/src/recording-controller/enums.ts +8 -0
- package/src/recording-controller/index.ts +315 -0
- package/src/recording-controller/util.ts +58 -0
- package/src/roap/index.ts +21 -30
- package/src/roap/request.ts +51 -52
- package/src/roap/turnDiscovery.ts +51 -27
- package/src/statsAnalyzer/global.ts +1 -94
- package/src/statsAnalyzer/index.ts +380 -390
- package/src/statsAnalyzer/mqaUtil.ts +106 -99
- package/test/integration/spec/converged-space-meetings.js +233 -0
- package/test/integration/spec/journey.js +332 -255
- package/test/integration/spec/space-meeting.js +78 -5
- package/test/integration/spec/transcription.js +1 -1
- package/test/unit/spec/annotation/index.ts +436 -0
- package/test/unit/spec/breakouts/breakout.ts +203 -0
- package/test/unit/spec/breakouts/collection.ts +15 -0
- package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
- package/test/unit/spec/breakouts/events.ts +77 -0
- package/test/unit/spec/breakouts/index.ts +1790 -0
- package/test/unit/spec/breakouts/request.ts +104 -0
- package/test/unit/spec/breakouts/utils.js +72 -0
- package/test/unit/spec/controls-options-manager/index.js +287 -0
- package/test/unit/spec/controls-options-manager/util.js +518 -0
- package/test/unit/spec/fixture/locus.js +1 -0
- package/test/unit/spec/locus-info/controlsUtils.js +303 -30
- package/test/unit/spec/locus-info/index.js +615 -4
- package/test/unit/spec/locus-info/mediaSharesUtils.ts +22 -0
- package/test/unit/spec/locus-info/selfConstant.js +38 -0
- package/test/unit/spec/locus-info/selfUtils.js +200 -0
- package/test/unit/spec/media/index.ts +118 -22
- package/test/unit/spec/media/properties.ts +9 -9
- package/test/unit/spec/meeting/in-meeting-actions.ts +76 -0
- package/test/unit/spec/meeting/index.js +2394 -1381
- package/test/unit/spec/meeting/locusMediaRequest.ts +436 -0
- package/test/unit/spec/meeting/muteState.js +370 -208
- package/test/unit/spec/meeting/request.js +354 -42
- package/test/unit/spec/meeting/utils.js +268 -156
- package/test/unit/spec/meeting-info/meetinginfov2.js +383 -5
- package/test/unit/spec/meeting-info/utilv2.js +21 -0
- package/test/unit/spec/meetings/collection.js +14 -0
- package/test/unit/spec/meetings/index.js +842 -128
- package/test/unit/spec/meetings/utils.js +206 -2
- package/test/unit/spec/member/index.js +24 -0
- package/test/unit/spec/member/util.js +384 -32
- package/test/unit/spec/members/index.js +320 -1
- package/test/unit/spec/members/request.js +206 -27
- package/test/unit/spec/members/utils.js +184 -0
- package/test/unit/spec/metrics/index.js +98 -0
- package/test/unit/spec/multistream/mediaRequestManager.ts +676 -105
- package/test/unit/spec/multistream/receiveSlot.ts +77 -18
- package/test/unit/spec/multistream/receiveSlotManager.ts +69 -39
- package/test/unit/spec/multistream/remoteMedia.ts +32 -2
- package/test/unit/spec/multistream/remoteMediaGroup.ts +271 -5
- package/test/unit/spec/multistream/remoteMediaManager.ts +672 -65
- package/test/unit/spec/networkQualityMonitor/index.js +4 -4
- package/test/unit/spec/reachability/index.ts +176 -25
- package/test/unit/spec/reachability/request.js +66 -0
- package/test/unit/spec/reconnection-manager/index.js +46 -13
- package/test/unit/spec/recording-controller/index.js +231 -0
- package/test/unit/spec/recording-controller/util.js +102 -0
- package/test/unit/spec/roap/index.ts +21 -51
- package/test/unit/spec/roap/request.ts +187 -0
- package/test/unit/spec/roap/turnDiscovery.ts +73 -34
- package/test/unit/spec/stats-analyzer/index.js +94 -43
- package/test/utils/constants.js +9 -0
- package/test/utils/integrationTestUtils.js +46 -0
- package/test/utils/testUtils.js +0 -45
- package/test/utils/webex-config.js +4 -0
- package/test/utils/webex-test-users.js +7 -3
- package/tsconfig.json +6 -0
- package/dist/media/internal-media-core-wrapper.js +0 -22
- package/dist/media/internal-media-core-wrapper.js.map +0 -1
- package/dist/meeting/effectsState.js +0 -334
- package/dist/meeting/effectsState.js.map +0 -1
- package/dist/multistream/multistreamMedia.js +0 -117
- package/dist/multistream/multistreamMedia.js.map +0 -1
- package/src/index.js +0 -15
- package/src/media/internal-media-core-wrapper.ts +0 -9
- package/src/meeting/effectsState.ts +0 -211
- package/src/multistream/multistreamMedia.ts +0 -93
- package/test/unit/spec/meeting/effectsState.js +0 -281
package/src/meetings/util.ts
CHANGED
|
@@ -1,16 +1,23 @@
|
|
|
1
1
|
/* globals window */
|
|
2
2
|
|
|
3
3
|
import {
|
|
4
|
-
_LOCUS_ID_,
|
|
5
|
-
_INCOMING_,
|
|
6
4
|
_CREATED_,
|
|
7
|
-
|
|
5
|
+
_INCOMING_,
|
|
6
|
+
_JOINED_,
|
|
7
|
+
_LEFT_,
|
|
8
|
+
_LOCUS_ID_,
|
|
9
|
+
_MOVED_,
|
|
10
|
+
BREAKOUTS,
|
|
8
11
|
CORRELATION_ID,
|
|
9
12
|
EVENT_TRIGGERS,
|
|
13
|
+
LOCUS,
|
|
14
|
+
LOCUSEVENT,
|
|
10
15
|
ROAP,
|
|
11
16
|
} from '../constants';
|
|
12
17
|
import LoggerProxy from '../common/logs/logger-proxy';
|
|
13
18
|
import Trigger from '../common/events/trigger-proxy';
|
|
19
|
+
import BEHAVIORAL_METRICS from '../metrics/constants';
|
|
20
|
+
import Metrics from '../metrics';
|
|
14
21
|
|
|
15
22
|
/**
|
|
16
23
|
* Meetings Media Codec Missing Event
|
|
@@ -44,6 +51,14 @@ MeetingsUtil.handleRoapMercury = (envelope, meetingCollection) => {
|
|
|
44
51
|
if (meeting) {
|
|
45
52
|
const {seq, messageType, tieBreaker, errorType, errorCause} = data.message;
|
|
46
53
|
|
|
54
|
+
Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.ROAP_MERCURY_EVENT_RECEIVED, {
|
|
55
|
+
correlation_id: data.correlationId,
|
|
56
|
+
seq,
|
|
57
|
+
message_type: messageType,
|
|
58
|
+
error_type: errorType,
|
|
59
|
+
error_cause: errorCause,
|
|
60
|
+
});
|
|
61
|
+
|
|
47
62
|
if (messageType === ROAP.ROAP_TYPES.TURN_DISCOVERY_RESPONSE) {
|
|
48
63
|
// turn discovery is not part of normal roap protocol and so we are not handling it
|
|
49
64
|
// through the usual roap state machine
|
|
@@ -58,12 +73,36 @@ MeetingsUtil.handleRoapMercury = (envelope, meetingCollection) => {
|
|
|
58
73
|
errorCause,
|
|
59
74
|
};
|
|
60
75
|
|
|
76
|
+
const mediaServer = MeetingsUtil.getMediaServer(roapMessage.sdp);
|
|
77
|
+
|
|
61
78
|
meeting.mediaProperties.webrtcMediaConnection.roapMessageReceived(roapMessage);
|
|
79
|
+
|
|
80
|
+
if (mediaServer) {
|
|
81
|
+
meeting.mediaProperties.webrtcMediaConnection.mediaServer = mediaServer;
|
|
82
|
+
}
|
|
62
83
|
}
|
|
63
84
|
}
|
|
64
85
|
}
|
|
65
86
|
};
|
|
66
87
|
|
|
88
|
+
MeetingsUtil.getMediaServer = (sdp) => {
|
|
89
|
+
let mediaServer;
|
|
90
|
+
|
|
91
|
+
// Attempt to collect the media server from the roap message.
|
|
92
|
+
try {
|
|
93
|
+
mediaServer = sdp
|
|
94
|
+
.split('\r\n')
|
|
95
|
+
.find((line) => line.startsWith('o='))
|
|
96
|
+
.split(' ')
|
|
97
|
+
.shift()
|
|
98
|
+
.replace('o=', '');
|
|
99
|
+
} catch {
|
|
100
|
+
mediaServer = undefined;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
return mediaServer;
|
|
104
|
+
};
|
|
105
|
+
|
|
67
106
|
MeetingsUtil.checkForCorrelationId = (deviceUrl, locus) => {
|
|
68
107
|
let devices = [];
|
|
69
108
|
|
|
@@ -85,11 +124,13 @@ MeetingsUtil.checkForCorrelationId = (deviceUrl, locus) => {
|
|
|
85
124
|
MeetingsUtil.parseDefaultSiteFromMeetingPreferences = (userPreferences) => {
|
|
86
125
|
let result = '';
|
|
87
126
|
|
|
88
|
-
if (userPreferences
|
|
127
|
+
if (userPreferences?.sites?.length) {
|
|
89
128
|
const defaultSite = userPreferences.sites.find((site) => site.default);
|
|
90
129
|
|
|
91
130
|
if (defaultSite) {
|
|
92
131
|
result = defaultSite.siteUrl;
|
|
132
|
+
} else {
|
|
133
|
+
result = userPreferences.sites[0].siteUrl;
|
|
93
134
|
}
|
|
94
135
|
}
|
|
95
136
|
|
|
@@ -196,4 +237,62 @@ MeetingsUtil.checkH264Support = async function checkH264Support(options: {
|
|
|
196
237
|
}, delay);
|
|
197
238
|
};
|
|
198
239
|
|
|
240
|
+
/**
|
|
241
|
+
* get device from locus data
|
|
242
|
+
* @param {Object} newLocus new locus data
|
|
243
|
+
* @param {String} deviceUrl current device url
|
|
244
|
+
* @returns {Object}
|
|
245
|
+
*/
|
|
246
|
+
MeetingsUtil.getThisDevice = (newLocus: any, deviceUrl: string) => {
|
|
247
|
+
if (newLocus?.self?.devices?.length > 0) {
|
|
248
|
+
return newLocus.self.devices.find((device) => device.url === deviceUrl);
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
return null;
|
|
252
|
+
};
|
|
253
|
+
|
|
254
|
+
/**
|
|
255
|
+
* get self device joined status from locus data
|
|
256
|
+
* @param {Object} meeting current meeting data
|
|
257
|
+
* @param {Object} newLocus new locus data
|
|
258
|
+
* @param {String} deviceUrl current device url
|
|
259
|
+
* @returns {Object}
|
|
260
|
+
*/
|
|
261
|
+
MeetingsUtil.joinedOnThisDevice = (meeting: any, newLocus: any, deviceUrl: string) => {
|
|
262
|
+
const thisDevice = MeetingsUtil.getThisDevice(newLocus, deviceUrl);
|
|
263
|
+
if (thisDevice) {
|
|
264
|
+
if (!thisDevice.correlationId || meeting?.correlationId === thisDevice.correlationId) {
|
|
265
|
+
return (
|
|
266
|
+
thisDevice.state === _JOINED_ ||
|
|
267
|
+
(thisDevice.state === _LEFT_ && thisDevice.reason === _MOVED_)
|
|
268
|
+
);
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
return false;
|
|
273
|
+
};
|
|
274
|
+
|
|
275
|
+
/**
|
|
276
|
+
* check the new locus is breakout session's one or not
|
|
277
|
+
* @param {Object} newLocus new locus data
|
|
278
|
+
* @returns {boolean}
|
|
279
|
+
* @private
|
|
280
|
+
*/
|
|
281
|
+
MeetingsUtil.isBreakoutLocusDTO = (newLocus: any) => {
|
|
282
|
+
return newLocus?.controls?.breakout?.sessionType === BREAKOUTS.SESSION_TYPES.BREAKOUT;
|
|
283
|
+
};
|
|
284
|
+
|
|
285
|
+
/**
|
|
286
|
+
* check the locus is valid breakout locus or not
|
|
287
|
+
* @param {Object} locus
|
|
288
|
+
* @returns {boolean}
|
|
289
|
+
* @private
|
|
290
|
+
*/
|
|
291
|
+
MeetingsUtil.isValidBreakoutLocus = (locus: any) => {
|
|
292
|
+
const inActiveStatus = locus?.fullState?.state === LOCUS.STATE.INACTIVE;
|
|
293
|
+
const isLocusAsBreakout = MeetingsUtil.isBreakoutLocusDTO(locus);
|
|
294
|
+
const selfJoined = locus.self?.state === _JOINED_;
|
|
295
|
+
|
|
296
|
+
return isLocusAsBreakout && !inActiveStatus && selfJoined;
|
|
297
|
+
};
|
|
199
298
|
export default MeetingsUtil;
|
package/src/member/index.ts
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
3
3
|
*/
|
|
4
4
|
import {MEETINGS, _IN_LOBBY_, _NOT_IN_MEETING_, _IN_MEETING_} from '../constants';
|
|
5
|
+
import {IExternalRoles, ParticipantWithRoles} from './types';
|
|
5
6
|
|
|
6
7
|
import MemberUtil from './util';
|
|
7
8
|
|
|
@@ -28,9 +29,12 @@ export default class Member {
|
|
|
28
29
|
isSelf: any;
|
|
29
30
|
isUser: any;
|
|
30
31
|
isVideoMuted: any;
|
|
32
|
+
roles: IExternalRoles;
|
|
31
33
|
name: any;
|
|
32
34
|
participant: any;
|
|
33
35
|
status: any;
|
|
36
|
+
supportsBreakouts: boolean;
|
|
37
|
+
supportLiveAnnotation: boolean;
|
|
34
38
|
type: any;
|
|
35
39
|
namespace = MEETINGS;
|
|
36
40
|
|
|
@@ -100,6 +104,20 @@ export default class Member {
|
|
|
100
104
|
* @memberof Member
|
|
101
105
|
*/
|
|
102
106
|
this.isHandRaised = null;
|
|
107
|
+
/**
|
|
108
|
+
* @instance
|
|
109
|
+
* @type {Boolean}
|
|
110
|
+
* @public
|
|
111
|
+
* @memberof Member
|
|
112
|
+
*/
|
|
113
|
+
this.supportsBreakouts = null;
|
|
114
|
+
/**
|
|
115
|
+
* @instance
|
|
116
|
+
* @type {Boolean}
|
|
117
|
+
* @public
|
|
118
|
+
* @memberof Member
|
|
119
|
+
*/
|
|
120
|
+
this.supportLiveAnnotation = null;
|
|
103
121
|
/**
|
|
104
122
|
* @instance
|
|
105
123
|
* @type {Boolean}
|
|
@@ -220,6 +238,14 @@ export default class Member {
|
|
|
220
238
|
* @memberof Member
|
|
221
239
|
*/
|
|
222
240
|
this.isModeratorAssignmentProhibited = null;
|
|
241
|
+
|
|
242
|
+
/**
|
|
243
|
+
* @instance
|
|
244
|
+
* @type {IExternalRoles}
|
|
245
|
+
* @public
|
|
246
|
+
* @memberof Member
|
|
247
|
+
*/
|
|
248
|
+
this.roles = null;
|
|
223
249
|
// TODO: more participant types
|
|
224
250
|
// such as native client, web client, is a device, what type of phone, etc
|
|
225
251
|
this.processParticipant(participant);
|
|
@@ -242,6 +268,8 @@ export default class Member {
|
|
|
242
268
|
this.isAudioMuted = MemberUtil.isAudioMuted(participant);
|
|
243
269
|
this.isVideoMuted = MemberUtil.isVideoMuted(participant);
|
|
244
270
|
this.isHandRaised = MemberUtil.isHandRaised(participant);
|
|
271
|
+
this.supportsBreakouts = MemberUtil.isBreakoutsSupported(participant);
|
|
272
|
+
this.supportLiveAnnotation = MemberUtil.isLiveAnnotationSupported(participant);
|
|
245
273
|
this.isGuest = MemberUtil.isGuest(participant);
|
|
246
274
|
this.isUser = MemberUtil.isUser(participant);
|
|
247
275
|
this.isDevice = MemberUtil.isDevice(participant);
|
|
@@ -249,6 +277,7 @@ export default class Member {
|
|
|
249
277
|
this.isModeratorAssignmentProhibited =
|
|
250
278
|
MemberUtil.isModeratorAssignmentProhibited(participant);
|
|
251
279
|
this.processStatus(participant);
|
|
280
|
+
this.processRoles(participant as ParticipantWithRoles);
|
|
252
281
|
// must be done last
|
|
253
282
|
this.isNotAdmitted = MemberUtil.isNotAdmitted(participant, this.isGuest, this.status);
|
|
254
283
|
}
|
|
@@ -418,6 +447,17 @@ export default class Member {
|
|
|
418
447
|
}
|
|
419
448
|
}
|
|
420
449
|
|
|
450
|
+
/**
|
|
451
|
+
* process the roles that have been applied to this member
|
|
452
|
+
* @param {Object} participant
|
|
453
|
+
* @returns {undefined}
|
|
454
|
+
* @private
|
|
455
|
+
* @memberof Member
|
|
456
|
+
*/
|
|
457
|
+
private processRoles(participant: ParticipantWithRoles) {
|
|
458
|
+
this.roles = MemberUtil.extractControlRoles(participant);
|
|
459
|
+
}
|
|
460
|
+
|
|
421
461
|
/**
|
|
422
462
|
* set the type for the member, could be MEETING or CALL
|
|
423
463
|
* @param {String} type
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export interface IExternalRoles {
|
|
2
|
+
cohost: boolean;
|
|
3
|
+
moderator: boolean;
|
|
4
|
+
presenter: boolean;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export enum ServerRoles {
|
|
8
|
+
Cohost = 'COHOST',
|
|
9
|
+
Moderator = 'MODERATOR',
|
|
10
|
+
Presenter = 'PRESENTER',
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export type ServerRoleShape = {
|
|
14
|
+
type: ServerRoles;
|
|
15
|
+
hasRole: boolean;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
export type ParticipantWithRoles = {
|
|
19
|
+
controls: {
|
|
20
|
+
role: {
|
|
21
|
+
roles: Array<ServerRoleShape>;
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
};
|
package/src/member/util.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import {IExternalRoles, ParticipantWithRoles, ServerRoles, ServerRoleShape} from './types';
|
|
1
2
|
import {
|
|
2
3
|
_USER_,
|
|
3
4
|
_RESOURCE_ROOM_,
|
|
@@ -19,6 +20,58 @@ import ParameterError from '../common/errors/parameter';
|
|
|
19
20
|
|
|
20
21
|
const MemberUtil: any = {};
|
|
21
22
|
|
|
23
|
+
/**
|
|
24
|
+
* @param {Object} participant the locus participant
|
|
25
|
+
* @returns {[ServerRoleShape]}
|
|
26
|
+
*/
|
|
27
|
+
MemberUtil.getControlsRoles = (participant: ParticipantWithRoles): Array<ServerRoleShape> =>
|
|
28
|
+
participant?.controls?.role?.roles;
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* @param {Object} participant the locus participant
|
|
32
|
+
* @param {ServerRoles} controlRole the search role
|
|
33
|
+
* @returns {Boolean}
|
|
34
|
+
*/
|
|
35
|
+
MemberUtil.hasRole = (participant: any, controlRole: ServerRoles): boolean =>
|
|
36
|
+
MemberUtil.getControlsRoles(participant)?.some(
|
|
37
|
+
(role) => role.type === controlRole && role.hasRole
|
|
38
|
+
);
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* @param {Object} participant the locus participant
|
|
42
|
+
* @returns {Boolean}
|
|
43
|
+
*/
|
|
44
|
+
MemberUtil.hasCohost = (participant: ParticipantWithRoles): boolean =>
|
|
45
|
+
MemberUtil.hasRole(participant, ServerRoles.Cohost) || false;
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* @param {Object} participant the locus participant
|
|
49
|
+
* @returns {Boolean}
|
|
50
|
+
*/
|
|
51
|
+
MemberUtil.hasModerator = (participant: ParticipantWithRoles): boolean =>
|
|
52
|
+
MemberUtil.hasRole(participant, ServerRoles.Moderator) || false;
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* @param {Object} participant the locus participant
|
|
56
|
+
* @returns {Boolean}
|
|
57
|
+
*/
|
|
58
|
+
MemberUtil.hasPresenter = (participant: ParticipantWithRoles): boolean =>
|
|
59
|
+
MemberUtil.hasRole(participant, ServerRoles.Presenter) || false;
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* @param {Object} participant the locus participant
|
|
63
|
+
* @returns {IExternalRoles}
|
|
64
|
+
*/
|
|
65
|
+
MemberUtil.extractControlRoles = (participant: ParticipantWithRoles): IExternalRoles => {
|
|
66
|
+
const roles = {
|
|
67
|
+
cohost: MemberUtil.hasCohost(participant),
|
|
68
|
+
moderator: MemberUtil.hasModerator(participant),
|
|
69
|
+
presenter: MemberUtil.hasPresenter(participant),
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
return roles;
|
|
73
|
+
};
|
|
74
|
+
|
|
22
75
|
/**
|
|
23
76
|
* @param {Object} participant the locus participant
|
|
24
77
|
* @returns {Boolean}
|
|
@@ -72,7 +125,7 @@ MemberUtil.isAssociatedSame = (participant: any, id: string) =>
|
|
|
72
125
|
* @param {String} status
|
|
73
126
|
* @returns {Boolean}
|
|
74
127
|
*/
|
|
75
|
-
MemberUtil.isNotAdmitted = (participant: any, isGuest: boolean, status: string) =>
|
|
128
|
+
MemberUtil.isNotAdmitted = (participant: any, isGuest: boolean, status: string): boolean =>
|
|
76
129
|
participant &&
|
|
77
130
|
participant.guest &&
|
|
78
131
|
((participant.devices &&
|
|
@@ -82,6 +135,7 @@ MemberUtil.isNotAdmitted = (participant: any, isGuest: boolean, status: string)
|
|
|
82
135
|
// @ts-ignore
|
|
83
136
|
isGuest &&
|
|
84
137
|
status === _IN_LOBBY_) ||
|
|
138
|
+
// @ts-ignore
|
|
85
139
|
!status === _IN_MEETING_);
|
|
86
140
|
|
|
87
141
|
/**
|
|
@@ -130,6 +184,32 @@ MemberUtil.isHandRaised = (participant: any) => {
|
|
|
130
184
|
return participant.controls?.hand?.raised || false;
|
|
131
185
|
};
|
|
132
186
|
|
|
187
|
+
/**
|
|
188
|
+
* @param {Object} participant the locus participant
|
|
189
|
+
* @returns {Boolean}
|
|
190
|
+
*/
|
|
191
|
+
MemberUtil.isBreakoutsSupported = (participant) => {
|
|
192
|
+
if (!participant) {
|
|
193
|
+
throw new ParameterError('Breakout support could not be processed, participant is undefined.');
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
return !participant.doesNotSupportBreakouts;
|
|
197
|
+
};
|
|
198
|
+
|
|
199
|
+
/**
|
|
200
|
+
* @param {Object} participant the locus participant
|
|
201
|
+
* @returns {Boolean}
|
|
202
|
+
*/
|
|
203
|
+
MemberUtil.isLiveAnnotationSupported = (participant) => {
|
|
204
|
+
if (!participant) {
|
|
205
|
+
throw new ParameterError(
|
|
206
|
+
'LiveAnnotation support could not be processed, participant is undefined.'
|
|
207
|
+
);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
return !participant.annotatorAssignmentNotAllowed;
|
|
211
|
+
};
|
|
212
|
+
|
|
133
213
|
/**
|
|
134
214
|
* utility method for audio/video muted status
|
|
135
215
|
* @param {String} status
|
package/src/members/index.ts
CHANGED
|
@@ -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(
|
|
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(
|
|
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 =
|
|
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
|
|
@@ -925,6 +991,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
925
991
|
*/
|
|
926
992
|
findMemberByCsi(csi) {
|
|
927
993
|
return Object.values(this.membersCollection.getAll()).find((member) =>
|
|
994
|
+
// @ts-ignore
|
|
928
995
|
member.participant?.devices?.find((device) =>
|
|
929
996
|
device.csis?.find((memberCsi) => memberCsi === csi)
|
|
930
997
|
)
|
|
@@ -957,4 +1024,39 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
957
1024
|
|
|
958
1025
|
return csis;
|
|
959
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
|
+
}
|
|
960
1062
|
}
|