@webex/plugin-meetings 3.0.0-beta.1 → 3.0.0-beta.104
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 +919 -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 +10 -24
- package/dist/common/errors/captcha-error.js.map +1 -1
- package/dist/common/errors/intent-to-join.js +11 -24
- package/dist/common/errors/intent-to-join.js.map +1 -1
- package/dist/common/errors/join-meeting.js +12 -25
- package/dist/common/errors/join-meeting.js.map +1 -1
- package/dist/common/errors/media.js +10 -24
- 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 +10 -24
- package/dist/common/errors/password-error.js.map +1 -1
- package/dist/common/errors/permission.js +9 -23
- 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 +10 -24
- package/dist/common/errors/reconnection.js.map +1 -1
- package/dist/common/errors/stats.js +10 -24
- package/dist/common/errors/stats.js.map +1 -1
- package/dist/common/errors/webex-errors.js +10 -69
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/common/errors/webex-meetings-error.js +5 -25
- 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 +37 -60
- 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 -6
- package/dist/config.js.map +1 -1
- package/dist/constants.js +184 -122
- 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 +25 -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 +250 -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 +56 -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 +362 -208
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js +3 -37
- 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 +92 -118
- 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 +113 -337
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +96 -135
- package/dist/media/properties.js.map +1 -1
- package/dist/media/util.js +1 -35
- 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 +59 -14
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +2909 -2398
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/muteState.js +257 -112
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +330 -264
- 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 +63 -261
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/collection.js +6 -25
- package/dist/meeting-info/collection.js.map +1 -1
- package/dist/meeting-info/index.js +14 -32
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +273 -280
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/request.js +3 -15
- 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 +26 -19
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.js +741 -548
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/request.js +26 -41
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +194 -149
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +100 -85
- 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 +90 -68
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.js +13 -12
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +227 -188
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +54 -39
- 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 +5 -14
- 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 +67 -159
- package/dist/metrics/index.js.map +1 -1
- package/dist/multistream/mediaRequestManager.js +250 -0
- package/dist/multistream/mediaRequestManager.js.map +1 -0
- package/dist/multistream/receiveSlot.js +202 -0
- package/dist/multistream/receiveSlot.js.map +1 -0
- package/dist/multistream/receiveSlotManager.js +176 -0
- package/dist/multistream/receiveSlotManager.js.map +1 -0
- package/dist/multistream/remoteMedia.js +270 -0
- package/dist/multistream/remoteMedia.js.map +1 -0
- package/dist/multistream/remoteMediaGroup.js +209 -0
- package/dist/multistream/remoteMediaGroup.js.map +1 -0
- package/dist/multistream/remoteMediaManager.js +1137 -0
- package/dist/multistream/remoteMediaManager.js.map +1 -0
- package/dist/networkQualityMonitor/index.js +40 -59
- package/dist/networkQualityMonitor/index.js.map +1 -1
- package/dist/personal-meeting-room/index.js +21 -45
- package/dist/personal-meeting-room/index.js.map +1 -1
- package/dist/personal-meeting-room/request.js +1 -31
- 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 +192 -191
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.js +15 -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 +109 -0
- package/dist/reactions/reactions.js.map +1 -0
- package/dist/reactions/reactions.type.js +36 -0
- package/dist/reactions/reactions.type.js.map +1 -0
- package/dist/reconnection-manager/index.js +386 -527
- 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 +84 -286
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +138 -238
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/turnDiscovery.js +164 -102
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/statsAnalyzer/global.js +1 -93
- package/dist/statsAnalyzer/global.js.map +1 -1
- package/dist/statsAnalyzer/index.js +399 -470
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js +143 -87
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/transcription/index.js +22 -47
- 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 +968 -0
- package/dist/types/controls-options-manager/constants.d.ts +4 -0
- package/dist/types/controls-options-manager/enums.d.ts +13 -0
- package/dist/types/controls-options-manager/index.d.ts +136 -0
- package/dist/types/controls-options-manager/types.d.ts +37 -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 +129 -0
- package/dist/types/meeting/index.d.ts +1748 -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 +112 -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 +156 -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 +172 -0
- package/dist/types/metrics/constants.d.ts +54 -0
- package/dist/types/metrics/index.d.ts +152 -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 +29 -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 +219 -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 +823 -0
- package/src/breakouts/request.ts +55 -0
- package/src/breakouts/utils.ts +57 -0
- package/src/common/{browser-detection.js → browser-detection.ts} +9 -6
- package/src/common/collection.ts +9 -7
- package/src/common/{config.js → config.ts} +1 -1
- package/src/common/errors/{captcha-error.js → captcha-error.ts} +11 -7
- package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +12 -7
- package/src/common/errors/{join-meeting.js → join-meeting.ts} +17 -8
- package/src/common/errors/{media.js → media.ts} +11 -7
- package/src/common/errors/parameter.ts +11 -7
- package/src/common/errors/{password-error.js → password-error.ts} +11 -7
- package/src/common/errors/{permission.js → permission.ts} +10 -6
- package/src/common/errors/{reconnection.js → reconnection.ts} +11 -7
- package/src/common/errors/{stats.js → stats.ts} +11 -7
- package/src/common/errors/{webex-errors.js → webex-errors.ts} +8 -25
- package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +4 -2
- package/src/common/events/{events-scope.js → events-scope.ts} +6 -2
- package/src/common/events/{events.js → events.ts} +5 -1
- package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +9 -5
- package/src/common/events/{util.js → util.ts} +2 -3
- package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
- package/src/common/logs/logger-proxy.ts +44 -0
- package/src/common/logs/{request.js → request.ts} +22 -9
- package/src/common/queue.ts +1 -2
- package/src/{config.js → config.ts} +18 -12
- package/src/constants.ts +256 -183
- package/src/controls-options-manager/constants.ts +5 -0
- package/src/controls-options-manager/enums.ts +16 -0
- package/src/controls-options-manager/index.ts +278 -0
- package/src/controls-options-manager/types.ts +49 -0
- package/src/controls-options-manager/util.ts +229 -0
- package/src/index.ts +33 -0
- package/src/locus-info/controlsUtils.ts +169 -0
- package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
- package/src/locus-info/{fullState.js → fullState.ts} +16 -12
- package/src/locus-info/{hostUtils.js → hostUtils.ts} +9 -8
- package/src/locus-info/{index.js → index.ts} +331 -80
- package/src/locus-info/{infoUtils.js → infoUtils.ts} +19 -8
- package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +17 -17
- package/src/locus-info/{parser.js → parser.ts} +67 -79
- package/src/locus-info/{selfUtils.js → selfUtils.ts} +196 -67
- package/src/media/index.ts +488 -0
- package/src/media/{properties.js → properties.ts} +67 -54
- package/src/media/util.ts +16 -0
- package/src/mediaQualityMetrics/config.ts +384 -0
- package/src/meeting/in-meeting-actions.ts +123 -3
- package/src/meeting/{index.js → index.ts} +3334 -1775
- package/src/meeting/muteState.ts +526 -0
- package/src/meeting/{request.js → request.ts} +350 -142
- package/src/meeting/request.type.ts +13 -0
- package/src/meeting/{state.js → state.ts} +50 -35
- package/src/meeting/{util.js → util.ts} +126 -159
- package/src/meeting-info/{collection.js → collection.ts} +6 -2
- package/src/meeting-info/{index.js → index.ts} +42 -36
- package/src/meeting-info/meeting-info-v2.ts +345 -0
- package/src/meeting-info/{request.js → request.ts} +14 -4
- package/src/meeting-info/{util.js → util.ts} +60 -51
- package/src/meeting-info/{utilv2.js → utilv2.ts} +76 -60
- package/src/meetings/{collection.js → collection.ts} +26 -3
- package/src/meetings/index.ts +1394 -0
- package/src/meetings/{request.js → request.ts} +34 -25
- package/src/meetings/util.ts +288 -0
- package/src/member/{index.js → index.ts} +124 -56
- package/src/member/types.ts +24 -0
- package/src/member/{util.js → util.ts} +105 -25
- package/src/members/{collection.js → collection.ts} +10 -2
- package/src/members/{index.js → index.ts} +359 -139
- package/src/members/request.ts +215 -0
- package/src/members/types.ts +28 -0
- package/src/members/{util.js → util.ts} +145 -54
- package/src/metrics/{config.js → config.ts} +256 -92
- package/src/metrics/{constants.js → constants.ts} +1 -6
- package/src/metrics/{index.js → index.ts} +116 -97
- package/src/multistream/mediaRequestManager.ts +324 -0
- package/src/multistream/receiveSlot.ts +184 -0
- package/src/multistream/receiveSlotManager.ts +166 -0
- package/src/multistream/remoteMedia.ts +254 -0
- package/src/multistream/remoteMediaGroup.ts +225 -0
- package/src/multistream/remoteMediaManager.ts +1075 -0
- package/src/networkQualityMonitor/{index.js → index.ts} +41 -29
- package/src/personal-meeting-room/{index.js → index.ts} +28 -19
- package/src/personal-meeting-room/{request.js → request.ts} +13 -4
- package/src/personal-meeting-room/{util.js → util.ts} +4 -4
- package/src/reachability/{index.js → index.ts} +157 -94
- package/src/reachability/request.ts +46 -35
- package/src/reactions/constants.ts +4 -0
- package/src/reactions/reactions.ts +104 -0
- package/src/reactions/reactions.type.ts +62 -0
- package/src/reconnection-manager/{index.js → index.ts} +261 -163
- 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 +241 -0
- package/src/roap/request.ts +172 -0
- package/src/roap/turnDiscovery.ts +127 -53
- package/src/statsAnalyzer/global.ts +37 -0
- package/src/statsAnalyzer/index.ts +1273 -0
- package/src/statsAnalyzer/mqaUtil.ts +291 -0
- package/src/transcription/{index.js → index.ts} +46 -39
- package/test/integration/spec/converged-space-meetings.js +177 -0
- package/test/integration/spec/journey.js +666 -464
- package/test/integration/spec/space-meeting.js +321 -206
- 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 +1504 -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 +403 -0
- package/test/unit/spec/fixture/locus.js +92 -90
- package/test/unit/spec/locus-info/controlsUtils.js +177 -32
- package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
- package/test/unit/spec/locus-info/index.js +493 -3
- package/test/unit/spec/locus-info/infoUtils.js +41 -32
- 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 +303 -0
- package/test/unit/spec/media/properties.ts +73 -82
- package/test/unit/spec/meeting/in-meeting-actions.ts +58 -3
- package/test/unit/spec/meeting/index.js +3127 -975
- package/test/unit/spec/meeting/muteState.js +375 -70
- package/test/unit/spec/meeting/request.js +217 -43
- package/test/unit/spec/meeting/utils.js +205 -163
- package/test/unit/spec/meeting-info/meetinginfov2.js +268 -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 -333
- 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 +359 -32
- package/test/unit/spec/members/index.js +547 -37
- 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 +46 -20
- package/test/unit/spec/multistream/mediaRequestManager.ts +1060 -0
- package/test/unit/spec/multistream/receiveSlot.ts +163 -0
- package/test/unit/spec/multistream/receiveSlotManager.ts +203 -0
- package/test/unit/spec/multistream/remoteMedia.ts +255 -0
- package/test/unit/spec/multistream/remoteMediaGroup.ts +396 -0
- package/test/unit/spec/multistream/remoteMediaManager.ts +1793 -0
- 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 +106 -9
- 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 +78 -45
- 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 +118 -65
- 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/meeting/effectsState.js +0 -327
- package/dist/meeting/effectsState.js.map +0 -1
- package/dist/peer-connection-manager/index.js +0 -794
- package/dist/peer-connection-manager/index.js.map +0 -1
- package/dist/peer-connection-manager/util.js +0 -124
- package/dist/peer-connection-manager/util.js.map +0 -1
- package/dist/roap/collection.js +0 -73
- package/dist/roap/collection.js.map +0 -1
- package/dist/roap/handler.js +0 -337
- package/dist/roap/handler.js.map +0 -1
- package/dist/roap/state.js +0 -164
- package/dist/roap/state.js.map +0 -1
- package/dist/roap/util.js +0 -102
- package/dist/roap/util.js.map +0 -1
- package/src/common/logs/logger-proxy.js +0 -33
- package/src/index.js +0 -15
- package/src/locus-info/controlsUtils.js +0 -102
- package/src/media/index.js +0 -593
- package/src/media/util.js +0 -38
- package/src/mediaQualityMetrics/config.js +0 -382
- package/src/meeting/effectsState.js +0 -205
- package/src/meeting/muteState.js +0 -318
- package/src/meeting-info/meeting-info-v2.js +0 -255
- package/src/meetings/index.js +0 -986
- package/src/meetings/util.js +0 -176
- package/src/members/request.js +0 -131
- package/src/peer-connection-manager/index.js +0 -723
- package/src/peer-connection-manager/util.ts +0 -117
- package/src/roap/collection.js +0 -63
- package/src/roap/handler.js +0 -252
- package/src/roap/index.js +0 -380
- package/src/roap/request.js +0 -198
- package/src/roap/state.js +0 -149
- package/src/roap/util.js +0 -93
- package/src/statsAnalyzer/global.js +0 -131
- package/src/statsAnalyzer/index.js +0 -1020
- package/src/statsAnalyzer/mqaUtil.js +0 -173
- package/test/unit/spec/meeting/effectsState.js +0 -293
- package/test/unit/spec/peerconnection-manager/index.js +0 -188
- package/test/unit/spec/peerconnection-manager/utils.js +0 -48
- package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -389
- package/test/unit/spec/roap/util.js +0 -30
- /package/src/common/errors/{reconnection-in-progress.js → reconnection-in-progress.ts} +0 -0
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
3
3
|
*/
|
|
4
4
|
import {isEmpty} from 'lodash';
|
|
5
|
+
// @ts-ignore
|
|
5
6
|
import {StatelessWebexPlugin} from '@webex/webex-core';
|
|
6
7
|
|
|
7
8
|
import {MEETINGS, EVENT_TRIGGERS, FLOOR_ACTION, CONTENT, WHITEBOARD} from '../constants';
|
|
@@ -13,53 +14,72 @@ import ParameterError from '../common/errors/parameter';
|
|
|
13
14
|
import MembersCollection from './collection';
|
|
14
15
|
import MembersRequest from './request';
|
|
15
16
|
import MembersUtil from './util';
|
|
17
|
+
import {ReceiveSlotManager} from '../multistream/receiveSlotManager';
|
|
18
|
+
import {MediaRequestManager} from '../multistream/mediaRequestManager';
|
|
19
|
+
import {ServerRoleShape} from './types';
|
|
16
20
|
|
|
17
21
|
/**
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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
|
+
*/
|
|
28
32
|
|
|
29
33
|
/**
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
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
|
+
*/
|
|
38
42
|
|
|
39
43
|
/**
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
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
|
+
*/
|
|
48
52
|
|
|
49
53
|
/**
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
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
|
+
*/
|
|
58
62
|
|
|
59
63
|
/**
|
|
60
64
|
* @class Members
|
|
61
65
|
*/
|
|
62
66
|
export default class Members extends StatelessWebexPlugin {
|
|
67
|
+
hostId: any;
|
|
68
|
+
locusUrl: any;
|
|
69
|
+
mediaShareContentId: any;
|
|
70
|
+
mediaShareWhiteboardId: any;
|
|
71
|
+
membersCollection: any;
|
|
72
|
+
membersRequest: any;
|
|
73
|
+
receiveSlotManager: ReceiveSlotManager;
|
|
74
|
+
mediaRequestManagers: {
|
|
75
|
+
audio: MediaRequestManager;
|
|
76
|
+
video: MediaRequestManager;
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
recordingId: any;
|
|
80
|
+
selfId: any;
|
|
81
|
+
type: any;
|
|
82
|
+
|
|
63
83
|
namespace = MEETINGS;
|
|
64
84
|
|
|
65
85
|
/**
|
|
@@ -68,7 +88,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
68
88
|
* @param {Object} options
|
|
69
89
|
* @memberof Members
|
|
70
90
|
*/
|
|
71
|
-
constructor(attrs, options) {
|
|
91
|
+
constructor(attrs: any, options: object) {
|
|
72
92
|
super({}, options);
|
|
73
93
|
/**
|
|
74
94
|
* The Members Request object to interact with server
|
|
@@ -76,7 +96,8 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
76
96
|
* @type {MembersRequest}
|
|
77
97
|
* @private
|
|
78
98
|
* @memberof Members
|
|
79
|
-
|
|
99
|
+
*/
|
|
100
|
+
// @ts-ignore
|
|
80
101
|
this.membersRequest = new MembersRequest({}, options);
|
|
81
102
|
/**
|
|
82
103
|
* The Members Collection cache
|
|
@@ -84,7 +105,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
84
105
|
* @type {MembersCollection}
|
|
85
106
|
* @private
|
|
86
107
|
* @memberof Members
|
|
87
|
-
|
|
108
|
+
*/
|
|
88
109
|
this.membersCollection = new MembersCollection();
|
|
89
110
|
/**
|
|
90
111
|
* The current locus url for the active meeting
|
|
@@ -92,7 +113,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
92
113
|
* @type {String}
|
|
93
114
|
* @private
|
|
94
115
|
* @memberof Members
|
|
95
|
-
|
|
116
|
+
*/
|
|
96
117
|
this.locusUrl = attrs.locusUrl || null;
|
|
97
118
|
/**
|
|
98
119
|
* The current hostId for the meeting
|
|
@@ -100,7 +121,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
100
121
|
* @type {String}
|
|
101
122
|
* @private
|
|
102
123
|
* @memberof Members
|
|
103
|
-
|
|
124
|
+
*/
|
|
104
125
|
this.hostId = null;
|
|
105
126
|
/**
|
|
106
127
|
* The current type for the meeting, could be MEETING or CALL
|
|
@@ -108,7 +129,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
108
129
|
* @type {String}
|
|
109
130
|
* @private
|
|
110
131
|
* @memberof Members
|
|
111
|
-
|
|
132
|
+
*/
|
|
112
133
|
this.type = null;
|
|
113
134
|
/**
|
|
114
135
|
* Locus has a self object, sent individually to the client
|
|
@@ -122,7 +143,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
122
143
|
* @type {String}
|
|
123
144
|
* @private
|
|
124
145
|
* @memberof Members
|
|
125
|
-
|
|
146
|
+
*/
|
|
126
147
|
this.selfId = null;
|
|
127
148
|
/**
|
|
128
149
|
* The current mediaShareContentId for the meeting
|
|
@@ -130,7 +151,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
130
151
|
* @type {String}
|
|
131
152
|
* @private
|
|
132
153
|
* @memberof Members
|
|
133
|
-
|
|
154
|
+
*/
|
|
134
155
|
this.mediaShareContentId = null;
|
|
135
156
|
/**
|
|
136
157
|
* The current mediaShareWhiteboardId for the meeting
|
|
@@ -138,7 +159,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
138
159
|
* @type {String}
|
|
139
160
|
* @private
|
|
140
161
|
* @memberof Members
|
|
141
|
-
|
|
162
|
+
*/
|
|
142
163
|
this.mediaShareWhiteboardId = null;
|
|
143
164
|
/**
|
|
144
165
|
* The current recordingId for the meeting, if it exists
|
|
@@ -146,8 +167,20 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
146
167
|
* @type {String}
|
|
147
168
|
* @private
|
|
148
169
|
* @memberof Members
|
|
149
|
-
|
|
170
|
+
*/
|
|
150
171
|
this.recordingId = null;
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* reference to a ReceiveSlotManager instance (for multistream)
|
|
175
|
+
* @private
|
|
176
|
+
*/
|
|
177
|
+
this.receiveSlotManager = attrs.receiveSlotManager;
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* reference to a MediaRequestManager instance that manages main video requests (for multistream)
|
|
181
|
+
* @private
|
|
182
|
+
*/
|
|
183
|
+
this.mediaRequestManagers = attrs.mediaRequestManagers;
|
|
151
184
|
}
|
|
152
185
|
|
|
153
186
|
/**
|
|
@@ -159,7 +192,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
159
192
|
* @private
|
|
160
193
|
* @memberof Members
|
|
161
194
|
*/
|
|
162
|
-
locusSelfUpdate(payload) {
|
|
195
|
+
locusSelfUpdate(payload: {newSelf: any; oldSelf: any}) {
|
|
163
196
|
let newSelfId = null;
|
|
164
197
|
let oldSelfId = null;
|
|
165
198
|
|
|
@@ -190,12 +223,12 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
190
223
|
this,
|
|
191
224
|
{
|
|
192
225
|
file: 'members',
|
|
193
|
-
function: 'locusSelfUpdate'
|
|
226
|
+
function: 'locusSelfUpdate',
|
|
194
227
|
},
|
|
195
228
|
EVENT_TRIGGERS.MEMBERS_SELF_UPDATE,
|
|
196
229
|
{
|
|
197
230
|
activeSelfId: newSelfId,
|
|
198
|
-
endedSelfId: oldSelfId
|
|
231
|
+
endedSelfId: oldSelfId,
|
|
199
232
|
}
|
|
200
233
|
);
|
|
201
234
|
}
|
|
@@ -209,7 +242,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
209
242
|
* @private
|
|
210
243
|
* @memberof Members
|
|
211
244
|
*/
|
|
212
|
-
locusHostUpdate(payload) {
|
|
245
|
+
locusHostUpdate(payload: {newHost: any; oldHost: any}) {
|
|
213
246
|
let newHostId = null;
|
|
214
247
|
let oldHostId = null;
|
|
215
248
|
|
|
@@ -240,16 +273,35 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
240
273
|
this,
|
|
241
274
|
{
|
|
242
275
|
file: 'members',
|
|
243
|
-
function: 'locusHostUpdate'
|
|
276
|
+
function: 'locusHostUpdate',
|
|
244
277
|
},
|
|
245
278
|
EVENT_TRIGGERS.MEMBERS_HOST_UPDATE,
|
|
246
279
|
{
|
|
247
280
|
activeHostId: newHostId,
|
|
248
|
-
endedHostId: oldHostId
|
|
281
|
+
endedHostId: oldHostId,
|
|
249
282
|
}
|
|
250
283
|
);
|
|
251
284
|
}
|
|
252
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
|
+
|
|
253
305
|
/**
|
|
254
306
|
* when new participant updates come in, both delta and full participants, update them in members collection
|
|
255
307
|
* delta object in the event will have {updated, added} and full will be the full membersCollection
|
|
@@ -259,21 +311,27 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
259
311
|
* @private
|
|
260
312
|
* @memberof Members
|
|
261
313
|
*/
|
|
262
|
-
locusParticipantsUpdate(payload) {
|
|
314
|
+
locusParticipantsUpdate(payload: {participants: object; isReplace?: boolean}) {
|
|
263
315
|
if (payload) {
|
|
316
|
+
if (payload.isReplace) {
|
|
317
|
+
this.clearMembers();
|
|
318
|
+
}
|
|
264
319
|
const delta = this.handleLocusInfoUpdatedParticipants(payload);
|
|
265
320
|
const full = this.handleMembersUpdate(delta); // SDK should propagate the full list for both delta and non delta updates
|
|
266
321
|
|
|
322
|
+
this.receiveSlotManager?.updateMemberIds();
|
|
323
|
+
|
|
267
324
|
Trigger.trigger(
|
|
268
325
|
this,
|
|
269
326
|
{
|
|
270
327
|
file: 'members',
|
|
271
|
-
function: 'locusParticipantsUpdate'
|
|
328
|
+
function: 'locusParticipantsUpdate',
|
|
272
329
|
},
|
|
273
330
|
EVENT_TRIGGERS.MEMBERS_UPDATE,
|
|
274
331
|
{
|
|
275
332
|
delta,
|
|
276
|
-
full
|
|
333
|
+
full,
|
|
334
|
+
isReplace: !!payload.isReplace,
|
|
277
335
|
}
|
|
278
336
|
);
|
|
279
337
|
}
|
|
@@ -288,7 +346,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
288
346
|
* @private
|
|
289
347
|
* @memberof Members
|
|
290
348
|
*/
|
|
291
|
-
locusMediaSharesUpdate(payload) {
|
|
349
|
+
locusMediaSharesUpdate(payload: {current: any; previous: any}) {
|
|
292
350
|
const currentContent = payload.current?.content;
|
|
293
351
|
const previousContent = payload.previous?.content;
|
|
294
352
|
const currentWhiteboard = payload.current?.whiteboard;
|
|
@@ -307,8 +365,10 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
307
365
|
if (currentContent.disposition === FLOOR_ACTION.RELEASED) {
|
|
308
366
|
whoStopped = currentContent.beneficiaryId;
|
|
309
367
|
this.mediaShareContentId = null;
|
|
310
|
-
}
|
|
311
|
-
|
|
368
|
+
} else if (
|
|
369
|
+
currentContent.disposition === FLOOR_ACTION.GRANTED &&
|
|
370
|
+
currentContent.beneficiaryId !== previousContent.beneficiaryId
|
|
371
|
+
) {
|
|
312
372
|
whoStopped = previousContent.beneficiaryId;
|
|
313
373
|
}
|
|
314
374
|
}
|
|
@@ -325,8 +385,10 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
325
385
|
if (currentWhiteboard.disposition === FLOOR_ACTION.RELEASED) {
|
|
326
386
|
whoStopped = currentWhiteboard.beneficiaryId;
|
|
327
387
|
this.mediaShareWhiteboardId = null;
|
|
328
|
-
}
|
|
329
|
-
|
|
388
|
+
} else if (
|
|
389
|
+
currentWhiteboard.disposition === FLOOR_ACTION.GRANTED &&
|
|
390
|
+
currentWhiteboard.beneficiaryId !== previousWhiteboard.beneficiaryId
|
|
391
|
+
) {
|
|
330
392
|
whoStopped = previousWhiteboard.beneficiaryId;
|
|
331
393
|
}
|
|
332
394
|
}
|
|
@@ -351,17 +413,16 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
351
413
|
this,
|
|
352
414
|
{
|
|
353
415
|
file: 'members',
|
|
354
|
-
function: 'locusMediaSharesUpdate'
|
|
416
|
+
function: 'locusMediaSharesUpdate',
|
|
355
417
|
},
|
|
356
418
|
EVENT_TRIGGERS.MEMBERS_CONTENT_UPDATE,
|
|
357
419
|
{
|
|
358
420
|
activeSharingId: whoSharing,
|
|
359
|
-
endedSharingId: whoStopped
|
|
421
|
+
endedSharingId: whoStopped,
|
|
360
422
|
}
|
|
361
423
|
);
|
|
362
424
|
}
|
|
363
425
|
|
|
364
|
-
|
|
365
426
|
/**
|
|
366
427
|
* Internal update the locus url value
|
|
367
428
|
* @param {Object} payload
|
|
@@ -370,7 +431,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
370
431
|
* @private
|
|
371
432
|
* @memberof Members
|
|
372
433
|
*/
|
|
373
|
-
locusUrlUpdate(payload) {
|
|
434
|
+
locusUrlUpdate(payload: any) {
|
|
374
435
|
if (payload) {
|
|
375
436
|
this.setLocusUrl(null, payload);
|
|
376
437
|
}
|
|
@@ -384,7 +445,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
384
445
|
* @private
|
|
385
446
|
* @memberof Members
|
|
386
447
|
*/
|
|
387
|
-
locusFullStateTypeUpdate(payload) {
|
|
448
|
+
locusFullStateTypeUpdate(payload: {type: string}) {
|
|
388
449
|
// TODO: at some point there could be a timing issue here, for updating each member
|
|
389
450
|
// ie., if the type changes AND there is no locus update, then each member will not know the type of call
|
|
390
451
|
// which means they cannot determine isMutable && isRemovable
|
|
@@ -403,7 +464,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
403
464
|
* @private
|
|
404
465
|
* @memberof Members
|
|
405
466
|
*/
|
|
406
|
-
handleMembersUpdate(membersUpdate) {
|
|
467
|
+
private handleMembersUpdate(membersUpdate: any) {
|
|
407
468
|
if (membersUpdate) {
|
|
408
469
|
if (membersUpdate.updated) {
|
|
409
470
|
this.constructMembers(membersUpdate.updated);
|
|
@@ -423,7 +484,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
423
484
|
* @private
|
|
424
485
|
* @memberof Members
|
|
425
486
|
*/
|
|
426
|
-
constructMembers(list) {
|
|
487
|
+
private constructMembers(list: Array<any>) {
|
|
427
488
|
list.forEach((member) => {
|
|
428
489
|
this.membersCollection.set(member.id, member);
|
|
429
490
|
});
|
|
@@ -436,12 +497,14 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
436
497
|
* @private
|
|
437
498
|
* @memberof Members
|
|
438
499
|
*/
|
|
439
|
-
handleLocusInfoUpdatedParticipants(payload) {
|
|
500
|
+
private handleLocusInfoUpdatedParticipants(payload: any) {
|
|
440
501
|
this.hostId = payload.hostId || this.hostId;
|
|
441
502
|
this.selfId = payload.selfId || this.selfId;
|
|
442
503
|
this.recordingId = payload.recordingId;
|
|
443
504
|
if (!payload.participants) {
|
|
444
|
-
LoggerProxy.logger.warn(
|
|
505
|
+
LoggerProxy.logger.warn(
|
|
506
|
+
'Members:index#handleLocusInfoUpdatedParticipants --> participants payload is missing.'
|
|
507
|
+
);
|
|
445
508
|
}
|
|
446
509
|
const memberUpdate = this.update(payload.participants);
|
|
447
510
|
|
|
@@ -457,15 +520,15 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
457
520
|
* @public
|
|
458
521
|
* @memberof Members
|
|
459
522
|
*/
|
|
460
|
-
setLocusUrl(locus, locusUrl = null) {
|
|
523
|
+
public setLocusUrl(locus: any, locusUrl: string = null) {
|
|
461
524
|
if (locusUrl) {
|
|
462
525
|
this.locusUrl = locusUrl;
|
|
463
|
-
}
|
|
464
|
-
else if (locus && (locus.locusUrl || locus.url)) {
|
|
526
|
+
} else if (locus && (locus.locusUrl || locus.url)) {
|
|
465
527
|
this.locusUrl = locus.locusUrl || locus.url;
|
|
466
|
-
}
|
|
467
|
-
|
|
468
|
-
|
|
528
|
+
} else {
|
|
529
|
+
throw new ParameterError(
|
|
530
|
+
'Setting locusUrl for the Members module should be done with a locus object or locusUrl'
|
|
531
|
+
);
|
|
469
532
|
}
|
|
470
533
|
}
|
|
471
534
|
|
|
@@ -478,15 +541,15 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
478
541
|
* @public
|
|
479
542
|
* @memberof Members
|
|
480
543
|
*/
|
|
481
|
-
setHostId(locus, hostId = null) {
|
|
544
|
+
public setHostId(locus: any, hostId: string = null) {
|
|
482
545
|
if (hostId) {
|
|
483
546
|
this.hostId = hostId;
|
|
484
|
-
}
|
|
485
|
-
else if (locus) {
|
|
547
|
+
} else if (locus) {
|
|
486
548
|
this.hostId = locus && locus.owner && locus.owner.info ? locus.owner.info : null;
|
|
487
|
-
}
|
|
488
|
-
|
|
489
|
-
|
|
549
|
+
} else {
|
|
550
|
+
throw new ParameterError(
|
|
551
|
+
'Setting hostid for the Members module should be done with a locus object or hostId'
|
|
552
|
+
);
|
|
490
553
|
}
|
|
491
554
|
}
|
|
492
555
|
|
|
@@ -499,15 +562,15 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
499
562
|
* @public
|
|
500
563
|
* @memberof Members
|
|
501
564
|
*/
|
|
502
|
-
setType(fullState, type = null) {
|
|
565
|
+
public setType(fullState: any, type: string = null) {
|
|
503
566
|
if (type) {
|
|
504
567
|
this.type = type;
|
|
505
|
-
}
|
|
506
|
-
else if (fullState) {
|
|
568
|
+
} else if (fullState) {
|
|
507
569
|
this.type = (fullState && fullState.type) || null;
|
|
508
|
-
}
|
|
509
|
-
|
|
510
|
-
|
|
570
|
+
} else {
|
|
571
|
+
throw new ParameterError(
|
|
572
|
+
'Setting type for the Members module should be done with a fullstate object or type string'
|
|
573
|
+
);
|
|
511
574
|
}
|
|
512
575
|
}
|
|
513
576
|
|
|
@@ -519,15 +582,18 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
519
582
|
* @returns {undefined}
|
|
520
583
|
* @memberof Members
|
|
521
584
|
*/
|
|
522
|
-
setSelfId(locus, selfId = null) {
|
|
585
|
+
setSelfId(locus: any, selfId: string = null) {
|
|
523
586
|
if (selfId) {
|
|
524
587
|
this.selfId = selfId;
|
|
525
|
-
}
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
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
|
+
);
|
|
531
597
|
}
|
|
532
598
|
}
|
|
533
599
|
|
|
@@ -539,11 +605,10 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
539
605
|
* @returns {undefined}
|
|
540
606
|
* @memberof Members
|
|
541
607
|
*/
|
|
542
|
-
setMediaShareContentId(locus, contentId) {
|
|
608
|
+
setMediaShareContentId(locus: any, contentId?: string) {
|
|
543
609
|
if (contentId) {
|
|
544
610
|
this.mediaShareContentId = contentId;
|
|
545
|
-
}
|
|
546
|
-
else if (locus) {
|
|
611
|
+
} else if (locus) {
|
|
547
612
|
const contentMediaShare =
|
|
548
613
|
locus.mediaShares &&
|
|
549
614
|
locus.mediaShares.length &&
|
|
@@ -555,9 +620,10 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
555
620
|
contentMediaShare.floor.beneficiary &&
|
|
556
621
|
contentMediaShare.floor.beneficiary.id) ||
|
|
557
622
|
null;
|
|
558
|
-
}
|
|
559
|
-
|
|
560
|
-
|
|
623
|
+
} else {
|
|
624
|
+
throw new ParameterError(
|
|
625
|
+
'Setting hostid for the Members module should be done with a locus object or hostId'
|
|
626
|
+
);
|
|
561
627
|
}
|
|
562
628
|
}
|
|
563
629
|
|
|
@@ -569,11 +635,10 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
569
635
|
* @returns {undefined}
|
|
570
636
|
* @memberof Members
|
|
571
637
|
*/
|
|
572
|
-
setMediaShareWhiteboardId(locus, whiteboardId) {
|
|
638
|
+
setMediaShareWhiteboardId(locus: any, whiteboardId?: string) {
|
|
573
639
|
if (whiteboardId) {
|
|
574
640
|
this.mediaShareWhiteboardId = whiteboardId;
|
|
575
|
-
}
|
|
576
|
-
else if (locus) {
|
|
641
|
+
} else if (locus) {
|
|
577
642
|
const whiteboardMediaShare =
|
|
578
643
|
locus.mediaShares &&
|
|
579
644
|
locus.mediaShares.length &&
|
|
@@ -585,9 +650,10 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
585
650
|
whiteboardMediaShare.floor.beneficiary &&
|
|
586
651
|
whiteboardMediaShare.floor.beneficiary.id) ||
|
|
587
652
|
null;
|
|
588
|
-
}
|
|
589
|
-
|
|
590
|
-
|
|
653
|
+
} else {
|
|
654
|
+
throw new ParameterError(
|
|
655
|
+
'Setting hostid for the Members module should be done with a locus object or hostId'
|
|
656
|
+
);
|
|
591
657
|
}
|
|
592
658
|
}
|
|
593
659
|
|
|
@@ -600,7 +666,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
600
666
|
* @private
|
|
601
667
|
* @memberof Members
|
|
602
668
|
*/
|
|
603
|
-
update(participants) {
|
|
669
|
+
private update(participants: Array<any>) {
|
|
604
670
|
const membersUpdate = {added: [], updated: []};
|
|
605
671
|
|
|
606
672
|
if (participants) {
|
|
@@ -620,11 +686,10 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
620
686
|
hostId: this.hostId,
|
|
621
687
|
contentSharingId: this.mediaShareContentId,
|
|
622
688
|
whiteboardSharingId: this.mediaShareWhiteboardId,
|
|
623
|
-
type: this.type
|
|
689
|
+
type: this.type,
|
|
624
690
|
})
|
|
625
691
|
);
|
|
626
|
-
}
|
|
627
|
-
else {
|
|
692
|
+
} else {
|
|
628
693
|
membersUpdate.added.push(
|
|
629
694
|
new Member(participant, {
|
|
630
695
|
recordingId: this.recordingId,
|
|
@@ -632,7 +697,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
632
697
|
hostId: this.hostId,
|
|
633
698
|
contentSharingId: this.mediaShareContentId,
|
|
634
699
|
whiteboardSharingId: this.mediaShareWhiteboardId,
|
|
635
|
-
type: this.type
|
|
700
|
+
type: this.type,
|
|
636
701
|
})
|
|
637
702
|
);
|
|
638
703
|
}
|
|
@@ -649,13 +714,17 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
649
714
|
* @returns {Promise}
|
|
650
715
|
* @memberof Members
|
|
651
716
|
*/
|
|
652
|
-
addMember(invitee, alertIfActive) {
|
|
717
|
+
addMember(invitee: any, alertIfActive?: boolean) {
|
|
653
718
|
if (!this.locusUrl) {
|
|
654
|
-
return Promise.reject(
|
|
719
|
+
return Promise.reject(
|
|
720
|
+
new ParameterError('The associated locus url for this meeting object must be defined.')
|
|
721
|
+
);
|
|
655
722
|
}
|
|
656
723
|
if (MembersUtil.isInvalidInvitee(invitee)) {
|
|
657
724
|
return Promise.reject(
|
|
658
|
-
new ParameterError(
|
|
725
|
+
new ParameterError(
|
|
726
|
+
'The invitee must be defined with either a valid email, emailAddress or phoneNumber property.'
|
|
727
|
+
)
|
|
659
728
|
);
|
|
660
729
|
}
|
|
661
730
|
const options = MembersUtil.generateAddMemberOptions(invitee, this.locusUrl, alertIfActive);
|
|
@@ -669,9 +738,11 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
669
738
|
* @returns {Promise}
|
|
670
739
|
* @memberof Members
|
|
671
740
|
*/
|
|
672
|
-
cancelPhoneInvite(invitee) {
|
|
741
|
+
cancelPhoneInvite(invitee: any) {
|
|
673
742
|
if (!this.locusUrl) {
|
|
674
|
-
return Promise.reject(
|
|
743
|
+
return Promise.reject(
|
|
744
|
+
new ParameterError('The associated locus url for this meeting object must be defined.')
|
|
745
|
+
);
|
|
675
746
|
}
|
|
676
747
|
if (MembersUtil.isInvalidInvitee(invitee)) {
|
|
677
748
|
return Promise.reject(
|
|
@@ -680,22 +751,28 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
680
751
|
}
|
|
681
752
|
const options = MembersUtil.cancelPhoneInviteOptions(invitee, this.locusUrl);
|
|
682
753
|
|
|
683
|
-
|
|
684
754
|
return this.membersRequest.cancelPhoneInvite(options);
|
|
685
755
|
}
|
|
686
756
|
|
|
687
757
|
/**
|
|
688
758
|
* Admits waiting members (invited guests to meeting)
|
|
689
759
|
* @param {Array} memberIds
|
|
760
|
+
* @param {Object} sessionLocusUrls: {authorizingLocusUrl, mainLocusUrl}
|
|
690
761
|
* @returns {Promise}
|
|
691
762
|
* @public
|
|
692
763
|
* @memberof Members
|
|
693
764
|
*/
|
|
694
|
-
admitMembers(
|
|
765
|
+
public admitMembers(
|
|
766
|
+
memberIds: Array<any>,
|
|
767
|
+
sessionLocusUrls?: {authorizingLocusUrl: string; mainLocusUrl: string}
|
|
768
|
+
) {
|
|
695
769
|
if (isEmpty(memberIds)) {
|
|
696
770
|
return Promise.reject(new ParameterError('No member ids provided to admit.'));
|
|
697
771
|
}
|
|
698
|
-
const options =
|
|
772
|
+
const options = {
|
|
773
|
+
sessionLocusUrls,
|
|
774
|
+
...MembersUtil.generateAdmitMemberOptions(memberIds, this.locusUrl),
|
|
775
|
+
};
|
|
699
776
|
|
|
700
777
|
return this.membersRequest.admitMember(options);
|
|
701
778
|
}
|
|
@@ -707,12 +784,16 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
707
784
|
* @public
|
|
708
785
|
* @memberof Members
|
|
709
786
|
*/
|
|
710
|
-
removeMember(memberId) {
|
|
787
|
+
public removeMember(memberId: string) {
|
|
711
788
|
if (!this.locusUrl) {
|
|
712
|
-
return Promise.reject(
|
|
789
|
+
return Promise.reject(
|
|
790
|
+
new ParameterError('The associated locus url for this meeting object must be defined.')
|
|
791
|
+
);
|
|
713
792
|
}
|
|
714
793
|
if (!memberId) {
|
|
715
|
-
return Promise.reject(
|
|
794
|
+
return Promise.reject(
|
|
795
|
+
new ParameterError('The member id must be defined to remove the member.')
|
|
796
|
+
);
|
|
716
797
|
}
|
|
717
798
|
const options = MembersUtil.generateRemoveMemberOptions(memberId, this.locusUrl);
|
|
718
799
|
|
|
@@ -723,22 +804,55 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
723
804
|
* Audio mutes another member in a meeting
|
|
724
805
|
* @param {String} memberId
|
|
725
806
|
* @param {boolean} [mute] default true
|
|
807
|
+
* @param {boolean} [isAudio] default true
|
|
726
808
|
* @returns {Promise}
|
|
727
809
|
* @public
|
|
728
810
|
* @memberof Members
|
|
729
811
|
*/
|
|
730
|
-
muteMember(memberId, mute = true) {
|
|
812
|
+
public muteMember(memberId: string, mute = true, isAudio = true) {
|
|
731
813
|
if (!this.locusUrl) {
|
|
732
|
-
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
|
+
);
|
|
733
819
|
}
|
|
734
820
|
if (!memberId) {
|
|
735
|
-
return Promise.reject(
|
|
821
|
+
return Promise.reject(
|
|
822
|
+
new ParameterError('The member id must be defined to mute the member.')
|
|
823
|
+
);
|
|
736
824
|
}
|
|
737
|
-
const options = MembersUtil.generateMuteMemberOptions(memberId, mute, this.locusUrl);
|
|
825
|
+
const options = MembersUtil.generateMuteMemberOptions(memberId, mute, this.locusUrl, isAudio);
|
|
738
826
|
|
|
739
827
|
return this.membersRequest.muteMember(options);
|
|
740
828
|
}
|
|
741
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
|
+
|
|
742
856
|
/**
|
|
743
857
|
* Raise or lower the hand of a member in a meeting
|
|
744
858
|
* @param {String} memberId
|
|
@@ -747,12 +861,18 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
747
861
|
* @public
|
|
748
862
|
* @memberof Members
|
|
749
863
|
*/
|
|
750
|
-
raiseOrLowerHand(memberId, raise = true) {
|
|
864
|
+
public raiseOrLowerHand(memberId: string, raise = true) {
|
|
751
865
|
if (!this.locusUrl) {
|
|
752
|
-
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
|
+
);
|
|
753
871
|
}
|
|
754
872
|
if (!memberId) {
|
|
755
|
-
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
|
+
);
|
|
756
876
|
}
|
|
757
877
|
const options = MembersUtil.generateRaiseHandMemberOptions(memberId, raise, this.locusUrl);
|
|
758
878
|
|
|
@@ -766,19 +886,29 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
766
886
|
* @public
|
|
767
887
|
* @memberof Members
|
|
768
888
|
*/
|
|
769
|
-
lowerAllHands(requestingMemberId) {
|
|
889
|
+
public lowerAllHands(requestingMemberId: string) {
|
|
770
890
|
if (!this.locusUrl) {
|
|
771
|
-
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
|
+
);
|
|
772
896
|
}
|
|
773
897
|
if (!requestingMemberId) {
|
|
774
|
-
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
|
+
);
|
|
775
903
|
}
|
|
776
|
-
const options = MembersUtil.generateLowerAllHandsMemberOptions(
|
|
904
|
+
const options = MembersUtil.generateLowerAllHandsMemberOptions(
|
|
905
|
+
requestingMemberId,
|
|
906
|
+
this.locusUrl
|
|
907
|
+
);
|
|
777
908
|
|
|
778
909
|
return this.membersRequest.lowerAllHandsMember(options);
|
|
779
910
|
}
|
|
780
911
|
|
|
781
|
-
|
|
782
912
|
/**
|
|
783
913
|
* Transfers the host to another member
|
|
784
914
|
* @param {String} memberId
|
|
@@ -787,19 +917,28 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
787
917
|
* @public
|
|
788
918
|
* @memberof Members
|
|
789
919
|
*/
|
|
790
|
-
transferHostToMember(memberId, moderator = true) {
|
|
920
|
+
public transferHostToMember(memberId: string, moderator = true) {
|
|
791
921
|
if (!this.locusUrl) {
|
|
792
|
-
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
|
+
);
|
|
793
927
|
}
|
|
794
928
|
if (!memberId) {
|
|
795
|
-
return Promise.reject(
|
|
929
|
+
return Promise.reject(
|
|
930
|
+
new ParameterError('The member id must be defined to transfer host to the member.')
|
|
931
|
+
);
|
|
796
932
|
}
|
|
797
|
-
const options = MembersUtil.generateTransferHostMemberOptions(
|
|
933
|
+
const options = MembersUtil.generateTransferHostMemberOptions(
|
|
934
|
+
memberId,
|
|
935
|
+
moderator,
|
|
936
|
+
this.locusUrl
|
|
937
|
+
);
|
|
798
938
|
|
|
799
939
|
return this.membersRequest.transferHostToMember(options);
|
|
800
940
|
}
|
|
801
941
|
|
|
802
|
-
|
|
803
942
|
/**
|
|
804
943
|
* Sends DTMF tones for the PSTN member of a meeting
|
|
805
944
|
* @param {String} tones a string of one or more DTMF tones to send
|
|
@@ -808,7 +947,8 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
808
947
|
* @public
|
|
809
948
|
* @memberof Members
|
|
810
949
|
*/
|
|
811
|
-
sendDialPadKey(tones = '', memberId = '') {
|
|
950
|
+
public sendDialPadKey(tones = '', memberId = '') {
|
|
951
|
+
// @ts-ignore
|
|
812
952
|
if (!tones && tones !== 0) {
|
|
813
953
|
return Promise.reject(new ParameterError('DMTF tones must be passed in'));
|
|
814
954
|
}
|
|
@@ -831,6 +971,86 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
831
971
|
return this.membersRequest.sendDialPadKey(options);
|
|
832
972
|
}
|
|
833
973
|
|
|
834
|
-
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
|
+
);
|
|
979
|
+
}
|
|
980
|
+
|
|
981
|
+
/** Finds a member that has any device with a csi matching provided value
|
|
982
|
+
*
|
|
983
|
+
* @param {number} csi
|
|
984
|
+
* @returns {Member}
|
|
985
|
+
*/
|
|
986
|
+
findMemberByCsi(csi) {
|
|
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
|
+
);
|
|
993
|
+
}
|
|
994
|
+
|
|
995
|
+
/**
|
|
996
|
+
* Returns an array of a member's CSIs matching the mediaType and mediaContent
|
|
997
|
+
*
|
|
998
|
+
* @param {string} memberId
|
|
999
|
+
* @param {string} mediaType 'audio' or 'video'
|
|
1000
|
+
* @param {string} mediaContent 'main' or 'slides'
|
|
1001
|
+
* @returns {Member}
|
|
1002
|
+
*/
|
|
1003
|
+
getCsisForMember(memberId, mediaType = 'video', mediaContent = 'main') {
|
|
1004
|
+
const csis = [];
|
|
1005
|
+
|
|
1006
|
+
this.membersCollection.get(memberId)?.participant?.devices?.forEach((device) => {
|
|
1007
|
+
if (device.mediaSessions) {
|
|
1008
|
+
const deviceCsis = device.mediaSessions
|
|
1009
|
+
?.filter(
|
|
1010
|
+
(mediaSession) =>
|
|
1011
|
+
mediaSession.mediaType === mediaType && mediaSession.mediaContent === mediaContent
|
|
1012
|
+
)
|
|
1013
|
+
.map((mediaSession) => mediaSession.csi);
|
|
1014
|
+
|
|
1015
|
+
csis.push(...deviceCsis);
|
|
1016
|
+
}
|
|
1017
|
+
});
|
|
1018
|
+
|
|
1019
|
+
return csis;
|
|
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);
|
|
835
1055
|
}
|
|
836
1056
|
}
|