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