@webex/plugin-meetings 3.0.0-beta.2 → 3.0.0-beta.20
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/breakouts/breakout.js +116 -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/index.js +226 -0
- package/dist/breakouts/index.js.map +1 -0
- package/dist/common/browser-detection.js +1 -20
- package/dist/common/browser-detection.js.map +1 -1
- package/dist/common/collection.js +5 -20
- package/dist/common/collection.js.map +1 -1
- package/dist/common/config.js +0 -7
- package/dist/common/config.js.map +1 -1
- package/dist/common/errors/captcha-error.js +10 -24
- package/dist/common/errors/captcha-error.js.map +1 -1
- package/dist/common/errors/intent-to-join.js +11 -24
- package/dist/common/errors/intent-to-join.js.map +1 -1
- package/dist/common/errors/join-meeting.js +12 -25
- package/dist/common/errors/join-meeting.js.map +1 -1
- package/dist/common/errors/media.js +10 -24
- package/dist/common/errors/media.js.map +1 -1
- package/dist/common/errors/parameter.js +5 -33
- package/dist/common/errors/parameter.js.map +1 -1
- package/dist/common/errors/password-error.js +10 -24
- package/dist/common/errors/password-error.js.map +1 -1
- package/dist/common/errors/permission.js +9 -23
- package/dist/common/errors/permission.js.map +1 -1
- package/dist/common/errors/reconnection-in-progress.js +0 -17
- package/dist/common/errors/reconnection-in-progress.js.map +1 -1
- package/dist/common/errors/reconnection.js +10 -24
- package/dist/common/errors/reconnection.js.map +1 -1
- package/dist/common/errors/stats.js +10 -24
- package/dist/common/errors/stats.js.map +1 -1
- package/dist/common/errors/webex-errors.js +6 -41
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/common/errors/webex-meetings-error.js +5 -25
- package/dist/common/errors/webex-meetings-error.js.map +1 -1
- package/dist/common/events/events-scope.js +0 -22
- package/dist/common/events/events-scope.js.map +1 -1
- package/dist/common/events/events.js +0 -23
- package/dist/common/events/events.js.map +1 -1
- package/dist/common/events/trigger-proxy.js +0 -12
- package/dist/common/events/trigger-proxy.js.map +1 -1
- package/dist/common/events/util.js +0 -15
- package/dist/common/events/util.js.map +1 -1
- package/dist/common/logs/logger-config.js +0 -4
- package/dist/common/logs/logger-config.js.map +1 -1
- package/dist/common/logs/logger-proxy.js +1 -8
- package/dist/common/logs/logger-proxy.js.map +1 -1
- package/dist/common/logs/request.js +37 -60
- package/dist/common/logs/request.js.map +1 -1
- package/dist/common/queue.js +4 -14
- package/dist/common/queue.js.map +1 -1
- package/dist/config.js +6 -6
- package/dist/config.js.map +1 -1
- package/dist/constants.js +88 -46
- package/dist/constants.js.map +1 -1
- package/dist/index.js +1 -17
- package/dist/index.js.map +1 -1
- package/dist/locus-info/controlsUtils.js +12 -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 +184 -190
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js +3 -37
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js +12 -38
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.js +92 -118
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js +34 -91
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js +67 -111
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +80 -114
- 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 +10 -12
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/meeting/effectsState.js +125 -190
- package/dist/meeting/effectsState.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +5 -14
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +1692 -1925
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/muteState.js +36 -77
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +224 -230
- 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 +43 -215
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/collection.js +6 -25
- package/dist/meeting-info/collection.js.map +1 -1
- package/dist/meeting-info/index.js +14 -32
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +193 -268
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/request.js +3 -15
- package/dist/meeting-info/request.js.map +1 -1
- package/dist/meeting-info/util.js +98 -183
- package/dist/meeting-info/util.js.map +1 -1
- package/dist/meeting-info/utilv2.js +137 -228
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.js +5 -20
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.js +490 -560
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/request.js +24 -41
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +99 -155
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +78 -86
- package/dist/member/index.js.map +1 -1
- package/dist/member/util.js +31 -68
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.js +3 -12
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +93 -200
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +16 -39
- package/dist/members/request.js.map +1 -1
- package/dist/members/util.js +9 -38
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/config.js +0 -2
- package/dist/metrics/config.js.map +1 -1
- package/dist/metrics/constants.js +1 -2
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.js +55 -135
- package/dist/metrics/index.js.map +1 -1
- package/dist/multistream/mediaRequestManager.js +57 -32
- package/dist/multistream/mediaRequestManager.js.map +1 -1
- package/dist/multistream/multistreamMedia.js +15 -21
- package/dist/multistream/multistreamMedia.js.map +1 -1
- package/dist/multistream/receiveSlot.js +10 -50
- package/dist/multistream/receiveSlot.js.map +1 -1
- package/dist/multistream/receiveSlotManager.js +45 -82
- package/dist/multistream/receiveSlotManager.js.map +1 -1
- package/dist/multistream/remoteMedia.js +18 -58
- 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 +362 -416
- package/dist/multistream/remoteMediaManager.js.map +1 -1
- package/dist/networkQualityMonitor/index.js +36 -57
- package/dist/networkQualityMonitor/index.js.map +1 -1
- package/dist/personal-meeting-room/index.js +21 -45
- package/dist/personal-meeting-room/index.js.map +1 -1
- package/dist/personal-meeting-room/request.js +1 -31
- package/dist/personal-meeting-room/request.js.map +1 -1
- package/dist/personal-meeting-room/util.js +0 -13
- package/dist/personal-meeting-room/util.js.map +1 -1
- package/dist/reachability/index.js +138 -182
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.js +3 -18
- package/dist/reachability/request.js.map +1 -1
- package/dist/reactions/constants.js +13 -0
- package/dist/reactions/constants.js.map +1 -0
- package/dist/reactions/reactions.js +109 -0
- package/dist/reactions/reactions.js.map +1 -0
- package/dist/reactions/reactions.type.js +36 -0
- package/dist/reactions/reactions.type.js.map +1 -0
- package/dist/reconnection-manager/index.js +322 -455
- 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 +39 -64
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +94 -113
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/turnDiscovery.js +85 -94
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/statsAnalyzer/global.js +0 -2
- package/dist/statsAnalyzer/global.js.map +1 -1
- package/dist/statsAnalyzer/index.js +85 -175
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js +72 -53
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/transcription/index.js +22 -47
- package/dist/transcription/index.js.map +1 -1
- package/internal-README.md +7 -6
- package/package.json +25 -20
- package/src/breakouts/README.md +190 -0
- package/src/breakouts/breakout.ts +110 -0
- package/src/breakouts/collection.ts +19 -0
- package/src/breakouts/index.ts +225 -0
- package/src/common/{browser-detection.js → browser-detection.ts} +9 -6
- package/src/common/collection.ts +9 -7
- package/src/common/{config.js → config.ts} +1 -1
- package/src/common/errors/{captcha-error.js → captcha-error.ts} +11 -7
- package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +12 -7
- package/src/common/errors/{join-meeting.js → join-meeting.ts} +17 -8
- package/src/common/errors/{media.js → media.ts} +11 -7
- package/src/common/errors/parameter.ts +11 -7
- package/src/common/errors/{password-error.js → password-error.ts} +11 -7
- package/src/common/errors/{permission.js → permission.ts} +10 -6
- package/src/common/errors/{reconnection-in-progress.js → reconnection-in-progress.ts} +0 -0
- package/src/common/errors/{reconnection.js → reconnection.ts} +11 -7
- package/src/common/errors/{stats.js → stats.ts} +11 -7
- package/src/common/errors/{webex-errors.js → webex-errors.ts} +8 -7
- package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +4 -2
- package/src/common/events/{events-scope.js → events-scope.ts} +6 -2
- package/src/common/events/{events.js → events.ts} +5 -1
- package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +9 -5
- package/src/common/events/{util.js → util.ts} +2 -3
- package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
- package/src/common/logs/logger-proxy.ts +44 -0
- package/src/common/logs/{request.js → request.ts} +22 -9
- package/src/common/queue.ts +1 -2
- package/src/{config.js → config.ts} +17 -12
- package/src/constants.ts +40 -1
- package/src/index.js +1 -1
- package/src/locus-info/controlsUtils.ts +114 -0
- package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
- package/src/locus-info/{fullState.js → fullState.ts} +16 -12
- package/src/locus-info/{hostUtils.js → hostUtils.ts} +9 -8
- package/src/locus-info/{index.js → index.ts} +148 -64
- package/src/locus-info/{infoUtils.js → infoUtils.ts} +19 -8
- package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +17 -17
- package/src/locus-info/{parser.js → parser.ts} +67 -79
- package/src/locus-info/{selfUtils.js → selfUtils.ts} +123 -68
- package/src/media/{index.js → index.ts} +181 -131
- package/src/media/{properties.js → properties.ts} +47 -28
- package/src/media/{util.js → util.ts} +2 -2
- package/src/mediaQualityMetrics/{config.js → config.ts} +46 -46
- package/src/meeting/{effectsState.js → effectsState.ts} +47 -41
- package/src/meeting/in-meeting-actions.ts +15 -3
- package/src/meeting/{index.js → index.ts} +2263 -1427
- package/src/meeting/{muteState.js → muteState.ts} +78 -42
- package/src/meeting/{request.js → request.ts} +292 -142
- package/src/meeting/request.type.ts +13 -0
- package/src/meeting/{state.js → state.ts} +50 -35
- package/src/meeting/{util.js → util.ts} +112 -115
- package/src/meeting-info/{collection.js → collection.ts} +6 -2
- package/src/meeting-info/{index.js → index.ts} +42 -36
- package/src/meeting-info/meeting-info-v2.ts +273 -0
- package/src/meeting-info/{request.js → request.ts} +14 -4
- package/src/meeting-info/{util.js → util.ts} +60 -51
- package/src/meeting-info/{utilv2.js → utilv2.ts} +65 -58
- package/src/meetings/{collection.js → collection.ts} +6 -3
- package/src/meetings/index.ts +1159 -0
- package/src/meetings/{request.js → request.ts} +32 -25
- package/src/meetings/{util.js → util.ts} +34 -32
- package/src/member/{index.js → index.ts} +102 -56
- package/src/member/{util.js → util.ts} +52 -25
- package/src/members/{collection.js → collection.ts} +2 -2
- package/src/members/{index.js → index.ts} +219 -142
- package/src/members/{request.js → request.ts} +60 -16
- package/src/members/{util.js → util.ts} +50 -48
- package/src/metrics/{config.js → config.ts} +254 -83
- package/src/metrics/{constants.js → constants.ts} +0 -2
- package/src/metrics/{index.js → index.ts} +106 -74
- package/src/multistream/mediaRequestManager.ts +81 -15
- package/src/multistream/multistreamMedia.ts +5 -0
- package/src/multistream/receiveSlot.ts +18 -12
- package/src/multistream/receiveSlotManager.ts +23 -21
- package/src/multistream/remoteMedia.ts +15 -5
- package/src/multistream/remoteMediaGroup.ts +4 -3
- package/src/multistream/remoteMediaManager.ts +153 -37
- package/src/networkQualityMonitor/{index.js → index.ts} +37 -25
- package/src/personal-meeting-room/{index.js → index.ts} +28 -19
- package/src/personal-meeting-room/{request.js → request.ts} +13 -4
- package/src/personal-meeting-room/{util.js → util.ts} +4 -4
- package/src/reachability/{index.js → index.ts} +99 -83
- package/src/reachability/request.ts +39 -33
- package/src/reactions/constants.ts +4 -0
- package/src/reactions/reactions.ts +104 -0
- package/src/reactions/reactions.type.ts +62 -0
- package/src/reconnection-manager/{index.js → index.ts} +195 -102
- 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.js → index.ts} +73 -56
- package/src/roap/request.ts +157 -0
- package/src/roap/turnDiscovery.ts +77 -37
- package/src/statsAnalyzer/{global.js → global.ts} +30 -33
- package/src/statsAnalyzer/{index.js → index.ts} +468 -192
- package/src/statsAnalyzer/mqaUtil.ts +290 -0
- package/src/transcription/{index.js → index.ts} +46 -39
- package/test/integration/spec/journey.js +664 -463
- package/test/integration/spec/space-meeting.js +320 -206
- package/test/integration/spec/transcription.js +7 -8
- package/test/unit/spec/breakouts/breakout.ts +119 -0
- package/test/unit/spec/breakouts/collection.ts +15 -0
- package/test/unit/spec/breakouts/index.ts +293 -0
- package/test/unit/spec/common/browser-detection.js +9 -28
- package/test/unit/spec/fixture/locus.js +92 -90
- package/test/unit/spec/locus-info/controlsUtils.js +25 -5
- package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
- package/test/unit/spec/locus-info/index.js +104 -2
- package/test/unit/spec/locus-info/infoUtils.js +41 -32
- package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
- package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
- package/test/unit/spec/locus-info/parser.js +3 -9
- package/test/unit/spec/locus-info/selfConstant.js +97 -103
- package/test/unit/spec/locus-info/selfUtils.js +105 -12
- package/test/unit/spec/media/index.ts +31 -47
- package/test/unit/spec/media/properties.ts +9 -9
- package/test/unit/spec/meeting/effectsState.js +39 -45
- package/test/unit/spec/meeting/in-meeting-actions.ts +5 -2
- package/test/unit/spec/meeting/index.js +2017 -742
- package/test/unit/spec/meeting/muteState.js +42 -33
- package/test/unit/spec/meeting/request.js +115 -44
- package/test/unit/spec/meeting/utils.js +104 -171
- package/test/unit/spec/meeting-info/meetinginfov2.js +100 -73
- 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 +110 -74
- package/test/unit/spec/meetings/collection.js +1 -1
- package/test/unit/spec/meetings/index.js +439 -257
- package/test/unit/spec/meetings/utils.js +14 -12
- package/test/unit/spec/member/index.js +0 -1
- package/test/unit/spec/member/util.js +31 -7
- package/test/unit/spec/members/index.js +104 -54
- package/test/unit/spec/members/request.js +29 -20
- package/test/unit/spec/members/utils.js +8 -5
- package/test/unit/spec/metrics/index.js +16 -21
- package/test/unit/spec/multistream/mediaRequestManager.ts +316 -50
- package/test/unit/spec/multistream/receiveSlot.ts +6 -6
- package/test/unit/spec/multistream/receiveSlotManager.ts +13 -13
- package/test/unit/spec/multistream/remoteMedia.ts +10 -2
- package/test/unit/spec/multistream/remoteMediaGroup.ts +5 -5
- package/test/unit/spec/multistream/remoteMediaManager.ts +412 -65
- package/test/unit/spec/networkQualityMonitor/index.js +21 -15
- package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
- package/test/unit/spec/reachability/index.ts +58 -26
- package/test/unit/spec/reconnection-manager/index.js +102 -9
- package/test/unit/spec/recording-controller/index.js +231 -0
- package/test/unit/spec/recording-controller/util.js +102 -0
- package/test/unit/spec/roap/index.ts +2 -1
- package/test/unit/spec/roap/request.ts +114 -0
- package/test/unit/spec/roap/turnDiscovery.ts +64 -45
- package/test/unit/spec/stats-analyzer/index.js +27 -22
- package/test/utils/cmr.js +44 -42
- package/test/utils/testUtils.js +83 -74
- package/test/utils/webex-config.js +18 -18
- package/test/utils/webex-test-users.js +54 -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/peer-connection-manager/util.js +0 -124
- package/dist/peer-connection-manager/util.js.map +0 -1
- package/src/common/logs/logger-proxy.js +0 -33
- package/src/locus-info/controlsUtils.js +0 -102
- package/src/media/internal-media-core-wrapper.ts +0 -9
- package/src/meeting-info/meeting-info-v2.js +0 -255
- package/src/meetings/index.js +0 -1015
- package/src/peer-connection-manager/util.ts +0 -117
- package/src/roap/request.js +0 -127
- package/src/statsAnalyzer/mqaUtil.js +0 -173
- package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -389
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
|
|
2
1
|
import LoggerProxy from '../common/logs/logger-proxy';
|
|
3
2
|
import ParameterError from '../common/errors/parameter';
|
|
4
3
|
import PermissionError from '../common/errors/permission';
|
|
5
4
|
import Media from '../media';
|
|
6
|
-
import MeetingUtil from '
|
|
5
|
+
import MeetingUtil from './util';
|
|
7
6
|
import {AUDIO, VIDEO} from '../constants';
|
|
8
7
|
|
|
9
|
-
|
|
10
8
|
/* Certain aspects of server interaction for video muting are not implemented as we currently don't support remote muting of video.
|
|
11
9
|
If we ever need to support it, search for REMOTE_MUTE_VIDEO_MISSING_IMPLEMENTATION string to find the places that need updating
|
|
12
10
|
*/
|
|
@@ -19,7 +17,9 @@ const createMuteState = (type, meeting, mediaDirection) => {
|
|
|
19
17
|
return null;
|
|
20
18
|
}
|
|
21
19
|
|
|
22
|
-
LoggerProxy.logger.info(
|
|
20
|
+
LoggerProxy.logger.info(
|
|
21
|
+
`Meeting:muteState#createMuteState --> ${type}: creating MuteState for meeting id ${meeting?.id}`
|
|
22
|
+
);
|
|
23
23
|
|
|
24
24
|
return new MuteState(type, meeting);
|
|
25
25
|
};
|
|
@@ -30,28 +30,33 @@ const createMuteState = (type, meeting, mediaDirection) => {
|
|
|
30
30
|
More info about Locus muting API: https://sqbu-github.cisco.com/pages/WebExSquared/locus/guides/mute.html#
|
|
31
31
|
*/
|
|
32
32
|
class MuteState {
|
|
33
|
+
pendingPromiseReject: any;
|
|
34
|
+
pendingPromiseResolve: any;
|
|
35
|
+
state: any;
|
|
36
|
+
type: any;
|
|
37
|
+
|
|
33
38
|
/**
|
|
34
39
|
* Constructor
|
|
35
40
|
*
|
|
36
41
|
* @param {String} type - audio or video
|
|
37
42
|
* @param {Object} meeting - the meeting object (used for reading current remote mute status)
|
|
38
43
|
*/
|
|
39
|
-
constructor(type, meeting) {
|
|
40
|
-
if (
|
|
44
|
+
constructor(type: string, meeting: any) {
|
|
45
|
+
if (type !== AUDIO && type !== VIDEO) {
|
|
41
46
|
throw new ParameterError('Mute state is designed for handling audio or video only');
|
|
42
47
|
}
|
|
43
48
|
this.type = type;
|
|
44
49
|
this.state = {
|
|
45
50
|
client: {
|
|
46
|
-
localMute: false
|
|
51
|
+
localMute: false,
|
|
47
52
|
},
|
|
48
53
|
server: {
|
|
49
54
|
localMute: false,
|
|
50
55
|
// initial values available only for audio (REMOTE_MUTE_VIDEO_MISSING_IMPLEMENTATION)
|
|
51
56
|
remoteMute: type === AUDIO ? meeting.remoteMuted : false,
|
|
52
|
-
unmuteAllowed: type === AUDIO ? meeting.unmuteAllowed : true
|
|
57
|
+
unmuteAllowed: type === AUDIO ? meeting.unmuteAllowed : true,
|
|
53
58
|
},
|
|
54
|
-
syncToServerInProgress: false
|
|
59
|
+
syncToServerInProgress: false,
|
|
55
60
|
};
|
|
56
61
|
// these 2 hold the resolve, reject methods for the promise we returned to the client in last handleClientRequest() call
|
|
57
62
|
this.pendingPromiseResolve = null;
|
|
@@ -72,11 +77,15 @@ class MuteState {
|
|
|
72
77
|
* @param {Boolean} [mute] true for muting, false for unmuting request
|
|
73
78
|
* @returns {Promise}
|
|
74
79
|
*/
|
|
75
|
-
handleClientRequest(meeting, mute) {
|
|
76
|
-
LoggerProxy.logger.info(
|
|
80
|
+
public handleClientRequest(meeting?: object, mute?: boolean) {
|
|
81
|
+
LoggerProxy.logger.info(
|
|
82
|
+
`Meeting:muteState#handleClientRequest --> ${this.type}: user requesting new mute state: ${mute}`
|
|
83
|
+
);
|
|
77
84
|
|
|
78
85
|
if (!mute && !this.state.server.unmuteAllowed) {
|
|
79
|
-
return Promise.reject(
|
|
86
|
+
return Promise.reject(
|
|
87
|
+
new PermissionError('User is not allowed to unmute self (hard mute feature is being used)')
|
|
88
|
+
);
|
|
80
89
|
}
|
|
81
90
|
|
|
82
91
|
// 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,
|
|
@@ -103,10 +112,10 @@ class MuteState {
|
|
|
103
112
|
* @memberof MuteState
|
|
104
113
|
* @returns {void}
|
|
105
114
|
*/
|
|
106
|
-
applyClientStateLocally(meeting) {
|
|
115
|
+
public applyClientStateLocally(meeting?: any) {
|
|
107
116
|
Media.setLocalTrack(
|
|
108
117
|
!this.state.client.localMute,
|
|
109
|
-
|
|
118
|
+
this.type === AUDIO ? meeting.mediaProperties.audioTrack : meeting.mediaProperties.videoTrack
|
|
110
119
|
);
|
|
111
120
|
}
|
|
112
121
|
|
|
@@ -118,21 +127,29 @@ class MuteState {
|
|
|
118
127
|
* @memberof MuteState
|
|
119
128
|
* @returns {void}
|
|
120
129
|
*/
|
|
121
|
-
applyClientStateToServer(meeting) {
|
|
130
|
+
private applyClientStateToServer(meeting?: object) {
|
|
122
131
|
if (this.state.syncToServerInProgress) {
|
|
123
|
-
LoggerProxy.logger.info(
|
|
132
|
+
LoggerProxy.logger.info(
|
|
133
|
+
`Meeting:muteState#applyClientStateToServer --> ${this.type}: request to server in progress, we need to wait for it to complete`
|
|
134
|
+
);
|
|
124
135
|
|
|
125
136
|
return;
|
|
126
137
|
}
|
|
127
138
|
|
|
128
|
-
const localMuteRequiresSync =
|
|
129
|
-
const remoteMuteRequiresSync =
|
|
139
|
+
const localMuteRequiresSync = this.state.client.localMute !== this.state.server.localMute;
|
|
140
|
+
const remoteMuteRequiresSync = !this.state.client.localMute && this.state.server.remoteMute;
|
|
130
141
|
|
|
131
|
-
LoggerProxy.logger.info(
|
|
132
|
-
|
|
142
|
+
LoggerProxy.logger.info(
|
|
143
|
+
`Meeting:muteState#applyClientStateToServer --> ${this.type}: localMuteRequiresSync: ${localMuteRequiresSync} (${this.state.client.localMute} ?= ${this.state.server.localMute})`
|
|
144
|
+
);
|
|
145
|
+
LoggerProxy.logger.info(
|
|
146
|
+
`Meeting:muteState#applyClientStateToServer --> ${this.type}: remoteMuteRequiresSync: ${remoteMuteRequiresSync}`
|
|
147
|
+
);
|
|
133
148
|
|
|
134
149
|
if (!localMuteRequiresSync && !remoteMuteRequiresSync) {
|
|
135
|
-
LoggerProxy.logger.info(
|
|
150
|
+
LoggerProxy.logger.info(
|
|
151
|
+
`Meeting:muteState#applyClientStateToServer --> ${this.type}: client state already matching server state, nothing to do`
|
|
152
|
+
);
|
|
136
153
|
|
|
137
154
|
if (this.pendingPromiseResolve) {
|
|
138
155
|
this.pendingPromiseResolve();
|
|
@@ -146,15 +163,20 @@ class MuteState {
|
|
|
146
163
|
this.state.syncToServerInProgress = true;
|
|
147
164
|
|
|
148
165
|
// first sync local mute with server
|
|
149
|
-
const localMuteSyncPromise =
|
|
166
|
+
const localMuteSyncPromise = localMuteRequiresSync
|
|
167
|
+
? this.sendLocalMuteRequestToServer(meeting)
|
|
168
|
+
: Promise.resolve();
|
|
150
169
|
|
|
151
170
|
localMuteSyncPromise
|
|
152
171
|
.then(() =>
|
|
153
172
|
// then follow it up with remote mute sync
|
|
154
|
-
|
|
173
|
+
remoteMuteRequiresSync ? this.sendRemoteMuteRequestToServer(meeting) : Promise.resolve()
|
|
174
|
+
)
|
|
155
175
|
.then(() => {
|
|
156
176
|
this.state.syncToServerInProgress = false;
|
|
157
|
-
LoggerProxy.logger.info(
|
|
177
|
+
LoggerProxy.logger.info(
|
|
178
|
+
`Meeting:muteState#applyClientStateToServer --> ${this.type}: sync with server completed`
|
|
179
|
+
);
|
|
158
180
|
|
|
159
181
|
// need to check if a new sync is required, because this.state.client may have changed while we were doing the current sync
|
|
160
182
|
this.applyClientStateToServer(meeting);
|
|
@@ -178,11 +200,15 @@ class MuteState {
|
|
|
178
200
|
* @memberof MuteState
|
|
179
201
|
* @returns {Promise}
|
|
180
202
|
*/
|
|
181
|
-
sendLocalMuteRequestToServer(meeting) {
|
|
182
|
-
const audioMuted =
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
203
|
+
private sendLocalMuteRequestToServer(meeting?: any) {
|
|
204
|
+
const audioMuted =
|
|
205
|
+
this.type === AUDIO ? this.state.client.localMute : meeting.audio?.state.client.localMute;
|
|
206
|
+
const videoMuted =
|
|
207
|
+
this.type === VIDEO ? this.state.client.localMute : meeting.video?.state.client.localMute;
|
|
208
|
+
|
|
209
|
+
LoggerProxy.logger.info(
|
|
210
|
+
`Meeting:muteState#sendLocalMuteRequestToServer --> ${this.type}: sending local mute (audio=${audioMuted}, video=${videoMuted}) to server`
|
|
211
|
+
);
|
|
186
212
|
|
|
187
213
|
return MeetingUtil.remoteUpdateAudioVideo(audioMuted, videoMuted, meeting)
|
|
188
214
|
.then((locus) => {
|
|
@@ -190,7 +216,7 @@ class MuteState {
|
|
|
190
216
|
`Meeting:muteState#sendLocalMuteRequestToServer --> ${this.type}: local mute (audio=${audioMuted}, video=${videoMuted}) applied to server`
|
|
191
217
|
);
|
|
192
218
|
|
|
193
|
-
this.state.server.localMute =
|
|
219
|
+
this.state.server.localMute = this.type === AUDIO ? audioMuted : videoMuted;
|
|
194
220
|
|
|
195
221
|
meeting.locusInfo.onFullLocus(locus);
|
|
196
222
|
|
|
@@ -205,7 +231,6 @@ class MuteState {
|
|
|
205
231
|
});
|
|
206
232
|
}
|
|
207
233
|
|
|
208
|
-
|
|
209
234
|
/**
|
|
210
235
|
* Sets the remote mute value in the server
|
|
211
236
|
*
|
|
@@ -214,13 +239,16 @@ class MuteState {
|
|
|
214
239
|
* @memberof MuteState
|
|
215
240
|
* @returns {Promise}
|
|
216
241
|
*/
|
|
217
|
-
sendRemoteMuteRequestToServer(meeting) {
|
|
242
|
+
private sendRemoteMuteRequestToServer(meeting?: any) {
|
|
218
243
|
if (this.type === AUDIO) {
|
|
219
244
|
const remoteMute = this.state.client.localMute;
|
|
220
245
|
|
|
221
|
-
LoggerProxy.logger.info(
|
|
246
|
+
LoggerProxy.logger.info(
|
|
247
|
+
`Meeting:muteState#sendRemoteMuteRequestToServer --> ${this.type}: sending remote mute:${remoteMute} to server`
|
|
248
|
+
);
|
|
222
249
|
|
|
223
|
-
return meeting.members
|
|
250
|
+
return meeting.members
|
|
251
|
+
.muteMember(meeting.members.selfId, remoteMute)
|
|
224
252
|
.then(() => {
|
|
225
253
|
LoggerProxy.logger.info(
|
|
226
254
|
`Meeting:muteState#sendRemoteMuteRequestToServer --> ${this.type}: remote mute:${remoteMute} applied to server`
|
|
@@ -252,8 +280,10 @@ class MuteState {
|
|
|
252
280
|
* @param {Boolean} [unmuteAllowed] indicates if user is allowed to unmute self (false when "hard mute" feature is used)
|
|
253
281
|
* @returns {undefined}
|
|
254
282
|
*/
|
|
255
|
-
handleServerRemoteMuteUpdate(muted, unmuteAllowed) {
|
|
256
|
-
LoggerProxy.logger.info(
|
|
283
|
+
public handleServerRemoteMuteUpdate(muted?: boolean, unmuteAllowed?: boolean) {
|
|
284
|
+
LoggerProxy.logger.info(
|
|
285
|
+
`Meeting:muteState#handleServerRemoteMuteUpdate --> ${this.type}: updating server remoteMute to (${muted})`
|
|
286
|
+
);
|
|
257
287
|
this.state.server.remoteMute = muted;
|
|
258
288
|
this.state.server.unmuteAllowed = unmuteAllowed;
|
|
259
289
|
}
|
|
@@ -266,14 +296,18 @@ class MuteState {
|
|
|
266
296
|
* @param {Object} [meeting] the meeting object
|
|
267
297
|
* @returns {undefined}
|
|
268
298
|
*/
|
|
269
|
-
handleServerLocalUnmuteRequired(meeting) {
|
|
270
|
-
LoggerProxy.logger.info(
|
|
299
|
+
public handleServerLocalUnmuteRequired(meeting?: object) {
|
|
300
|
+
LoggerProxy.logger.info(
|
|
301
|
+
`Meeting:muteState#handleServerLocalUnmuteRequired --> ${this.type}: localAudioUnmuteRequired received -> doing local unmute`
|
|
302
|
+
);
|
|
271
303
|
|
|
272
304
|
this.state.server.remoteMute = false;
|
|
273
305
|
this.state.client.localMute = false;
|
|
274
306
|
|
|
275
307
|
if (this.pendingPromiseReject) {
|
|
276
|
-
this.pendingPromiseReject(
|
|
308
|
+
this.pendingPromiseReject(
|
|
309
|
+
new Error('Server requested local unmute - this overrides any client request in progress')
|
|
310
|
+
);
|
|
277
311
|
this.pendingPromiseResolve = null;
|
|
278
312
|
this.pendingPromiseReject = null;
|
|
279
313
|
}
|
|
@@ -289,8 +323,10 @@ class MuteState {
|
|
|
289
323
|
* @memberof MuteState
|
|
290
324
|
* @returns {Boolean}
|
|
291
325
|
*/
|
|
292
|
-
isMuted() {
|
|
293
|
-
return
|
|
326
|
+
public isMuted() {
|
|
327
|
+
return (
|
|
328
|
+
this.state.client.localMute || this.state.server.localMute || this.state.server.remoteMute
|
|
329
|
+
);
|
|
294
330
|
}
|
|
295
331
|
|
|
296
332
|
/**
|
|
@@ -300,7 +336,7 @@ class MuteState {
|
|
|
300
336
|
* @memberof MuteState
|
|
301
337
|
* @returns {Boolean}
|
|
302
338
|
*/
|
|
303
|
-
isSelf() {
|
|
339
|
+
public isSelf() {
|
|
304
340
|
return this.state.client.localMute && !this.state.server.remoteMute;
|
|
305
341
|
}
|
|
306
342
|
|