@webex/plugin-meetings 3.0.0-beta.13 → 3.0.0-beta.131
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +45 -1
- package/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 +355 -0
- package/dist/annotation/index.js.map +1 -0
- package/dist/breakouts/breakout.js +193 -0
- package/dist/breakouts/breakout.js.map +1 -0
- package/dist/breakouts/collection.js +23 -0
- package/dist/breakouts/collection.js.map +1 -0
- package/dist/breakouts/edit-lock-error.js +52 -0
- package/dist/breakouts/edit-lock-error.js.map +1 -0
- package/dist/breakouts/events.js +43 -0
- package/dist/breakouts/events.js.map +1 -0
- package/dist/breakouts/index.js +994 -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 +203 -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 +294 -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 +100 -29
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/embeddedAppsUtils.js +3 -26
- package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
- package/dist/locus-info/fullState.js +0 -15
- package/dist/locus-info/fullState.js.map +1 -1
- package/dist/locus-info/hostUtils.js +4 -12
- package/dist/locus-info/hostUtils.js.map +1 -1
- package/dist/locus-info/index.js +406 -216
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js +0 -38
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js +54 -38
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.js +88 -123
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js +105 -91
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js +55 -165
- 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 +77 -14
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +2603 -2462
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/locusMediaRequest.js +291 -0
- package/dist/meeting/locusMediaRequest.js.map +1 -0
- package/dist/meeting/muteState.js +292 -138
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +315 -336
- 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 +463 -583
- 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 +305 -286
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/request.js +1 -16
- package/dist/meeting-info/request.js.map +1 -1
- package/dist/meeting-info/util.js +98 -183
- package/dist/meeting-info/util.js.map +1 -1
- package/dist/meeting-info/utilv2.js +156 -232
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.js +24 -20
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.js +692 -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 +186 -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 +166 -205
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +120 -85
- package/dist/members/request.js.map +1 -1
- package/dist/members/types.js +15 -0
- package/dist/members/types.js.map +1 -0
- package/dist/members/util.js +314 -260
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/config.js +50 -16
- package/dist/metrics/config.js.map +1 -1
- package/dist/metrics/constants.js +4 -7
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.js +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 +31 -75
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +129 -136
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/turnDiscovery.js +143 -103
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/statsAnalyzer/global.js +1 -95
- package/dist/statsAnalyzer/global.js.map +1 -1
- package/dist/statsAnalyzer/index.js +369 -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 +35 -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 +993 -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 +147 -0
- package/dist/types/meeting/index.d.ts +1762 -0
- package/dist/types/meeting/locusMediaRequest.d.ts +70 -0
- package/dist/types/meeting/muteState.d.ts +186 -0
- package/dist/types/meeting/request.d.ts +269 -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 +76 -0
- package/dist/types/meeting-info/collection.d.ts +20 -0
- package/dist/types/meeting-info/index.d.ts +57 -0
- package/dist/types/meeting-info/meeting-info-v2.d.ts +122 -0
- package/dist/types/meeting-info/request.d.ts +22 -0
- package/dist/types/meeting-info/util.d.ts +2 -0
- package/dist/types/meeting-info/utilv2.d.ts +2 -0
- package/dist/types/meetings/collection.d.ts +31 -0
- package/dist/types/meetings/index.d.ts +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 +114 -0
- package/dist/types/members/types.d.ts +24 -0
- package/dist/types/members/util.d.ts +210 -0
- package/dist/types/metrics/config.d.ts +195 -0
- package/dist/types/metrics/constants.d.ts +55 -0
- package/dist/types/metrics/index.d.ts +169 -0
- package/dist/types/multistream/mediaRequestManager.d.ts +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 +36 -0
- package/dist/types/roap/turnDiscovery.d.ts +91 -0
- package/dist/types/statsAnalyzer/global.d.ts +36 -0
- package/dist/types/statsAnalyzer/index.d.ts +200 -0
- package/dist/types/statsAnalyzer/mqaUtil.d.ts +24 -0
- package/dist/types/transcription/index.d.ts +64 -0
- package/internal-README.md +7 -6
- package/package.json +28 -21
- package/src/annotation/annotation.types.ts +42 -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 +163 -0
- package/src/breakouts/collection.ts +19 -0
- package/src/breakouts/edit-lock-error.ts +25 -0
- package/src/breakouts/events.ts +37 -0
- package/src/breakouts/index.ts +860 -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 +153 -7
- 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 +281 -0
- package/src/index.ts +33 -0
- package/src/locus-info/controlsUtils.ts +142 -24
- package/src/locus-info/fullState.ts +15 -11
- package/src/locus-info/hostUtils.ts +4 -3
- package/src/locus-info/index.ts +346 -55
- package/src/locus-info/infoUtils.ts +12 -4
- package/src/locus-info/mediaSharesUtils.ts +52 -4
- package/src/locus-info/parser.ts +46 -68
- package/src/locus-info/selfUtils.ts +195 -56
- package/src/media/index.ts +139 -196
- 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 +159 -3
- package/src/meeting/index.ts +2803 -1584
- package/src/meeting/locusMediaRequest.ts +309 -0
- package/src/meeting/muteState.ts +290 -72
- package/src/meeting/request.ts +247 -178
- package/src/meeting/request.type.ts +13 -0
- package/src/meeting/state.ts +45 -30
- package/src/meeting/util.ts +445 -395
- package/src/meeting-info/collection.ts +2 -1
- package/src/meeting-info/index.ts +32 -30
- package/src/meeting-info/meeting-info-v2.ts +235 -116
- package/src/meeting-info/request.ts +9 -3
- package/src/meeting-info/util.ts +54 -46
- package/src/meeting-info/utilv2.ts +71 -55
- package/src/meetings/collection.ts +21 -1
- package/src/meetings/index.ts +772 -437
- package/src/meetings/request.ts +29 -25
- package/src/meetings/util.ts +132 -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 +288 -130
- package/src/members/request.ts +144 -31
- package/src/members/types.ts +28 -0
- package/src/members/util.ts +316 -235
- package/src/metrics/config.ts +302 -90
- package/src/metrics/constants.ts +2 -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 +53 -53
- package/src/roap/request.ts +77 -64
- package/src/roap/turnDiscovery.ts +101 -48
- 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 +433 -0
- package/test/unit/spec/breakouts/breakout.ts +203 -0
- package/test/unit/spec/breakouts/collection.ts +15 -0
- package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
- package/test/unit/spec/breakouts/events.ts +77 -0
- package/test/unit/spec/breakouts/index.ts +1609 -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 +305 -32
- package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
- package/test/unit/spec/locus-info/index.js +636 -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/mediaSharesUtils.ts +22 -0
- 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 +252 -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 +76 -3
- package/test/unit/spec/meeting/index.js +3112 -921
- package/test/unit/spec/meeting/locusMediaRequest.ts +436 -0
- package/test/unit/spec/meeting/muteState.js +421 -94
- package/test/unit/spec/meeting/request.js +421 -79
- package/test/unit/spec/meeting/utils.js +326 -189
- package/test/unit/spec/meeting-info/meetinginfov2.js +481 -76
- 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 +1126 -328
- package/test/unit/spec/meetings/utils.js +220 -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 +424 -55
- package/test/unit/spec/members/request.js +228 -40
- package/test/unit/spec/members/utils.js +191 -4
- package/test/unit/spec/metrics/index.js +113 -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 +19 -49
- package/test/unit/spec/roap/request.ts +187 -0
- package/test/unit/spec/roap/turnDiscovery.ts +92 -50
- 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
|
@@ -1,150 +1,251 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
4
|
-
|
|
5
4
|
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
|
6
|
-
|
|
7
5
|
_Object$defineProperty(exports, "__esModule", {
|
|
8
6
|
value: true
|
|
9
7
|
});
|
|
10
|
-
|
|
11
|
-
exports.default = void 0;
|
|
12
|
-
|
|
8
|
+
exports.createMuteState = exports.MuteState = void 0;
|
|
13
9
|
var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
|
|
14
|
-
|
|
15
10
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
|
|
16
|
-
|
|
17
11
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
|
|
18
|
-
|
|
19
12
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
|
20
|
-
|
|
21
13
|
var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
|
|
22
|
-
|
|
23
14
|
var _parameter = _interopRequireDefault(require("../common/errors/parameter"));
|
|
24
|
-
|
|
25
15
|
var _permission = _interopRequireDefault(require("../common/errors/permission"));
|
|
26
|
-
|
|
27
|
-
var _media = _interopRequireDefault(require("../media"));
|
|
28
|
-
|
|
29
|
-
var _util = _interopRequireDefault(require("../meeting/util"));
|
|
30
|
-
|
|
16
|
+
var _util = _interopRequireDefault(require("./util"));
|
|
31
17
|
var _constants = require("../constants");
|
|
32
|
-
|
|
33
18
|
/* Certain aspects of server interaction for video muting are not implemented as we currently don't support remote muting of video.
|
|
34
19
|
If we ever need to support it, search for REMOTE_MUTE_VIDEO_MISSING_IMPLEMENTATION string to find the places that need updating
|
|
35
20
|
*/
|
|
36
|
-
|
|
21
|
+
|
|
22
|
+
// eslint-disable-next-line import/prefer-default-export
|
|
23
|
+
var createMuteState = function createMuteState(type, meeting, mediaDirection, sdkOwnsLocalTrack) {
|
|
24
|
+
// todo: remove mediaDirection argument (SPARK-399695)
|
|
25
|
+
// todo: remove the meeting argument (SPARK-399695)
|
|
37
26
|
if (type === _constants.AUDIO && !mediaDirection.sendAudio) {
|
|
38
27
|
return null;
|
|
39
28
|
}
|
|
40
|
-
|
|
41
29
|
if (type === _constants.VIDEO && !mediaDirection.sendVideo) {
|
|
42
30
|
return null;
|
|
43
31
|
}
|
|
44
|
-
|
|
45
32
|
_loggerProxy.default.logger.info("Meeting:muteState#createMuteState --> ".concat(type, ": creating MuteState for meeting id ").concat(meeting === null || meeting === void 0 ? void 0 : meeting.id));
|
|
46
|
-
|
|
47
|
-
|
|
33
|
+
var muteState = new MuteState(type, meeting, sdkOwnsLocalTrack);
|
|
34
|
+
muteState.init(meeting);
|
|
35
|
+
return muteState;
|
|
48
36
|
};
|
|
37
|
+
|
|
49
38
|
/** The purpose of this class is to manage the local and remote mute state and make sure that the server state always matches
|
|
50
39
|
the last requested state by the client.
|
|
51
40
|
|
|
52
41
|
More info about Locus muting API: https://sqbu-github.cisco.com/pages/WebExSquared/locus/guides/mute.html#
|
|
53
|
-
*/
|
|
54
|
-
|
|
55
42
|
|
|
43
|
+
This class is exported only for unit tests. It should never be instantiated directly with new MuteState(), instead createMuteState() should be called
|
|
44
|
+
*/
|
|
45
|
+
exports.createMuteState = createMuteState;
|
|
56
46
|
var MuteState = /*#__PURE__*/function () {
|
|
47
|
+
// todo: remove this when doing SPARK-399695
|
|
48
|
+
|
|
57
49
|
/**
|
|
58
50
|
* Constructor
|
|
59
51
|
*
|
|
60
52
|
* @param {String} type - audio or video
|
|
61
53
|
* @param {Object} meeting - the meeting object (used for reading current remote mute status)
|
|
54
|
+
* @param {boolean} sdkOwnsLocalTrack - if false, then client app owns the local track (for now that's the case only for multistream meetings)
|
|
62
55
|
*/
|
|
63
|
-
function MuteState(type, meeting) {
|
|
56
|
+
function MuteState(type, meeting, sdkOwnsLocalTrack) {
|
|
57
|
+
var _meeting$remoteVideoM, _meeting$unmuteVideoA;
|
|
64
58
|
(0, _classCallCheck2.default)(this, MuteState);
|
|
65
59
|
(0, _defineProperty2.default)(this, "pendingPromiseReject", void 0);
|
|
66
60
|
(0, _defineProperty2.default)(this, "pendingPromiseResolve", void 0);
|
|
67
61
|
(0, _defineProperty2.default)(this, "state", void 0);
|
|
68
62
|
(0, _defineProperty2.default)(this, "type", void 0);
|
|
69
|
-
|
|
63
|
+
(0, _defineProperty2.default)(this, "sdkOwnsLocalTrack", void 0);
|
|
64
|
+
(0, _defineProperty2.default)(this, "ignoreMuteStateChange", void 0);
|
|
70
65
|
if (type !== _constants.AUDIO && type !== _constants.VIDEO) {
|
|
71
66
|
throw new _parameter.default('Mute state is designed for handling audio or video only');
|
|
72
67
|
}
|
|
73
|
-
|
|
74
68
|
this.type = type;
|
|
69
|
+
this.sdkOwnsLocalTrack = sdkOwnsLocalTrack;
|
|
70
|
+
this.ignoreMuteStateChange = false;
|
|
75
71
|
this.state = {
|
|
76
72
|
client: {
|
|
77
73
|
localMute: false
|
|
78
74
|
},
|
|
79
75
|
server: {
|
|
80
|
-
localMute:
|
|
81
|
-
//
|
|
82
|
-
remoteMute: type === _constants.AUDIO ? meeting.remoteMuted : false,
|
|
83
|
-
unmuteAllowed: type === _constants.AUDIO ? meeting.unmuteAllowed : true
|
|
76
|
+
localMute: true,
|
|
77
|
+
// because remoteVideoMuted and unmuteVideoAllowed are updated seperately, they might be undefined
|
|
78
|
+
remoteMute: type === _constants.AUDIO ? meeting.remoteMuted : (_meeting$remoteVideoM = meeting.remoteVideoMuted) !== null && _meeting$remoteVideoM !== void 0 ? _meeting$remoteVideoM : false,
|
|
79
|
+
unmuteAllowed: type === _constants.AUDIO ? meeting.unmuteAllowed : (_meeting$unmuteVideoA = meeting.unmuteVideoAllowed) !== null && _meeting$unmuteVideoA !== void 0 ? _meeting$unmuteVideoA : true
|
|
84
80
|
},
|
|
85
81
|
syncToServerInProgress: false
|
|
86
|
-
};
|
|
87
|
-
|
|
82
|
+
};
|
|
83
|
+
// these 2 hold the resolve, reject methods for the promise we returned to the client in last handleClientRequest() call
|
|
88
84
|
this.pendingPromiseResolve = null;
|
|
89
85
|
this.pendingPromiseReject = null;
|
|
90
86
|
}
|
|
87
|
+
|
|
91
88
|
/**
|
|
92
|
-
*
|
|
93
|
-
* at the point that this request becomese superseded by another client request.
|
|
94
|
-
*
|
|
95
|
-
* The client doesn't have to wait for the returned promise to resolve before calling handleClientRequest() again. If
|
|
96
|
-
* handleClientRequest() is called again before the previous one resolved, the MuteState class will make sure that eventually
|
|
97
|
-
* the server state will match the last requested state from the client.
|
|
89
|
+
* Starts the mute state machine. Needs to be called after a new MuteState instance is created.
|
|
98
90
|
*
|
|
99
|
-
* @
|
|
100
|
-
* @
|
|
101
|
-
* @param {Object} [meeting] the meeting object
|
|
102
|
-
* @param {Boolean} [mute] true for muting, false for unmuting request
|
|
103
|
-
* @returns {Promise}
|
|
91
|
+
* @param {Object} meeting - the meeting object
|
|
92
|
+
* @returns {void}
|
|
104
93
|
*/
|
|
94
|
+
(0, _createClass2.default)(MuteState, [{
|
|
95
|
+
key: "init",
|
|
96
|
+
value: function init(meeting) {
|
|
97
|
+
var _this = this;
|
|
98
|
+
if (!this.sdkOwnsLocalTrack) {
|
|
99
|
+
var _meeting$mediaPropert, _meeting$mediaPropert2;
|
|
100
|
+
this.applyUnmuteAllowedToTrack(meeting);
|
|
105
101
|
|
|
102
|
+
// if we are remotely muted, we need to apply that to the local track now (mute on-entry)
|
|
103
|
+
if (this.state.server.remoteMute) {
|
|
104
|
+
this.muteLocalTrack(meeting, this.state.server.remoteMute, 'remotelyMuted');
|
|
105
|
+
}
|
|
106
|
+
var initialMute = this.type === _constants.AUDIO ? (_meeting$mediaPropert = meeting.mediaProperties.audioTrack) === null || _meeting$mediaPropert === void 0 ? void 0 : _meeting$mediaPropert.muted : (_meeting$mediaPropert2 = meeting.mediaProperties.videoTrack) === null || _meeting$mediaPropert2 === void 0 ? void 0 : _meeting$mediaPropert2.muted;
|
|
107
|
+
_loggerProxy.default.logger.info("Meeting:muteState#init --> ".concat(this.type, ": local track initial mute state: ").concat(initialMute));
|
|
108
|
+
if (initialMute !== undefined) {
|
|
109
|
+
this.state.client.localMute = initialMute;
|
|
110
|
+
this.applyClientStateToServer(meeting);
|
|
111
|
+
}
|
|
112
|
+
} else {
|
|
113
|
+
// in the mode where sdkOwnsLocalTrack is false (transcoded meetings),
|
|
114
|
+
// SDK API currently doesn't allow to start with audio/video muted,
|
|
115
|
+
// so we need to apply the initial local mute state (false) to server
|
|
116
|
+
this.state.syncToServerInProgress = true;
|
|
117
|
+
this.sendLocalMuteRequestToServer(meeting).then(function () {
|
|
118
|
+
_this.state.syncToServerInProgress = false;
|
|
119
|
+
}).catch(function () {
|
|
120
|
+
_this.state.syncToServerInProgress = false;
|
|
121
|
+
// not much we can do here...
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
}
|
|
106
125
|
|
|
107
|
-
|
|
126
|
+
/**
|
|
127
|
+
* This method needs to be called whenever the local audio/video track has changed.
|
|
128
|
+
* It reapplies the remote mute state onto the new track and also reads the current
|
|
129
|
+
* local mute state from the track and updates the internal state machine and sends
|
|
130
|
+
* any required requests to the server.
|
|
131
|
+
*
|
|
132
|
+
* @param {Object} meeting - the meeting object
|
|
133
|
+
* @returns {void}
|
|
134
|
+
*/
|
|
135
|
+
}, {
|
|
136
|
+
key: "handleLocalTrackChange",
|
|
137
|
+
value: function handleLocalTrackChange(meeting) {
|
|
138
|
+
return this.init(meeting);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Mutes/unmutes local track
|
|
143
|
+
*
|
|
144
|
+
* @param {Object} meeting - the meeting object
|
|
145
|
+
* @param {Boolean} mute - true to mute the track, false to unmute it
|
|
146
|
+
* @param {ServerMuteReason} reason - reason for muting/unmuting
|
|
147
|
+
* @returns {void}
|
|
148
|
+
*/
|
|
149
|
+
}, {
|
|
150
|
+
key: "muteLocalTrack",
|
|
151
|
+
value: function muteLocalTrack(meeting, mute, reason) {
|
|
152
|
+
this.ignoreMuteStateChange = true;
|
|
153
|
+
if (this.type === _constants.AUDIO) {
|
|
154
|
+
var _meeting$mediaPropert3;
|
|
155
|
+
(_meeting$mediaPropert3 = meeting.mediaProperties.audioTrack) === null || _meeting$mediaPropert3 === void 0 ? void 0 : _meeting$mediaPropert3.setServerMuted(mute, reason);
|
|
156
|
+
} else {
|
|
157
|
+
var _meeting$mediaPropert4;
|
|
158
|
+
(_meeting$mediaPropert4 = meeting.mediaProperties.videoTrack) === null || _meeting$mediaPropert4 === void 0 ? void 0 : _meeting$mediaPropert4.setServerMuted(mute, reason);
|
|
159
|
+
}
|
|
160
|
+
this.ignoreMuteStateChange = false;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* Handles mute/unmute request from the client/user. Returns a promise that's resolved once the server update is completed or
|
|
165
|
+
* at the point that this request becomese superseded by another client request.
|
|
166
|
+
*
|
|
167
|
+
* The client doesn't have to wait for the returned promise to resolve before calling handleClientRequest() again. If
|
|
168
|
+
* handleClientRequest() is called again before the previous one resolved, the MuteState class will make sure that eventually
|
|
169
|
+
* the server state will match the last requested state from the client.
|
|
170
|
+
*
|
|
171
|
+
* @public
|
|
172
|
+
* @memberof MuteState
|
|
173
|
+
* @param {Object} [meeting] the meeting object
|
|
174
|
+
* @param {Boolean} [mute] true for muting, false for unmuting request
|
|
175
|
+
* @returns {Promise}
|
|
176
|
+
*/
|
|
177
|
+
}, {
|
|
108
178
|
key: "handleClientRequest",
|
|
109
179
|
value: function handleClientRequest(meeting, mute) {
|
|
110
|
-
var
|
|
111
|
-
|
|
180
|
+
var _this2 = this;
|
|
181
|
+
// todo: this whole method will be removed in SPARK-399695
|
|
112
182
|
_loggerProxy.default.logger.info("Meeting:muteState#handleClientRequest --> ".concat(this.type, ": user requesting new mute state: ").concat(mute));
|
|
113
|
-
|
|
114
183
|
if (!mute && !this.state.server.unmuteAllowed) {
|
|
115
184
|
return _promise.default.reject(new _permission.default('User is not allowed to unmute self (hard mute feature is being used)'));
|
|
116
|
-
}
|
|
117
|
-
// because the client may have changed the audio/vidoe tracks
|
|
118
|
-
|
|
185
|
+
}
|
|
119
186
|
|
|
187
|
+
// we don't check if we're already in the same state, because even if we were, we would still have to apply the mute state locally,
|
|
188
|
+
// because the client may have changed the audio/video tracks
|
|
120
189
|
this.state.client.localMute = mute;
|
|
121
190
|
this.applyClientStateLocally(meeting);
|
|
122
191
|
return new _promise.default(function (resolve, reject) {
|
|
123
|
-
if (
|
|
192
|
+
if (_this2.pendingPromiseResolve) {
|
|
124
193
|
// resolve the last promise we returned to the client as the client has issued a new request that has superseded the previous one
|
|
125
|
-
|
|
194
|
+
_this2.pendingPromiseResolve();
|
|
126
195
|
}
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
_this.applyClientStateToServer(meeting);
|
|
196
|
+
_this2.pendingPromiseResolve = resolve;
|
|
197
|
+
_this2.pendingPromiseReject = reject;
|
|
198
|
+
_this2.applyClientStateToServer(meeting);
|
|
132
199
|
});
|
|
133
200
|
}
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* This method should be called when the local track mute state is changed
|
|
204
|
+
* @public
|
|
205
|
+
* @memberof MuteState
|
|
206
|
+
* @param {Object} [meeting] the meeting object
|
|
207
|
+
* @param {Boolean} [mute] true for muting, false for unmuting request
|
|
208
|
+
* @returns {void}
|
|
209
|
+
*/
|
|
210
|
+
}, {
|
|
211
|
+
key: "handleLocalTrackMuteStateChange",
|
|
212
|
+
value: function handleLocalTrackMuteStateChange(meeting, mute) {
|
|
213
|
+
if (this.ignoreMuteStateChange) {
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
_loggerProxy.default.logger.info("Meeting:muteState#handleLocalTrackMuteStateChange --> ".concat(this.type, ": local track new mute state: ").concat(mute));
|
|
217
|
+
if (this.pendingPromiseReject) {
|
|
218
|
+
_loggerProxy.default.logger.error("Meeting:muteState#handleLocalTrackMuteStateChange --> ".concat(this.type, ": Local track mute state change handler called while a client request is handled - this should never happen!, mute state: ").concat(mute));
|
|
219
|
+
}
|
|
220
|
+
this.state.client.localMute = mute;
|
|
221
|
+
this.applyClientStateToServer(meeting);
|
|
222
|
+
}
|
|
223
|
+
|
|
134
224
|
/**
|
|
135
225
|
* Applies the current mute state to the local track (by enabling or disabling it accordingly)
|
|
136
226
|
*
|
|
137
227
|
* @public
|
|
138
228
|
* @param {Object} [meeting] the meeting object
|
|
229
|
+
* @param {ServerMuteReason} reason - reason why we're applying our client state to the local track
|
|
139
230
|
* @memberof MuteState
|
|
140
231
|
* @returns {void}
|
|
141
232
|
*/
|
|
142
|
-
|
|
143
233
|
}, {
|
|
144
234
|
key: "applyClientStateLocally",
|
|
145
|
-
value: function applyClientStateLocally(meeting) {
|
|
146
|
-
|
|
235
|
+
value: function applyClientStateLocally(meeting, reason) {
|
|
236
|
+
if (this.sdkOwnsLocalTrack) {
|
|
237
|
+
if (this.type === _constants.AUDIO) {
|
|
238
|
+
var _meeting$mediaPropert5;
|
|
239
|
+
(_meeting$mediaPropert5 = meeting.mediaProperties.audioTrack) === null || _meeting$mediaPropert5 === void 0 ? void 0 : _meeting$mediaPropert5.setMuted(this.state.client.localMute);
|
|
240
|
+
} else {
|
|
241
|
+
var _meeting$mediaPropert6;
|
|
242
|
+
(_meeting$mediaPropert6 = meeting.mediaProperties.videoTrack) === null || _meeting$mediaPropert6 === void 0 ? void 0 : _meeting$mediaPropert6.setMuted(this.state.client.localMute);
|
|
243
|
+
}
|
|
244
|
+
} else {
|
|
245
|
+
this.muteLocalTrack(meeting, this.state.client.localMute, reason);
|
|
246
|
+
}
|
|
147
247
|
}
|
|
248
|
+
|
|
148
249
|
/**
|
|
149
250
|
* Updates the server local and remote mute values so that they match the current client desired state.
|
|
150
251
|
*
|
|
@@ -153,62 +254,53 @@ var MuteState = /*#__PURE__*/function () {
|
|
|
153
254
|
* @memberof MuteState
|
|
154
255
|
* @returns {void}
|
|
155
256
|
*/
|
|
156
|
-
|
|
157
257
|
}, {
|
|
158
258
|
key: "applyClientStateToServer",
|
|
159
259
|
value: function applyClientStateToServer(meeting) {
|
|
160
|
-
var
|
|
161
|
-
|
|
260
|
+
var _this3 = this;
|
|
162
261
|
if (this.state.syncToServerInProgress) {
|
|
163
262
|
_loggerProxy.default.logger.info("Meeting:muteState#applyClientStateToServer --> ".concat(this.type, ": request to server in progress, we need to wait for it to complete"));
|
|
164
|
-
|
|
165
263
|
return;
|
|
166
264
|
}
|
|
167
|
-
|
|
168
265
|
var localMuteRequiresSync = this.state.client.localMute !== this.state.server.localMute;
|
|
169
266
|
var remoteMuteRequiresSync = !this.state.client.localMute && this.state.server.remoteMute;
|
|
170
|
-
|
|
171
267
|
_loggerProxy.default.logger.info("Meeting:muteState#applyClientStateToServer --> ".concat(this.type, ": localMuteRequiresSync: ").concat(localMuteRequiresSync, " (").concat(this.state.client.localMute, " ?= ").concat(this.state.server.localMute, ")"));
|
|
172
|
-
|
|
173
268
|
_loggerProxy.default.logger.info("Meeting:muteState#applyClientStateToServer --> ".concat(this.type, ": remoteMuteRequiresSync: ").concat(remoteMuteRequiresSync));
|
|
174
|
-
|
|
175
269
|
if (!localMuteRequiresSync && !remoteMuteRequiresSync) {
|
|
176
270
|
_loggerProxy.default.logger.info("Meeting:muteState#applyClientStateToServer --> ".concat(this.type, ": client state already matching server state, nothing to do"));
|
|
177
|
-
|
|
178
271
|
if (this.pendingPromiseResolve) {
|
|
179
272
|
this.pendingPromiseResolve();
|
|
180
273
|
}
|
|
181
|
-
|
|
182
274
|
this.pendingPromiseResolve = null;
|
|
183
275
|
this.pendingPromiseReject = null;
|
|
184
276
|
return;
|
|
185
277
|
}
|
|
278
|
+
this.state.syncToServerInProgress = true;
|
|
186
279
|
|
|
187
|
-
|
|
188
|
-
|
|
280
|
+
// first sync local mute with server
|
|
189
281
|
var localMuteSyncPromise = localMuteRequiresSync ? this.sendLocalMuteRequestToServer(meeting) : _promise.default.resolve();
|
|
190
282
|
localMuteSyncPromise.then(function () {
|
|
191
|
-
return (
|
|
192
|
-
|
|
283
|
+
return (
|
|
284
|
+
// then follow it up with remote mute sync
|
|
285
|
+
remoteMuteRequiresSync ? _this3.sendRemoteMuteRequestToServer(meeting) : _promise.default.resolve()
|
|
193
286
|
);
|
|
194
287
|
}).then(function () {
|
|
195
|
-
|
|
288
|
+
_this3.state.syncToServerInProgress = false;
|
|
289
|
+
_loggerProxy.default.logger.info("Meeting:muteState#applyClientStateToServer --> ".concat(_this3.type, ": sync with server completed"));
|
|
196
290
|
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
_this2.applyClientStateToServer(meeting);
|
|
291
|
+
// need to check if a new sync is required, because this.state.client may have changed while we were doing the current sync
|
|
292
|
+
_this3.applyClientStateToServer(meeting);
|
|
201
293
|
}).catch(function (e) {
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
_this2.pendingPromiseReject(e);
|
|
294
|
+
_this3.state.syncToServerInProgress = false;
|
|
295
|
+
if (_this3.pendingPromiseReject) {
|
|
296
|
+
_this3.pendingPromiseReject(e);
|
|
206
297
|
}
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
298
|
+
_this3.pendingPromiseResolve = null;
|
|
299
|
+
_this3.pendingPromiseReject = null;
|
|
300
|
+
_this3.applyServerMuteToLocalTrack(meeting, 'clientRequestFailed');
|
|
210
301
|
});
|
|
211
302
|
}
|
|
303
|
+
|
|
212
304
|
/**
|
|
213
305
|
* Sets the local mute value in the server
|
|
214
306
|
*
|
|
@@ -217,31 +309,26 @@ var MuteState = /*#__PURE__*/function () {
|
|
|
217
309
|
* @memberof MuteState
|
|
218
310
|
* @returns {Promise}
|
|
219
311
|
*/
|
|
220
|
-
|
|
221
312
|
}, {
|
|
222
313
|
key: "sendLocalMuteRequestToServer",
|
|
223
314
|
value: function sendLocalMuteRequestToServer(meeting) {
|
|
224
|
-
var
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
var audioMuted = this.type === _constants.AUDIO ? this.state.client.localMute : (_meeting$audio = meeting.audio) === null || _meeting$audio === void 0 ? void 0 : _meeting$audio.state.client.localMute;
|
|
229
|
-
var videoMuted = this.type === _constants.VIDEO ? this.state.client.localMute : (_meeting$video = meeting.video) === null || _meeting$video === void 0 ? void 0 : _meeting$video.state.client.localMute;
|
|
230
|
-
|
|
315
|
+
var _this4 = this;
|
|
316
|
+
var audioMuted = this.type === _constants.AUDIO ? this.state.client.localMute : undefined;
|
|
317
|
+
var videoMuted = this.type === _constants.VIDEO ? this.state.client.localMute : undefined;
|
|
231
318
|
_loggerProxy.default.logger.info("Meeting:muteState#sendLocalMuteRequestToServer --> ".concat(this.type, ": sending local mute (audio=").concat(audioMuted, ", video=").concat(videoMuted, ") to server"));
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
319
|
+
return _util.default.remoteUpdateAudioVideo(meeting, audioMuted, videoMuted).then(function (locus) {
|
|
320
|
+
_loggerProxy.default.logger.info("Meeting:muteState#sendLocalMuteRequestToServer --> ".concat(_this4.type, ": local mute (audio=").concat(audioMuted, ", video=").concat(videoMuted, ") applied to server"));
|
|
321
|
+
_this4.state.server.localMute = _this4.type === _constants.AUDIO ? audioMuted : videoMuted;
|
|
322
|
+
if (locus) {
|
|
323
|
+
meeting.locusInfo.onDeltaLocus(locus);
|
|
324
|
+
}
|
|
238
325
|
return locus;
|
|
239
326
|
}).catch(function (remoteUpdateError) {
|
|
240
|
-
_loggerProxy.default.logger.warn("Meeting:muteState#sendLocalMuteRequestToServer --> ".concat(
|
|
241
|
-
|
|
327
|
+
_loggerProxy.default.logger.warn("Meeting:muteState#sendLocalMuteRequestToServer --> ".concat(_this4.type, ": failed to apply local mute (audio=").concat(audioMuted, ", video=").concat(videoMuted, ") to server: ").concat(remoteUpdateError));
|
|
242
328
|
return _promise.default.reject(remoteUpdateError);
|
|
243
329
|
});
|
|
244
330
|
}
|
|
331
|
+
|
|
245
332
|
/**
|
|
246
333
|
* Sets the remote mute value in the server
|
|
247
334
|
*
|
|
@@ -250,50 +337,80 @@ var MuteState = /*#__PURE__*/function () {
|
|
|
250
337
|
* @memberof MuteState
|
|
251
338
|
* @returns {Promise}
|
|
252
339
|
*/
|
|
253
|
-
|
|
254
340
|
}, {
|
|
255
341
|
key: "sendRemoteMuteRequestToServer",
|
|
256
342
|
value: function sendRemoteMuteRequestToServer(meeting) {
|
|
257
|
-
var
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
}).catch(function (remoteUpdateError) {
|
|
269
|
-
_loggerProxy.default.logger.warn("Meeting:muteState#sendRemoteMuteRequestToServer --> ".concat(_this4.type, ": failed to apply remote mute ").concat(remoteMute, " to server: ").concat(remoteUpdateError));
|
|
343
|
+
var _this5 = this;
|
|
344
|
+
var remoteMute = this.state.client.localMute;
|
|
345
|
+
_loggerProxy.default.logger.info("Meeting:muteState#sendRemoteMuteRequestToServer --> ".concat(this.type, ": sending remote mute:").concat(remoteMute, " to server"));
|
|
346
|
+
return meeting.members.muteMember(meeting.members.selfId, remoteMute, this.type === _constants.AUDIO).then(function () {
|
|
347
|
+
_loggerProxy.default.logger.info("Meeting:muteState#sendRemoteMuteRequestToServer --> ".concat(_this5.type, ": remote mute:").concat(remoteMute, " applied to server"));
|
|
348
|
+
_this5.state.server.remoteMute = remoteMute;
|
|
349
|
+
}).catch(function (remoteUpdateError) {
|
|
350
|
+
_loggerProxy.default.logger.warn("Meeting:muteState#sendRemoteMuteRequestToServer --> ".concat(_this5.type, ": failed to apply remote mute ").concat(remoteMute, " to server: ").concat(remoteUpdateError));
|
|
351
|
+
return _promise.default.reject(remoteUpdateError);
|
|
352
|
+
});
|
|
353
|
+
}
|
|
270
354
|
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
355
|
+
/** Sets the mute state of the local track according to what server thinks is our state
|
|
356
|
+
* @param {Object} meeting - the meeting object
|
|
357
|
+
* @param {ServerMuteReason} serverMuteReason - reason why we're applying server mute to the local track
|
|
358
|
+
* @returns {void}
|
|
359
|
+
*/
|
|
360
|
+
}, {
|
|
361
|
+
key: "applyServerMuteToLocalTrack",
|
|
362
|
+
value: function applyServerMuteToLocalTrack(meeting, serverMuteReason) {
|
|
363
|
+
if (!this.sdkOwnsLocalTrack) {
|
|
364
|
+
var muted = this.state.server.localMute || this.state.server.remoteMute;
|
|
274
365
|
|
|
366
|
+
// update the local track mute state, but not this.state.client.localMute
|
|
367
|
+
this.muteLocalTrack(meeting, muted, serverMuteReason);
|
|
368
|
+
}
|
|
369
|
+
}
|
|
275
370
|
|
|
276
|
-
|
|
277
|
-
|
|
371
|
+
/** Applies the current value for unmute allowed to the underlying track
|
|
372
|
+
*
|
|
373
|
+
* @param {Meeting} meeting
|
|
374
|
+
* @returns {void}
|
|
375
|
+
*/
|
|
376
|
+
}, {
|
|
377
|
+
key: "applyUnmuteAllowedToTrack",
|
|
378
|
+
value: function applyUnmuteAllowedToTrack(meeting) {
|
|
379
|
+
if (!this.sdkOwnsLocalTrack) {
|
|
380
|
+
if (this.type === _constants.AUDIO) {
|
|
381
|
+
var _meeting$mediaPropert7;
|
|
382
|
+
(_meeting$mediaPropert7 = meeting.mediaProperties.audioTrack) === null || _meeting$mediaPropert7 === void 0 ? void 0 : _meeting$mediaPropert7.setUnmuteAllowed(this.state.server.unmuteAllowed);
|
|
383
|
+
} else {
|
|
384
|
+
var _meeting$mediaPropert8;
|
|
385
|
+
(_meeting$mediaPropert8 = meeting.mediaProperties.videoTrack) === null || _meeting$mediaPropert8 === void 0 ? void 0 : _meeting$mediaPropert8.setUnmuteAllowed(this.state.server.unmuteAllowed);
|
|
386
|
+
}
|
|
387
|
+
}
|
|
278
388
|
}
|
|
389
|
+
|
|
279
390
|
/**
|
|
280
391
|
* This method should be called whenever the server remote mute state is changed
|
|
281
392
|
*
|
|
282
393
|
* @public
|
|
283
394
|
* @memberof MuteState
|
|
395
|
+
* @param {Meeting} meeting
|
|
284
396
|
* @param {Boolean} [muted] true if user is remotely muted, false otherwise
|
|
285
397
|
* @param {Boolean} [unmuteAllowed] indicates if user is allowed to unmute self (false when "hard mute" feature is used)
|
|
286
398
|
* @returns {undefined}
|
|
287
399
|
*/
|
|
288
|
-
|
|
289
400
|
}, {
|
|
290
401
|
key: "handleServerRemoteMuteUpdate",
|
|
291
|
-
value: function handleServerRemoteMuteUpdate(muted, unmuteAllowed) {
|
|
402
|
+
value: function handleServerRemoteMuteUpdate(meeting, muted, unmuteAllowed) {
|
|
292
403
|
_loggerProxy.default.logger.info("Meeting:muteState#handleServerRemoteMuteUpdate --> ".concat(this.type, ": updating server remoteMute to (").concat(muted, ")"));
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
404
|
+
if (unmuteAllowed !== undefined) {
|
|
405
|
+
this.state.server.unmuteAllowed = unmuteAllowed;
|
|
406
|
+
this.applyUnmuteAllowedToTrack(meeting);
|
|
407
|
+
}
|
|
408
|
+
if (muted !== undefined) {
|
|
409
|
+
this.state.server.remoteMute = muted;
|
|
410
|
+
this.applyServerMuteToLocalTrack(meeting, 'remotelyMuted');
|
|
411
|
+
}
|
|
296
412
|
}
|
|
413
|
+
|
|
297
414
|
/**
|
|
298
415
|
* This method should be called whenever we receive from the server a requirement to locally unmute
|
|
299
416
|
*
|
|
@@ -302,24 +419,23 @@ var MuteState = /*#__PURE__*/function () {
|
|
|
302
419
|
* @param {Object} [meeting] the meeting object
|
|
303
420
|
* @returns {undefined}
|
|
304
421
|
*/
|
|
305
|
-
|
|
306
422
|
}, {
|
|
307
423
|
key: "handleServerLocalUnmuteRequired",
|
|
308
424
|
value: function handleServerLocalUnmuteRequired(meeting) {
|
|
309
425
|
_loggerProxy.default.logger.info("Meeting:muteState#handleServerLocalUnmuteRequired --> ".concat(this.type, ": localAudioUnmuteRequired received -> doing local unmute"));
|
|
310
426
|
|
|
427
|
+
// todo: I'm seeing "you can now unmute yourself " popup when this happens - but same thing happens on web.w.c so we can ignore for now
|
|
311
428
|
this.state.server.remoteMute = false;
|
|
312
429
|
this.state.client.localMute = false;
|
|
313
|
-
|
|
314
430
|
if (this.pendingPromiseReject) {
|
|
315
431
|
this.pendingPromiseReject(new Error('Server requested local unmute - this overrides any client request in progress'));
|
|
316
432
|
this.pendingPromiseResolve = null;
|
|
317
433
|
this.pendingPromiseReject = null;
|
|
318
434
|
}
|
|
319
|
-
|
|
320
|
-
this.applyClientStateLocally(meeting);
|
|
435
|
+
this.applyClientStateLocally(meeting, 'localUnmuteRequired');
|
|
321
436
|
this.applyClientStateToServer(meeting);
|
|
322
437
|
}
|
|
438
|
+
|
|
323
439
|
/**
|
|
324
440
|
* Returns true if the user is locally or remotely muted
|
|
325
441
|
*
|
|
@@ -327,32 +443,72 @@ var MuteState = /*#__PURE__*/function () {
|
|
|
327
443
|
* @memberof MuteState
|
|
328
444
|
* @returns {Boolean}
|
|
329
445
|
*/
|
|
330
|
-
|
|
331
446
|
}, {
|
|
332
447
|
key: "isMuted",
|
|
333
448
|
value: function isMuted() {
|
|
334
449
|
return this.state.client.localMute || this.state.server.localMute || this.state.server.remoteMute;
|
|
335
450
|
}
|
|
451
|
+
|
|
336
452
|
/**
|
|
337
|
-
* Returns true if the user is
|
|
453
|
+
* Returns true if the user is remotely muted
|
|
338
454
|
*
|
|
339
455
|
* @public
|
|
340
456
|
* @memberof MuteState
|
|
341
457
|
* @returns {Boolean}
|
|
342
458
|
*/
|
|
459
|
+
}, {
|
|
460
|
+
key: "isRemotelyMuted",
|
|
461
|
+
value: function isRemotelyMuted() {
|
|
462
|
+
return this.state.server.remoteMute;
|
|
463
|
+
}
|
|
343
464
|
|
|
465
|
+
/**
|
|
466
|
+
* Returns true if unmute is allowed
|
|
467
|
+
*
|
|
468
|
+
* @public
|
|
469
|
+
* @memberof MuteState
|
|
470
|
+
* @returns {Boolean}
|
|
471
|
+
*/
|
|
472
|
+
}, {
|
|
473
|
+
key: "isUnmuteAllowed",
|
|
474
|
+
value: function isUnmuteAllowed() {
|
|
475
|
+
return this.state.server.unmuteAllowed;
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
/**
|
|
479
|
+
* Returns true if the user is locally muted
|
|
480
|
+
*
|
|
481
|
+
* @public
|
|
482
|
+
* @memberof MuteState
|
|
483
|
+
* @returns {Boolean}
|
|
484
|
+
*/
|
|
485
|
+
}, {
|
|
486
|
+
key: "isLocallyMuted",
|
|
487
|
+
value: function isLocallyMuted() {
|
|
488
|
+
return this.state.client.localMute || this.state.server.localMute;
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
/**
|
|
492
|
+
* Returns true if the user is muted as a result of the client request (and not remotely muted)
|
|
493
|
+
*
|
|
494
|
+
* @public
|
|
495
|
+
* @memberof MuteState
|
|
496
|
+
* @returns {Boolean}
|
|
497
|
+
*/
|
|
344
498
|
}, {
|
|
345
499
|
key: "isSelf",
|
|
346
500
|
value: function isSelf() {
|
|
347
501
|
return this.state.client.localMute && !this.state.server.remoteMute;
|
|
348
|
-
}
|
|
502
|
+
}
|
|
349
503
|
|
|
504
|
+
// defined for backwards compatibility with the old AudioStateMachine/VideoStateMachine classes
|
|
350
505
|
}, {
|
|
351
506
|
key: "muted",
|
|
352
507
|
get: function get() {
|
|
353
508
|
return this.isMuted();
|
|
354
|
-
}
|
|
509
|
+
}
|
|
355
510
|
|
|
511
|
+
// defined for backwards compatibility with the old AudioStateMachine/VideoStateMachine classes
|
|
356
512
|
}, {
|
|
357
513
|
key: "self",
|
|
358
514
|
get: function get() {
|
|
@@ -361,7 +517,5 @@ var MuteState = /*#__PURE__*/function () {
|
|
|
361
517
|
}]);
|
|
362
518
|
return MuteState;
|
|
363
519
|
}();
|
|
364
|
-
|
|
365
|
-
var _default = createMuteState;
|
|
366
|
-
exports.default = _default;
|
|
520
|
+
exports.MuteState = MuteState;
|
|
367
521
|
//# sourceMappingURL=muteState.js.map
|