@webex/plugin-meetings 3.0.0-beta.11 → 3.0.0-beta.111
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/UPGRADING.md +9 -9
- package/browsers.js +19 -24
- package/dist/annotation/annotation.types.js +7 -0
- package/dist/annotation/annotation.types.js.map +1 -0
- package/dist/annotation/constants.js +48 -0
- package/dist/annotation/constants.js.map +1 -0
- package/dist/annotation/index.js +357 -0
- package/dist/annotation/index.js.map +1 -0
- package/dist/breakouts/breakout.js +176 -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 +944 -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 -20
- 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 +5 -26
- package/dist/common/errors/captcha-error.js.map +1 -1
- package/dist/common/errors/intent-to-join.js +5 -26
- package/dist/common/errors/intent-to-join.js.map +1 -1
- package/dist/common/errors/join-meeting.js +6 -27
- package/dist/common/errors/join-meeting.js.map +1 -1
- package/dist/common/errors/media.js +5 -26
- package/dist/common/errors/media.js.map +1 -1
- package/dist/common/errors/parameter.js +5 -33
- package/dist/common/errors/parameter.js.map +1 -1
- package/dist/common/errors/password-error.js +5 -26
- package/dist/common/errors/password-error.js.map +1 -1
- package/dist/common/errors/permission.js +4 -25
- 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 +5 -26
- package/dist/common/errors/reconnection.js.map +1 -1
- package/dist/common/errors/stats.js +5 -26
- package/dist/common/errors/stats.js.map +1 -1
- package/dist/common/errors/webex-errors.js +6 -41
- 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 +6 -6
- package/dist/config.js.map +1 -1
- package/dist/constants.js +193 -53
- 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 +286 -0
- package/dist/controls-options-manager/util.js.map +1 -0
- package/dist/index.js +72 -17
- package/dist/index.js.map +1 -1
- package/dist/locus-info/controlsUtils.js +94 -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 +383 -212
- 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 +12 -38
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.js +88 -123
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js +99 -91
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js +62 -147
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +71 -117
- package/dist/media/properties.js.map +1 -1
- package/dist/media/util.js +2 -9
- 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 +67 -14
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +2477 -2417
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/muteState.js +252 -113
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +296 -289
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/request.type.js +7 -0
- package/dist/meeting/request.type.js.map +1 -0
- package/dist/meeting/state.js +21 -31
- package/dist/meeting/state.js.map +1 -1
- package/dist/meeting/util.js +58 -217
- 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 +10 -33
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +278 -281
- 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 +155 -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 +675 -593
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/request.js +23 -42
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +177 -155
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +89 -88
- 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 +162 -204
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +58 -53
- 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 +107 -44
- 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 +3 -7
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.js +93 -162
- package/dist/metrics/index.js.map +1 -1
- package/dist/multistream/mediaRequestManager.js +167 -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 +74 -93
- 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 +6 -40
- package/dist/multistream/remoteMediaGroup.js.map +1 -1
- package/dist/multistream/remoteMediaManager.js +466 -442
- package/dist/multistream/remoteMediaManager.js.map +1 -1
- package/dist/networkQualityMonitor/index.js +32 -59
- package/dist/networkQualityMonitor/index.js.map +1 -1
- package/dist/personal-meeting-room/index.js +10 -45
- 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 +19 -23
- package/dist/reactions/reactions.type.js.map +1 -1
- package/dist/reconnection-manager/index.js +326 -465
- 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 +38 -67
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +143 -134
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/turnDiscovery.js +149 -101
- 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 -461
- 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 +13 -45
- package/dist/transcription/index.js.map +1 -1
- package/dist/types/annotation/annotation.types.d.ts +34 -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 +78 -0
- package/dist/types/constants.d.ts +984 -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 +108 -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 +137 -0
- package/dist/types/meeting/index.d.ts +1753 -0
- package/dist/types/meeting/muteState.d.ts +185 -0
- package/dist/types/meeting/request.d.ts +275 -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 +2 -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 +115 -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 +345 -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 +69 -0
- package/dist/types/members/types.d.ts +24 -0
- package/dist/types/members/util.d.ts +2 -0
- package/dist/types/metrics/config.d.ts +195 -0
- package/dist/types/metrics/constants.d.ts +54 -0
- package/dist/types/metrics/index.d.ts +169 -0
- package/dist/types/multistream/mediaRequestManager.d.ts +101 -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 +263 -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 +38 -0
- package/dist/types/roap/turnDiscovery.d.ts +88 -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/internal-README.md +7 -6
- package/package.json +28 -21
- package/src/annotation/annotation.types.ts +41 -0
- package/src/annotation/constants.ts +36 -0
- package/src/annotation/index.ts +339 -0
- package/src/breakouts/README.md +220 -0
- package/src/breakouts/breakout.ts +141 -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 +835 -0
- package/src/breakouts/request.ts +55 -0
- package/src/breakouts/utils.ts +57 -0
- package/src/common/browser-detection.ts +9 -6
- package/src/common/collection.ts +3 -1
- package/src/common/errors/captcha-error.ts +6 -6
- package/src/common/errors/intent-to-join.ts +6 -6
- package/src/common/errors/join-meeting.ts +12 -8
- package/src/common/errors/media.ts +6 -6
- package/src/common/errors/parameter.ts +9 -6
- package/src/common/errors/password-error.ts +6 -6
- package/src/common/errors/permission.ts +5 -5
- package/src/common/errors/reconnection.ts +6 -6
- package/src/common/errors/stats.ts +6 -6
- package/src/common/errors/webex-errors.ts +7 -5
- package/src/common/errors/webex-meetings-error.ts +1 -1
- package/src/common/events/events-scope.ts +5 -1
- package/src/common/events/events.ts +5 -1
- package/src/common/events/trigger-proxy.ts +8 -3
- package/src/common/events/util.ts +1 -2
- package/src/common/logs/logger-proxy.ts +21 -10
- package/src/common/logs/request.ts +11 -8
- package/src/config.ts +16 -12
- package/src/constants.ts +141 -6
- 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 +274 -0
- package/src/index.ts +33 -0
- package/src/locus-info/controlsUtils.ts +145 -24
- package/src/locus-info/fullState.ts +15 -11
- package/src/locus-info/hostUtils.ts +4 -3
- package/src/locus-info/index.ts +326 -55
- package/src/locus-info/infoUtils.ts +12 -4
- package/src/locus-info/mediaSharesUtils.ts +4 -4
- package/src/locus-info/parser.ts +46 -68
- package/src/locus-info/selfUtils.ts +187 -56
- package/src/media/index.ts +142 -172
- package/src/media/properties.ts +43 -36
- package/src/media/util.ts +1 -1
- package/src/mediaQualityMetrics/config.ts +380 -378
- package/src/meeting/in-meeting-actions.ts +139 -3
- package/src/meeting/index.ts +2674 -1543
- package/src/meeting/muteState.ts +271 -68
- package/src/meeting/request.ts +231 -135
- package/src/meeting/request.type.ts +13 -0
- package/src/meeting/state.ts +45 -30
- package/src/meeting/util.ts +119 -110
- package/src/meeting-info/collection.ts +2 -1
- package/src/meeting-info/index.ts +32 -30
- package/src/meeting-info/meeting-info-v2.ts +201 -113
- package/src/meeting-info/request.ts +9 -3
- package/src/meeting-info/util.ts +54 -46
- package/src/meeting-info/utilv2.ts +70 -55
- package/src/meetings/collection.ts +21 -1
- package/src/meetings/index.ts +749 -437
- package/src/meetings/request.ts +29 -25
- package/src/meetings/util.ts +122 -33
- package/src/member/index.ts +95 -49
- package/src/member/types.ts +24 -0
- package/src/member/util.ts +106 -13
- package/src/members/collection.ts +8 -1
- package/src/members/index.ts +281 -129
- package/src/members/request.ts +87 -14
- package/src/members/types.ts +28 -0
- package/src/members/util.ts +140 -49
- package/src/metrics/config.ts +302 -90
- package/src/metrics/constants.ts +1 -6
- package/src/metrics/index.ts +124 -95
- package/src/multistream/mediaRequestManager.ts +203 -45
- package/src/multistream/receiveSlot.ts +69 -26
- package/src/multistream/receiveSlotManager.ts +62 -38
- package/src/multistream/remoteMedia.ts +30 -4
- package/src/multistream/remoteMediaGroup.ts +4 -3
- package/src/multistream/remoteMediaManager.ts +230 -66
- package/src/networkQualityMonitor/index.ts +24 -27
- package/src/personal-meeting-room/index.ts +12 -16
- package/src/personal-meeting-room/request.ts +10 -3
- package/src/personal-meeting-room/util.ts +3 -3
- package/src/reachability/index.ts +131 -79
- package/src/reachability/request.ts +43 -34
- package/src/reactions/constants.ts +4 -0
- package/src/reactions/reactions.ts +8 -8
- package/src/reactions/reactions.type.ts +31 -5
- package/src/reconnection-manager/index.ts +193 -111
- 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 +63 -51
- package/src/roap/request.ts +86 -53
- package/src/roap/turnDiscovery.ts +105 -46
- package/src/statsAnalyzer/global.ts +8 -104
- package/src/statsAnalyzer/index.ts +624 -376
- package/src/statsAnalyzer/mqaUtil.ts +203 -90
- package/src/transcription/index.ts +34 -32
- package/test/integration/spec/converged-space-meetings.js +177 -0
- package/test/integration/spec/journey.js +670 -466
- package/test/integration/spec/space-meeting.js +320 -204
- package/test/integration/spec/transcription.js +7 -8
- package/test/unit/spec/annotation/index.ts +435 -0
- package/test/unit/spec/breakouts/breakout.ts +184 -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 +1542 -0
- package/test/unit/spec/breakouts/request.ts +104 -0
- package/test/unit/spec/breakouts/utils.js +72 -0
- package/test/unit/spec/common/browser-detection.js +9 -28
- package/test/unit/spec/controls-options-manager/index.js +287 -0
- package/test/unit/spec/controls-options-manager/util.js +504 -0
- package/test/unit/spec/fixture/locus.js +93 -90
- package/test/unit/spec/locus-info/controlsUtils.js +289 -32
- package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
- package/test/unit/spec/locus-info/index.js +585 -5
- package/test/unit/spec/locus-info/infoUtils.js +26 -33
- package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
- package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
- package/test/unit/spec/locus-info/parser.js +3 -9
- package/test/unit/spec/locus-info/selfConstant.js +110 -103
- package/test/unit/spec/locus-info/selfUtils.js +236 -12
- package/test/unit/spec/media/index.ts +104 -8
- package/test/unit/spec/media/properties.ts +9 -9
- package/test/unit/spec/meeting/in-meeting-actions.ts +66 -3
- package/test/unit/spec/meeting/index.js +2934 -946
- package/test/unit/spec/meeting/muteState.js +368 -70
- package/test/unit/spec/meeting/request.js +194 -44
- package/test/unit/spec/meeting/utils.js +146 -165
- package/test/unit/spec/meeting-info/meetinginfov2.js +333 -74
- package/test/unit/spec/meeting-info/request.js +7 -9
- package/test/unit/spec/meeting-info/util.js +11 -12
- package/test/unit/spec/meeting-info/utilv2.js +131 -74
- package/test/unit/spec/meetings/collection.js +15 -1
- package/test/unit/spec/meetings/index.js +1052 -329
- package/test/unit/spec/meetings/utils.js +163 -14
- package/test/unit/spec/member/index.js +24 -1
- package/test/unit/spec/member/util.js +383 -32
- package/test/unit/spec/members/index.js +402 -54
- package/test/unit/spec/members/request.js +76 -20
- package/test/unit/spec/members/utils.js +191 -4
- package/test/unit/spec/metrics/index.js +104 -20
- package/test/unit/spec/multistream/mediaRequestManager.ts +650 -105
- package/test/unit/spec/multistream/receiveSlot.ts +76 -17
- 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 +5 -5
- package/test/unit/spec/multistream/remoteMediaManager.ts +549 -65
- package/test/unit/spec/networkQualityMonitor/index.js +24 -18
- package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
- package/test/unit/spec/reachability/index.ts +176 -27
- package/test/unit/spec/reachability/request.js +66 -0
- package/test/unit/spec/reconnection-manager/index.js +62 -31
- 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 -16
- package/test/unit/spec/roap/request.ts +217 -0
- package/test/unit/spec/roap/turnDiscovery.ts +93 -49
- package/test/unit/spec/stats-analyzer/index.js +116 -60
- package/test/utils/cmr.js +44 -42
- package/test/utils/constants.js +9 -0
- package/test/utils/integrationTestUtils.js +64 -0
- package/test/utils/testUtils.js +63 -99
- package/test/utils/webex-config.js +22 -18
- package/test/utils/webex-test-users.js +57 -50
- 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 -116
- 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 -92
- package/test/unit/spec/meeting/effectsState.js +0 -291
package/src/members/index.ts
CHANGED
|
@@ -16,48 +16,49 @@ 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
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
22
|
+
* Members Update Event
|
|
23
|
+
* Emitted when something in the roster list needs to be updated
|
|
24
|
+
* @event members:update
|
|
25
|
+
* @instance
|
|
26
|
+
* @property {Object} delta the changes to the members list
|
|
27
|
+
* @property {Array} delta.updated array only the updates, includes removals, as they will have updated status and member properties
|
|
28
|
+
* @property {Array} delta.added array added members to the meeting
|
|
29
|
+
* @property {Array} full array the full members collection
|
|
30
|
+
* @memberof Members
|
|
31
|
+
*/
|
|
31
32
|
|
|
32
33
|
/**
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
34
|
+
* Members Content Update Event
|
|
35
|
+
* Emitted when who is sharing changes
|
|
36
|
+
* @event members:content:update
|
|
37
|
+
* @instance
|
|
38
|
+
* @property {String} activeContentSharingId
|
|
39
|
+
* @property {String} endedContentSharingId
|
|
40
|
+
* @memberof Members
|
|
41
|
+
*/
|
|
41
42
|
|
|
42
43
|
/**
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
44
|
+
* Members Host Update Event
|
|
45
|
+
* Emitted when who is the host changes
|
|
46
|
+
* @event members:host:update
|
|
47
|
+
* @instance
|
|
48
|
+
* @property {String} activeHostId
|
|
49
|
+
* @property {String} endedHostId
|
|
50
|
+
* @memberof Members
|
|
51
|
+
*/
|
|
51
52
|
|
|
52
53
|
/**
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
54
|
+
* Members Self Update Event
|
|
55
|
+
* Emitted when who is the self changes
|
|
56
|
+
* @event members:self:update
|
|
57
|
+
* @instance
|
|
58
|
+
* @property {String} activeSelfId
|
|
59
|
+
* @property {String} endedSelfId
|
|
60
|
+
* @memberof Members
|
|
61
|
+
*/
|
|
61
62
|
|
|
62
63
|
/**
|
|
63
64
|
* @class Members
|
|
@@ -74,6 +75,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
74
75
|
audio: MediaRequestManager;
|
|
75
76
|
video: MediaRequestManager;
|
|
76
77
|
};
|
|
78
|
+
|
|
77
79
|
recordingId: any;
|
|
78
80
|
selfId: any;
|
|
79
81
|
type: any;
|
|
@@ -94,8 +96,8 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
94
96
|
* @type {MembersRequest}
|
|
95
97
|
* @private
|
|
96
98
|
* @memberof Members
|
|
97
|
-
|
|
98
|
-
|
|
99
|
+
*/
|
|
100
|
+
// @ts-ignore
|
|
99
101
|
this.membersRequest = new MembersRequest({}, options);
|
|
100
102
|
/**
|
|
101
103
|
* The Members Collection cache
|
|
@@ -103,7 +105,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
103
105
|
* @type {MembersCollection}
|
|
104
106
|
* @private
|
|
105
107
|
* @memberof Members
|
|
106
|
-
|
|
108
|
+
*/
|
|
107
109
|
this.membersCollection = new MembersCollection();
|
|
108
110
|
/**
|
|
109
111
|
* The current locus url for the active meeting
|
|
@@ -111,7 +113,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
111
113
|
* @type {String}
|
|
112
114
|
* @private
|
|
113
115
|
* @memberof Members
|
|
114
|
-
|
|
116
|
+
*/
|
|
115
117
|
this.locusUrl = attrs.locusUrl || null;
|
|
116
118
|
/**
|
|
117
119
|
* The current hostId for the meeting
|
|
@@ -119,7 +121,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
119
121
|
* @type {String}
|
|
120
122
|
* @private
|
|
121
123
|
* @memberof Members
|
|
122
|
-
|
|
124
|
+
*/
|
|
123
125
|
this.hostId = null;
|
|
124
126
|
/**
|
|
125
127
|
* The current type for the meeting, could be MEETING or CALL
|
|
@@ -127,7 +129,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
127
129
|
* @type {String}
|
|
128
130
|
* @private
|
|
129
131
|
* @memberof Members
|
|
130
|
-
|
|
132
|
+
*/
|
|
131
133
|
this.type = null;
|
|
132
134
|
/**
|
|
133
135
|
* Locus has a self object, sent individually to the client
|
|
@@ -141,7 +143,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
141
143
|
* @type {String}
|
|
142
144
|
* @private
|
|
143
145
|
* @memberof Members
|
|
144
|
-
|
|
146
|
+
*/
|
|
145
147
|
this.selfId = null;
|
|
146
148
|
/**
|
|
147
149
|
* The current mediaShareContentId for the meeting
|
|
@@ -149,7 +151,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
149
151
|
* @type {String}
|
|
150
152
|
* @private
|
|
151
153
|
* @memberof Members
|
|
152
|
-
|
|
154
|
+
*/
|
|
153
155
|
this.mediaShareContentId = null;
|
|
154
156
|
/**
|
|
155
157
|
* The current mediaShareWhiteboardId for the meeting
|
|
@@ -157,7 +159,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
157
159
|
* @type {String}
|
|
158
160
|
* @private
|
|
159
161
|
* @memberof Members
|
|
160
|
-
|
|
162
|
+
*/
|
|
161
163
|
this.mediaShareWhiteboardId = null;
|
|
162
164
|
/**
|
|
163
165
|
* The current recordingId for the meeting, if it exists
|
|
@@ -165,7 +167,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
165
167
|
* @type {String}
|
|
166
168
|
* @private
|
|
167
169
|
* @memberof Members
|
|
168
|
-
|
|
170
|
+
*/
|
|
169
171
|
this.recordingId = null;
|
|
170
172
|
|
|
171
173
|
/**
|
|
@@ -190,7 +192,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
190
192
|
* @private
|
|
191
193
|
* @memberof Members
|
|
192
194
|
*/
|
|
193
|
-
locusSelfUpdate(payload: {
|
|
195
|
+
locusSelfUpdate(payload: {newSelf: any; oldSelf: any}) {
|
|
194
196
|
let newSelfId = null;
|
|
195
197
|
let oldSelfId = null;
|
|
196
198
|
|
|
@@ -221,12 +223,12 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
221
223
|
this,
|
|
222
224
|
{
|
|
223
225
|
file: 'members',
|
|
224
|
-
function: 'locusSelfUpdate'
|
|
226
|
+
function: 'locusSelfUpdate',
|
|
225
227
|
},
|
|
226
228
|
EVENT_TRIGGERS.MEMBERS_SELF_UPDATE,
|
|
227
229
|
{
|
|
228
230
|
activeSelfId: newSelfId,
|
|
229
|
-
endedSelfId: oldSelfId
|
|
231
|
+
endedSelfId: oldSelfId,
|
|
230
232
|
}
|
|
231
233
|
);
|
|
232
234
|
}
|
|
@@ -240,7 +242,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
240
242
|
* @private
|
|
241
243
|
* @memberof Members
|
|
242
244
|
*/
|
|
243
|
-
locusHostUpdate(payload: {
|
|
245
|
+
locusHostUpdate(payload: {newHost: any; oldHost: any}) {
|
|
244
246
|
let newHostId = null;
|
|
245
247
|
let oldHostId = null;
|
|
246
248
|
|
|
@@ -271,16 +273,35 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
271
273
|
this,
|
|
272
274
|
{
|
|
273
275
|
file: 'members',
|
|
274
|
-
function: 'locusHostUpdate'
|
|
276
|
+
function: 'locusHostUpdate',
|
|
275
277
|
},
|
|
276
278
|
EVENT_TRIGGERS.MEMBERS_HOST_UPDATE,
|
|
277
279
|
{
|
|
278
280
|
activeHostId: newHostId,
|
|
279
|
-
endedHostId: oldHostId
|
|
281
|
+
endedHostId: oldHostId,
|
|
280
282
|
}
|
|
281
283
|
);
|
|
282
284
|
}
|
|
283
285
|
|
|
286
|
+
/**
|
|
287
|
+
* clear member collection
|
|
288
|
+
* @returns {void}
|
|
289
|
+
* @private
|
|
290
|
+
* @memberof Members
|
|
291
|
+
*/
|
|
292
|
+
clearMembers() {
|
|
293
|
+
this.membersCollection.reset();
|
|
294
|
+
Trigger.trigger(
|
|
295
|
+
this,
|
|
296
|
+
{
|
|
297
|
+
file: 'members',
|
|
298
|
+
function: 'clearMembers',
|
|
299
|
+
},
|
|
300
|
+
EVENT_TRIGGERS.MEMBERS_CLEAR,
|
|
301
|
+
{}
|
|
302
|
+
);
|
|
303
|
+
}
|
|
304
|
+
|
|
284
305
|
/**
|
|
285
306
|
* when new participant updates come in, both delta and full participants, update them in members collection
|
|
286
307
|
* delta object in the event will have {updated, added} and full will be the full membersCollection
|
|
@@ -290,21 +311,27 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
290
311
|
* @private
|
|
291
312
|
* @memberof Members
|
|
292
313
|
*/
|
|
293
|
-
locusParticipantsUpdate(payload: {
|
|
314
|
+
locusParticipantsUpdate(payload: {participants: object; isReplace?: boolean}) {
|
|
294
315
|
if (payload) {
|
|
316
|
+
if (payload.isReplace) {
|
|
317
|
+
this.clearMembers();
|
|
318
|
+
}
|
|
295
319
|
const delta = this.handleLocusInfoUpdatedParticipants(payload);
|
|
296
320
|
const full = this.handleMembersUpdate(delta); // SDK should propagate the full list for both delta and non delta updates
|
|
297
321
|
|
|
322
|
+
this.receiveSlotManager?.updateMemberIds();
|
|
323
|
+
|
|
298
324
|
Trigger.trigger(
|
|
299
325
|
this,
|
|
300
326
|
{
|
|
301
327
|
file: 'members',
|
|
302
|
-
function: 'locusParticipantsUpdate'
|
|
328
|
+
function: 'locusParticipantsUpdate',
|
|
303
329
|
},
|
|
304
330
|
EVENT_TRIGGERS.MEMBERS_UPDATE,
|
|
305
331
|
{
|
|
306
332
|
delta,
|
|
307
|
-
full
|
|
333
|
+
full,
|
|
334
|
+
isReplace: !!payload.isReplace,
|
|
308
335
|
}
|
|
309
336
|
);
|
|
310
337
|
}
|
|
@@ -319,7 +346,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
319
346
|
* @private
|
|
320
347
|
* @memberof Members
|
|
321
348
|
*/
|
|
322
|
-
locusMediaSharesUpdate(payload: {
|
|
349
|
+
locusMediaSharesUpdate(payload: {current: any; previous: any}) {
|
|
323
350
|
const currentContent = payload.current?.content;
|
|
324
351
|
const previousContent = payload.previous?.content;
|
|
325
352
|
const currentWhiteboard = payload.current?.whiteboard;
|
|
@@ -338,8 +365,10 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
338
365
|
if (currentContent.disposition === FLOOR_ACTION.RELEASED) {
|
|
339
366
|
whoStopped = currentContent.beneficiaryId;
|
|
340
367
|
this.mediaShareContentId = null;
|
|
341
|
-
}
|
|
342
|
-
|
|
368
|
+
} else if (
|
|
369
|
+
currentContent.disposition === FLOOR_ACTION.GRANTED &&
|
|
370
|
+
currentContent.beneficiaryId !== previousContent.beneficiaryId
|
|
371
|
+
) {
|
|
343
372
|
whoStopped = previousContent.beneficiaryId;
|
|
344
373
|
}
|
|
345
374
|
}
|
|
@@ -356,8 +385,10 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
356
385
|
if (currentWhiteboard.disposition === FLOOR_ACTION.RELEASED) {
|
|
357
386
|
whoStopped = currentWhiteboard.beneficiaryId;
|
|
358
387
|
this.mediaShareWhiteboardId = null;
|
|
359
|
-
}
|
|
360
|
-
|
|
388
|
+
} else if (
|
|
389
|
+
currentWhiteboard.disposition === FLOOR_ACTION.GRANTED &&
|
|
390
|
+
currentWhiteboard.beneficiaryId !== previousWhiteboard.beneficiaryId
|
|
391
|
+
) {
|
|
361
392
|
whoStopped = previousWhiteboard.beneficiaryId;
|
|
362
393
|
}
|
|
363
394
|
}
|
|
@@ -382,17 +413,16 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
382
413
|
this,
|
|
383
414
|
{
|
|
384
415
|
file: 'members',
|
|
385
|
-
function: 'locusMediaSharesUpdate'
|
|
416
|
+
function: 'locusMediaSharesUpdate',
|
|
386
417
|
},
|
|
387
418
|
EVENT_TRIGGERS.MEMBERS_CONTENT_UPDATE,
|
|
388
419
|
{
|
|
389
420
|
activeSharingId: whoSharing,
|
|
390
|
-
endedSharingId: whoStopped
|
|
421
|
+
endedSharingId: whoStopped,
|
|
391
422
|
}
|
|
392
423
|
);
|
|
393
424
|
}
|
|
394
425
|
|
|
395
|
-
|
|
396
426
|
/**
|
|
397
427
|
* Internal update the locus url value
|
|
398
428
|
* @param {Object} payload
|
|
@@ -415,7 +445,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
415
445
|
* @private
|
|
416
446
|
* @memberof Members
|
|
417
447
|
*/
|
|
418
|
-
locusFullStateTypeUpdate(payload: {
|
|
448
|
+
locusFullStateTypeUpdate(payload: {type: string}) {
|
|
419
449
|
// TODO: at some point there could be a timing issue here, for updating each member
|
|
420
450
|
// ie., if the type changes AND there is no locus update, then each member will not know the type of call
|
|
421
451
|
// which means they cannot determine isMutable && isRemovable
|
|
@@ -472,7 +502,9 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
472
502
|
this.selfId = payload.selfId || this.selfId;
|
|
473
503
|
this.recordingId = payload.recordingId;
|
|
474
504
|
if (!payload.participants) {
|
|
475
|
-
LoggerProxy.logger.warn(
|
|
505
|
+
LoggerProxy.logger.warn(
|
|
506
|
+
'Members:index#handleLocusInfoUpdatedParticipants --> participants payload is missing.'
|
|
507
|
+
);
|
|
476
508
|
}
|
|
477
509
|
const memberUpdate = this.update(payload.participants);
|
|
478
510
|
|
|
@@ -491,12 +523,12 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
491
523
|
public setLocusUrl(locus: any, locusUrl: string = null) {
|
|
492
524
|
if (locusUrl) {
|
|
493
525
|
this.locusUrl = locusUrl;
|
|
494
|
-
}
|
|
495
|
-
else if (locus && (locus.locusUrl || locus.url)) {
|
|
526
|
+
} else if (locus && (locus.locusUrl || locus.url)) {
|
|
496
527
|
this.locusUrl = locus.locusUrl || locus.url;
|
|
497
|
-
}
|
|
498
|
-
|
|
499
|
-
|
|
528
|
+
} else {
|
|
529
|
+
throw new ParameterError(
|
|
530
|
+
'Setting locusUrl for the Members module should be done with a locus object or locusUrl'
|
|
531
|
+
);
|
|
500
532
|
}
|
|
501
533
|
}
|
|
502
534
|
|
|
@@ -512,12 +544,12 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
512
544
|
public setHostId(locus: any, hostId: string = null) {
|
|
513
545
|
if (hostId) {
|
|
514
546
|
this.hostId = hostId;
|
|
515
|
-
}
|
|
516
|
-
else if (locus) {
|
|
547
|
+
} else if (locus) {
|
|
517
548
|
this.hostId = locus && locus.owner && locus.owner.info ? locus.owner.info : null;
|
|
518
|
-
}
|
|
519
|
-
|
|
520
|
-
|
|
549
|
+
} else {
|
|
550
|
+
throw new ParameterError(
|
|
551
|
+
'Setting hostid for the Members module should be done with a locus object or hostId'
|
|
552
|
+
);
|
|
521
553
|
}
|
|
522
554
|
}
|
|
523
555
|
|
|
@@ -533,12 +565,12 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
533
565
|
public setType(fullState: any, type: string = null) {
|
|
534
566
|
if (type) {
|
|
535
567
|
this.type = type;
|
|
536
|
-
}
|
|
537
|
-
else if (fullState) {
|
|
568
|
+
} else if (fullState) {
|
|
538
569
|
this.type = (fullState && fullState.type) || null;
|
|
539
|
-
}
|
|
540
|
-
|
|
541
|
-
|
|
570
|
+
} else {
|
|
571
|
+
throw new ParameterError(
|
|
572
|
+
'Setting type for the Members module should be done with a fullstate object or type string'
|
|
573
|
+
);
|
|
542
574
|
}
|
|
543
575
|
}
|
|
544
576
|
|
|
@@ -553,12 +585,15 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
553
585
|
setSelfId(locus: any, selfId: string = null) {
|
|
554
586
|
if (selfId) {
|
|
555
587
|
this.selfId = selfId;
|
|
556
|
-
}
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
588
|
+
} else if (locus) {
|
|
589
|
+
this.selfId =
|
|
590
|
+
locus && locus.self && locus.self.person && locus.self.person.id
|
|
591
|
+
? locus.self.person.id
|
|
592
|
+
: null;
|
|
593
|
+
} else {
|
|
594
|
+
throw new ParameterError(
|
|
595
|
+
'Setting selfid for the Members module should be done with a locus object or selfId'
|
|
596
|
+
);
|
|
562
597
|
}
|
|
563
598
|
}
|
|
564
599
|
|
|
@@ -573,8 +608,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
573
608
|
setMediaShareContentId(locus: any, contentId?: string) {
|
|
574
609
|
if (contentId) {
|
|
575
610
|
this.mediaShareContentId = contentId;
|
|
576
|
-
}
|
|
577
|
-
else if (locus) {
|
|
611
|
+
} else if (locus) {
|
|
578
612
|
const contentMediaShare =
|
|
579
613
|
locus.mediaShares &&
|
|
580
614
|
locus.mediaShares.length &&
|
|
@@ -586,9 +620,10 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
586
620
|
contentMediaShare.floor.beneficiary &&
|
|
587
621
|
contentMediaShare.floor.beneficiary.id) ||
|
|
588
622
|
null;
|
|
589
|
-
}
|
|
590
|
-
|
|
591
|
-
|
|
623
|
+
} else {
|
|
624
|
+
throw new ParameterError(
|
|
625
|
+
'Setting hostid for the Members module should be done with a locus object or hostId'
|
|
626
|
+
);
|
|
592
627
|
}
|
|
593
628
|
}
|
|
594
629
|
|
|
@@ -603,8 +638,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
603
638
|
setMediaShareWhiteboardId(locus: any, whiteboardId?: string) {
|
|
604
639
|
if (whiteboardId) {
|
|
605
640
|
this.mediaShareWhiteboardId = whiteboardId;
|
|
606
|
-
}
|
|
607
|
-
else if (locus) {
|
|
641
|
+
} else if (locus) {
|
|
608
642
|
const whiteboardMediaShare =
|
|
609
643
|
locus.mediaShares &&
|
|
610
644
|
locus.mediaShares.length &&
|
|
@@ -616,9 +650,10 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
616
650
|
whiteboardMediaShare.floor.beneficiary &&
|
|
617
651
|
whiteboardMediaShare.floor.beneficiary.id) ||
|
|
618
652
|
null;
|
|
619
|
-
}
|
|
620
|
-
|
|
621
|
-
|
|
653
|
+
} else {
|
|
654
|
+
throw new ParameterError(
|
|
655
|
+
'Setting hostid for the Members module should be done with a locus object or hostId'
|
|
656
|
+
);
|
|
622
657
|
}
|
|
623
658
|
}
|
|
624
659
|
|
|
@@ -651,11 +686,10 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
651
686
|
hostId: this.hostId,
|
|
652
687
|
contentSharingId: this.mediaShareContentId,
|
|
653
688
|
whiteboardSharingId: this.mediaShareWhiteboardId,
|
|
654
|
-
type: this.type
|
|
689
|
+
type: this.type,
|
|
655
690
|
})
|
|
656
691
|
);
|
|
657
|
-
}
|
|
658
|
-
else {
|
|
692
|
+
} else {
|
|
659
693
|
membersUpdate.added.push(
|
|
660
694
|
new Member(participant, {
|
|
661
695
|
recordingId: this.recordingId,
|
|
@@ -663,7 +697,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
663
697
|
hostId: this.hostId,
|
|
664
698
|
contentSharingId: this.mediaShareContentId,
|
|
665
699
|
whiteboardSharingId: this.mediaShareWhiteboardId,
|
|
666
|
-
type: this.type
|
|
700
|
+
type: this.type,
|
|
667
701
|
})
|
|
668
702
|
);
|
|
669
703
|
}
|
|
@@ -682,11 +716,15 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
682
716
|
*/
|
|
683
717
|
addMember(invitee: any, alertIfActive?: boolean) {
|
|
684
718
|
if (!this.locusUrl) {
|
|
685
|
-
return Promise.reject(
|
|
719
|
+
return Promise.reject(
|
|
720
|
+
new ParameterError('The associated locus url for this meeting object must be defined.')
|
|
721
|
+
);
|
|
686
722
|
}
|
|
687
723
|
if (MembersUtil.isInvalidInvitee(invitee)) {
|
|
688
724
|
return Promise.reject(
|
|
689
|
-
new ParameterError(
|
|
725
|
+
new ParameterError(
|
|
726
|
+
'The invitee must be defined with either a valid email, emailAddress or phoneNumber property.'
|
|
727
|
+
)
|
|
690
728
|
);
|
|
691
729
|
}
|
|
692
730
|
const options = MembersUtil.generateAddMemberOptions(invitee, this.locusUrl, alertIfActive);
|
|
@@ -702,7 +740,9 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
702
740
|
*/
|
|
703
741
|
cancelPhoneInvite(invitee: any) {
|
|
704
742
|
if (!this.locusUrl) {
|
|
705
|
-
return Promise.reject(
|
|
743
|
+
return Promise.reject(
|
|
744
|
+
new ParameterError('The associated locus url for this meeting object must be defined.')
|
|
745
|
+
);
|
|
706
746
|
}
|
|
707
747
|
if (MembersUtil.isInvalidInvitee(invitee)) {
|
|
708
748
|
return Promise.reject(
|
|
@@ -711,22 +751,28 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
711
751
|
}
|
|
712
752
|
const options = MembersUtil.cancelPhoneInviteOptions(invitee, this.locusUrl);
|
|
713
753
|
|
|
714
|
-
|
|
715
754
|
return this.membersRequest.cancelPhoneInvite(options);
|
|
716
755
|
}
|
|
717
756
|
|
|
718
757
|
/**
|
|
719
758
|
* Admits waiting members (invited guests to meeting)
|
|
720
759
|
* @param {Array} memberIds
|
|
760
|
+
* @param {Object} sessionLocusUrls: {authorizingLocusUrl, mainLocusUrl}
|
|
721
761
|
* @returns {Promise}
|
|
722
762
|
* @public
|
|
723
763
|
* @memberof Members
|
|
724
764
|
*/
|
|
725
|
-
public admitMembers(
|
|
765
|
+
public admitMembers(
|
|
766
|
+
memberIds: Array<any>,
|
|
767
|
+
sessionLocusUrls?: {authorizingLocusUrl: string; mainLocusUrl: string}
|
|
768
|
+
) {
|
|
726
769
|
if (isEmpty(memberIds)) {
|
|
727
770
|
return Promise.reject(new ParameterError('No member ids provided to admit.'));
|
|
728
771
|
}
|
|
729
|
-
const options =
|
|
772
|
+
const options = {
|
|
773
|
+
sessionLocusUrls,
|
|
774
|
+
...MembersUtil.generateAdmitMemberOptions(memberIds, this.locusUrl),
|
|
775
|
+
};
|
|
730
776
|
|
|
731
777
|
return this.membersRequest.admitMember(options);
|
|
732
778
|
}
|
|
@@ -740,10 +786,14 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
740
786
|
*/
|
|
741
787
|
public removeMember(memberId: string) {
|
|
742
788
|
if (!this.locusUrl) {
|
|
743
|
-
return Promise.reject(
|
|
789
|
+
return Promise.reject(
|
|
790
|
+
new ParameterError('The associated locus url for this meeting object must be defined.')
|
|
791
|
+
);
|
|
744
792
|
}
|
|
745
793
|
if (!memberId) {
|
|
746
|
-
return Promise.reject(
|
|
794
|
+
return Promise.reject(
|
|
795
|
+
new ParameterError('The member id must be defined to remove the member.')
|
|
796
|
+
);
|
|
747
797
|
}
|
|
748
798
|
const options = MembersUtil.generateRemoveMemberOptions(memberId, this.locusUrl);
|
|
749
799
|
|
|
@@ -754,22 +804,55 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
754
804
|
* Audio mutes another member in a meeting
|
|
755
805
|
* @param {String} memberId
|
|
756
806
|
* @param {boolean} [mute] default true
|
|
807
|
+
* @param {boolean} [isAudio] default true
|
|
757
808
|
* @returns {Promise}
|
|
758
809
|
* @public
|
|
759
810
|
* @memberof Members
|
|
760
811
|
*/
|
|
761
|
-
public muteMember(memberId: string, mute
|
|
812
|
+
public muteMember(memberId: string, mute = true, isAudio = true) {
|
|
762
813
|
if (!this.locusUrl) {
|
|
763
|
-
return Promise.reject(
|
|
814
|
+
return Promise.reject(
|
|
815
|
+
new ParameterError(
|
|
816
|
+
'The associated locus url for this meetings members object must be defined.'
|
|
817
|
+
)
|
|
818
|
+
);
|
|
764
819
|
}
|
|
765
820
|
if (!memberId) {
|
|
766
|
-
return Promise.reject(
|
|
821
|
+
return Promise.reject(
|
|
822
|
+
new ParameterError('The member id must be defined to mute the member.')
|
|
823
|
+
);
|
|
767
824
|
}
|
|
768
|
-
const options = MembersUtil.generateMuteMemberOptions(memberId, mute, this.locusUrl);
|
|
825
|
+
const options = MembersUtil.generateMuteMemberOptions(memberId, mute, this.locusUrl, isAudio);
|
|
769
826
|
|
|
770
827
|
return this.membersRequest.muteMember(options);
|
|
771
828
|
}
|
|
772
829
|
|
|
830
|
+
/**
|
|
831
|
+
* Assign role(s) to a member in the meeting
|
|
832
|
+
* @param {String} memberId
|
|
833
|
+
* @param {[ServerRoleShape]} roles - to assign an array of roles
|
|
834
|
+
* @returns {Promise}
|
|
835
|
+
* @public
|
|
836
|
+
* @memberof Members
|
|
837
|
+
*/
|
|
838
|
+
public assignRoles(memberId: string, roles: Array<ServerRoleShape>) {
|
|
839
|
+
if (!this.locusUrl) {
|
|
840
|
+
return Promise.reject(
|
|
841
|
+
new ParameterError(
|
|
842
|
+
'The associated locus url for this meetings members object must be defined.'
|
|
843
|
+
)
|
|
844
|
+
);
|
|
845
|
+
}
|
|
846
|
+
if (!memberId) {
|
|
847
|
+
return Promise.reject(
|
|
848
|
+
new ParameterError('The member id must be defined to assign the roles to a member.')
|
|
849
|
+
);
|
|
850
|
+
}
|
|
851
|
+
const options = MembersUtil.generateRoleAssignmentMemberOptions(memberId, roles, this.locusUrl);
|
|
852
|
+
|
|
853
|
+
return this.membersRequest.assignRolesMember(options);
|
|
854
|
+
}
|
|
855
|
+
|
|
773
856
|
/**
|
|
774
857
|
* Raise or lower the hand of a member in a meeting
|
|
775
858
|
* @param {String} memberId
|
|
@@ -778,12 +861,18 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
778
861
|
* @public
|
|
779
862
|
* @memberof Members
|
|
780
863
|
*/
|
|
781
|
-
public raiseOrLowerHand(memberId: string, raise
|
|
864
|
+
public raiseOrLowerHand(memberId: string, raise = true) {
|
|
782
865
|
if (!this.locusUrl) {
|
|
783
|
-
return Promise.reject(
|
|
866
|
+
return Promise.reject(
|
|
867
|
+
new ParameterError(
|
|
868
|
+
'The associated locus url for this meetings members object must be defined.'
|
|
869
|
+
)
|
|
870
|
+
);
|
|
784
871
|
}
|
|
785
872
|
if (!memberId) {
|
|
786
|
-
return Promise.reject(
|
|
873
|
+
return Promise.reject(
|
|
874
|
+
new ParameterError('The member id must be defined to raise/lower the hand of the member.')
|
|
875
|
+
);
|
|
787
876
|
}
|
|
788
877
|
const options = MembersUtil.generateRaiseHandMemberOptions(memberId, raise, this.locusUrl);
|
|
789
878
|
|
|
@@ -799,17 +888,27 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
799
888
|
*/
|
|
800
889
|
public lowerAllHands(requestingMemberId: string) {
|
|
801
890
|
if (!this.locusUrl) {
|
|
802
|
-
return Promise.reject(
|
|
891
|
+
return Promise.reject(
|
|
892
|
+
new ParameterError(
|
|
893
|
+
'The associated locus url for this meetings members object must be defined.'
|
|
894
|
+
)
|
|
895
|
+
);
|
|
803
896
|
}
|
|
804
897
|
if (!requestingMemberId) {
|
|
805
|
-
return Promise.reject(
|
|
898
|
+
return Promise.reject(
|
|
899
|
+
new ParameterError(
|
|
900
|
+
'The requestingMemberId must be defined to lower all hands in a meeting.'
|
|
901
|
+
)
|
|
902
|
+
);
|
|
806
903
|
}
|
|
807
|
-
const options = MembersUtil.generateLowerAllHandsMemberOptions(
|
|
904
|
+
const options = MembersUtil.generateLowerAllHandsMemberOptions(
|
|
905
|
+
requestingMemberId,
|
|
906
|
+
this.locusUrl
|
|
907
|
+
);
|
|
808
908
|
|
|
809
909
|
return this.membersRequest.lowerAllHandsMember(options);
|
|
810
910
|
}
|
|
811
911
|
|
|
812
|
-
|
|
813
912
|
/**
|
|
814
913
|
* Transfers the host to another member
|
|
815
914
|
* @param {String} memberId
|
|
@@ -818,19 +917,28 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
818
917
|
* @public
|
|
819
918
|
* @memberof Members
|
|
820
919
|
*/
|
|
821
|
-
public transferHostToMember(memberId: string, moderator
|
|
920
|
+
public transferHostToMember(memberId: string, moderator = true) {
|
|
822
921
|
if (!this.locusUrl) {
|
|
823
|
-
return Promise.reject(
|
|
922
|
+
return Promise.reject(
|
|
923
|
+
new ParameterError(
|
|
924
|
+
'The associated locus url for this meetings members object must be defined.'
|
|
925
|
+
)
|
|
926
|
+
);
|
|
824
927
|
}
|
|
825
928
|
if (!memberId) {
|
|
826
|
-
return Promise.reject(
|
|
929
|
+
return Promise.reject(
|
|
930
|
+
new ParameterError('The member id must be defined to transfer host to the member.')
|
|
931
|
+
);
|
|
827
932
|
}
|
|
828
|
-
const options = MembersUtil.generateTransferHostMemberOptions(
|
|
933
|
+
const options = MembersUtil.generateTransferHostMemberOptions(
|
|
934
|
+
memberId,
|
|
935
|
+
moderator,
|
|
936
|
+
this.locusUrl
|
|
937
|
+
);
|
|
829
938
|
|
|
830
939
|
return this.membersRequest.transferHostToMember(options);
|
|
831
940
|
}
|
|
832
941
|
|
|
833
|
-
|
|
834
942
|
/**
|
|
835
943
|
* Sends DTMF tones for the PSTN member of a meeting
|
|
836
944
|
* @param {String} tones a string of one or more DTMF tones to send
|
|
@@ -839,7 +947,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
839
947
|
* @public
|
|
840
948
|
* @memberof Members
|
|
841
949
|
*/
|
|
842
|
-
public sendDialPadKey(tones
|
|
950
|
+
public sendDialPadKey(tones = '', memberId = '') {
|
|
843
951
|
// @ts-ignore
|
|
844
952
|
if (!tones && tones !== 0) {
|
|
845
953
|
return Promise.reject(new ParameterError('DMTF tones must be passed in'));
|
|
@@ -863,7 +971,11 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
863
971
|
return this.membersRequest.sendDialPadKey(options);
|
|
864
972
|
}
|
|
865
973
|
|
|
866
|
-
return Promise.reject(
|
|
974
|
+
return Promise.reject(
|
|
975
|
+
new Error(
|
|
976
|
+
'Members:index#sendDialPadKey --> cannot send DTMF, meeting does not have a connection to the "locus" call control service.'
|
|
977
|
+
)
|
|
978
|
+
);
|
|
867
979
|
}
|
|
868
980
|
|
|
869
981
|
/** Finds a member that has any device with a csi matching provided value
|
|
@@ -872,10 +984,12 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
872
984
|
* @returns {Member}
|
|
873
985
|
*/
|
|
874
986
|
findMemberByCsi(csi) {
|
|
875
|
-
return Object.values(this.membersCollection.getAll())
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
987
|
+
return Object.values(this.membersCollection.getAll()).find((member) =>
|
|
988
|
+
// @ts-ignore
|
|
989
|
+
member.participant?.devices?.find((device) =>
|
|
990
|
+
device.csis?.find((memberCsi) => memberCsi === csi)
|
|
991
|
+
)
|
|
992
|
+
);
|
|
879
993
|
}
|
|
880
994
|
|
|
881
995
|
/**
|
|
@@ -892,7 +1006,10 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
892
1006
|
this.membersCollection.get(memberId)?.participant?.devices?.forEach((device) => {
|
|
893
1007
|
if (device.mediaSessions) {
|
|
894
1008
|
const deviceCsis = device.mediaSessions
|
|
895
|
-
?.filter(
|
|
1009
|
+
?.filter(
|
|
1010
|
+
(mediaSession) =>
|
|
1011
|
+
mediaSession.mediaType === mediaType && mediaSession.mediaContent === mediaContent
|
|
1012
|
+
)
|
|
896
1013
|
.map((mediaSession) => mediaSession.csi);
|
|
897
1014
|
|
|
898
1015
|
csis.push(...deviceCsis);
|
|
@@ -901,4 +1018,39 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
901
1018
|
|
|
902
1019
|
return csis;
|
|
903
1020
|
}
|
|
1021
|
+
|
|
1022
|
+
/**
|
|
1023
|
+
* Edit display name of participants in a meeting
|
|
1024
|
+
* @param {string} memberId - id of the participant who is receiving request
|
|
1025
|
+
* @param {string} requestingParticipantId - id of the participant who is sending request (optional)
|
|
1026
|
+
* @param {string} [alias] - alias name
|
|
1027
|
+
* @returns {Promise}
|
|
1028
|
+
* @public
|
|
1029
|
+
* @memberof Members
|
|
1030
|
+
*/
|
|
1031
|
+
public editDisplayName(memberId: string, requestingParticipantId: string, alias: string) {
|
|
1032
|
+
if (!this.locusUrl) {
|
|
1033
|
+
return Promise.reject(
|
|
1034
|
+
new ParameterError(
|
|
1035
|
+
'The associated locus url for this meetings members object must be defined.'
|
|
1036
|
+
)
|
|
1037
|
+
);
|
|
1038
|
+
}
|
|
1039
|
+
if (!memberId) {
|
|
1040
|
+
return Promise.reject(
|
|
1041
|
+
new ParameterError('The member id must be defined to edit display name of the member.')
|
|
1042
|
+
);
|
|
1043
|
+
}
|
|
1044
|
+
|
|
1045
|
+
const {locusUrl} = this;
|
|
1046
|
+
|
|
1047
|
+
const options = MembersUtil.generateEditDisplayNameMemberOptions(
|
|
1048
|
+
memberId,
|
|
1049
|
+
requestingParticipantId,
|
|
1050
|
+
alias,
|
|
1051
|
+
locusUrl
|
|
1052
|
+
);
|
|
1053
|
+
|
|
1054
|
+
return this.membersRequest.editDisplayNameMember(options);
|
|
1055
|
+
}
|
|
904
1056
|
}
|