@webex/plugin-meetings 3.0.0-beta.13 → 3.0.0-beta.15
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/common/browser-detection.js +1 -0
- package/dist/common/browser-detection.js.map +1 -1
- package/dist/common/collection.js.map +1 -1
- package/dist/common/errors/captcha-error.js +5 -5
- package/dist/common/errors/captcha-error.js.map +1 -1
- package/dist/common/errors/intent-to-join.js +5 -5
- package/dist/common/errors/intent-to-join.js.map +1 -1
- package/dist/common/errors/join-meeting.js +6 -6
- package/dist/common/errors/join-meeting.js.map +1 -1
- package/dist/common/errors/media.js +5 -5
- package/dist/common/errors/media.js.map +1 -1
- package/dist/common/errors/parameter.js +5 -5
- package/dist/common/errors/parameter.js.map +1 -1
- package/dist/common/errors/password-error.js +5 -5
- package/dist/common/errors/password-error.js.map +1 -1
- package/dist/common/errors/permission.js +4 -4
- package/dist/common/errors/permission.js.map +1 -1
- package/dist/common/errors/reconnection.js +5 -5
- package/dist/common/errors/reconnection.js.map +1 -1
- package/dist/common/errors/stats.js +5 -5
- package/dist/common/errors/stats.js.map +1 -1
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/common/errors/webex-meetings-error.js.map +1 -1
- package/dist/common/events/events-scope.js.map +1 -1
- package/dist/common/events/events.js.map +1 -1
- package/dist/common/events/trigger-proxy.js.map +1 -1
- package/dist/common/events/util.js.map +1 -1
- package/dist/common/logs/logger-proxy.js.map +1 -1
- package/dist/common/logs/request.js.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/constants.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/fullState.js.map +1 -1
- package/dist/locus-info/hostUtils.js.map +1 -1
- package/dist/locus-info/index.js +11 -8
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.js +2 -1
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js +2 -1
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js.map +1 -1
- package/dist/media/internal-media-core-wrapper.js.map +1 -1
- package/dist/media/properties.js.map +1 -1
- package/dist/media/util.js +1 -1
- package/dist/media/util.js.map +1 -1
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/meeting/effectsState.js +1 -1
- package/dist/meeting/effectsState.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +118 -89
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/muteState.js +1 -1
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +25 -0
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/request.type.js +8 -0
- package/dist/meeting/request.type.js.map +1 -0
- package/dist/meeting/state.js +5 -5
- package/dist/meeting/state.js.map +1 -1
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/collection.js.map +1 -1
- package/dist/meeting-info/index.js +2 -2
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +48 -48
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/request.js.map +1 -1
- package/dist/meeting-info/util.js.map +1 -1
- package/dist/meeting-info/utilv2.js +1 -1
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.js +251 -250
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/request.js +2 -2
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +14 -14
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +31 -31
- package/dist/member/index.js.map +1 -1
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +43 -43
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js.map +1 -1
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/config.js.map +1 -1
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.js +23 -20
- package/dist/metrics/index.js.map +1 -1
- package/dist/multistream/multistreamMedia.js +2 -1
- package/dist/multistream/multistreamMedia.js.map +1 -1
- package/dist/multistream/receiveSlot.js.map +1 -1
- package/dist/multistream/receiveSlotManager.js +2 -0
- package/dist/multistream/receiveSlotManager.js.map +1 -1
- package/dist/multistream/remoteMedia.js.map +1 -1
- package/dist/multistream/remoteMediaGroup.js.map +1 -1
- package/dist/multistream/remoteMediaManager.js.map +1 -1
- package/dist/networkQualityMonitor/index.js +8 -8
- package/dist/networkQualityMonitor/index.js.map +1 -1
- package/dist/personal-meeting-room/index.js +7 -7
- package/dist/personal-meeting-room/index.js.map +1 -1
- package/dist/personal-meeting-room/request.js.map +1 -1
- package/dist/personal-meeting-room/util.js.map +1 -1
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.js.map +1 -1
- package/dist/reactions/reactions.js.map +1 -1
- package/dist/reactions/reactions.type.js +3 -1
- package/dist/reactions/reactions.type.js.map +1 -1
- package/dist/reconnection-manager/index.js +4 -4
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/roap/index.js +5 -5
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/statsAnalyzer/global.js.map +1 -1
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/transcription/index.js +4 -1
- package/dist/transcription/index.js.map +1 -1
- package/internal-README.md +7 -6
- package/package.json +18 -18
- 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 +11 -11
- package/src/constants.ts +1 -1
- package/src/index.js +1 -1
- package/src/locus-info/controlsUtils.ts +34 -24
- package/src/locus-info/fullState.ts +15 -11
- package/src/locus-info/hostUtils.ts +4 -3
- package/src/locus-info/index.ts +25 -34
- package/src/locus-info/infoUtils.ts +12 -4
- package/src/locus-info/mediaSharesUtils.ts +4 -4
- package/src/locus-info/parser.ts +45 -68
- package/src/locus-info/selfUtils.ts +106 -57
- package/src/media/index.ts +123 -135
- package/src/media/internal-media-core-wrapper.ts +2 -2
- package/src/media/properties.ts +30 -20
- package/src/media/util.ts +1 -1
- package/src/mediaQualityMetrics/config.ts +46 -46
- package/src/meeting/effectsState.ts +35 -35
- package/src/meeting/in-meeting-actions.ts +7 -3
- package/src/meeting/index.ts +1576 -1291
- package/src/meeting/muteState.ts +62 -31
- package/src/meeting/request.ts +174 -113
- package/src/meeting/request.type.ts +11 -0
- package/src/meeting/state.ts +45 -30
- package/src/meeting/util.ts +101 -70
- package/src/meeting-info/collection.ts +2 -1
- package/src/meeting-info/index.ts +32 -30
- package/src/meeting-info/meeting-info-v2.ts +106 -108
- package/src/meeting-info/request.ts +9 -3
- package/src/meeting-info/util.ts +54 -46
- package/src/meeting-info/utilv2.ts +59 -53
- package/src/meetings/collection.ts +1 -1
- package/src/meetings/index.ts +512 -440
- package/src/meetings/request.ts +26 -24
- package/src/meetings/util.ts +29 -29
- package/src/member/index.ts +55 -49
- package/src/member/util.ts +26 -13
- package/src/members/collection.ts +0 -1
- package/src/members/index.ts +182 -126
- package/src/members/request.ts +46 -14
- package/src/members/util.ts +44 -42
- package/src/metrics/config.ts +254 -81
- package/src/metrics/constants.ts +0 -2
- package/src/metrics/index.ts +84 -71
- package/src/multistream/multistreamMedia.ts +1 -0
- package/src/multistream/receiveSlot.ts +1 -0
- package/src/multistream/receiveSlotManager.ts +1 -0
- package/src/multistream/remoteMedia.ts +1 -1
- package/src/multistream/remoteMediaGroup.ts +2 -1
- package/src/multistream/remoteMediaManager.ts +3 -0
- package/src/networkQualityMonitor/index.ts +20 -23
- 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 +61 -59
- package/src/reachability/request.ts +36 -32
- package/src/reactions/reactions.ts +4 -4
- package/src/reactions/reactions.type.ts +4 -3
- package/src/reconnection-manager/index.ts +139 -84
- package/src/roap/index.ts +46 -38
- package/src/roap/request.ts +44 -31
- package/src/roap/turnDiscovery.ts +59 -30
- package/src/statsAnalyzer/global.ts +30 -33
- package/src/statsAnalyzer/index.ts +432 -175
- package/src/statsAnalyzer/mqaUtil.ts +178 -72
- package/src/transcription/index.ts +34 -32
- package/test/integration/spec/journey.js +663 -462
- package/test/integration/spec/space-meeting.js +318 -203
- package/test/integration/spec/transcription.js +6 -7
- 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 +5 -5
- package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
- package/test/unit/spec/locus-info/index.js +1 -2
- 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 +72 -103
- package/test/unit/spec/locus-info/selfUtils.js +21 -12
- package/test/unit/spec/meeting/effectsState.js +36 -46
- package/test/unit/spec/meeting/in-meeting-actions.ts +2 -3
- package/test/unit/spec/meeting/index.js +1342 -684
- package/test/unit/spec/meeting/muteState.js +42 -33
- package/test/unit/spec/meeting/request.js +75 -45
- package/test/unit/spec/meeting/utils.js +78 -53
- 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 +438 -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 +5 -6
- 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/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 +9 -11
- package/test/unit/spec/reconnection-manager/index.js +16 -18
- package/test/unit/spec/roap/turnDiscovery.ts +22 -19
- package/test/unit/spec/stats-analyzer/index.js +25 -20
- 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 +53 -50
package/src/meeting/muteState.ts
CHANGED
|
@@ -2,15 +2,13 @@ import LoggerProxy from '../common/logs/logger-proxy';
|
|
|
2
2
|
import ParameterError from '../common/errors/parameter';
|
|
3
3
|
import PermissionError from '../common/errors/permission';
|
|
4
4
|
import Media from '../media';
|
|
5
|
-
import MeetingUtil from '
|
|
5
|
+
import MeetingUtil from './util';
|
|
6
6
|
import {AUDIO, VIDEO} from '../constants';
|
|
7
7
|
|
|
8
|
-
|
|
9
8
|
/* Certain aspects of server interaction for video muting are not implemented as we currently don't support remote muting of video.
|
|
10
9
|
If we ever need to support it, search for REMOTE_MUTE_VIDEO_MISSING_IMPLEMENTATION string to find the places that need updating
|
|
11
10
|
*/
|
|
12
11
|
|
|
13
|
-
|
|
14
12
|
const createMuteState = (type, meeting, mediaDirection) => {
|
|
15
13
|
if (type === AUDIO && !mediaDirection.sendAudio) {
|
|
16
14
|
return null;
|
|
@@ -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
|
};
|
|
@@ -42,21 +42,21 @@ class MuteState {
|
|
|
42
42
|
* @param {Object} meeting - the meeting object (used for reading current remote mute status)
|
|
43
43
|
*/
|
|
44
44
|
constructor(type: string, meeting: any) {
|
|
45
|
-
if (
|
|
45
|
+
if (type !== AUDIO && type !== VIDEO) {
|
|
46
46
|
throw new ParameterError('Mute state is designed for handling audio or video only');
|
|
47
47
|
}
|
|
48
48
|
this.type = type;
|
|
49
49
|
this.state = {
|
|
50
50
|
client: {
|
|
51
|
-
localMute: false
|
|
51
|
+
localMute: false,
|
|
52
52
|
},
|
|
53
53
|
server: {
|
|
54
54
|
localMute: false,
|
|
55
55
|
// initial values available only for audio (REMOTE_MUTE_VIDEO_MISSING_IMPLEMENTATION)
|
|
56
56
|
remoteMute: type === AUDIO ? meeting.remoteMuted : false,
|
|
57
|
-
unmuteAllowed: type === AUDIO ? meeting.unmuteAllowed : true
|
|
57
|
+
unmuteAllowed: type === AUDIO ? meeting.unmuteAllowed : true,
|
|
58
58
|
},
|
|
59
|
-
syncToServerInProgress: false
|
|
59
|
+
syncToServerInProgress: false,
|
|
60
60
|
};
|
|
61
61
|
// these 2 hold the resolve, reject methods for the promise we returned to the client in last handleClientRequest() call
|
|
62
62
|
this.pendingPromiseResolve = null;
|
|
@@ -78,10 +78,14 @@ class MuteState {
|
|
|
78
78
|
* @returns {Promise}
|
|
79
79
|
*/
|
|
80
80
|
public handleClientRequest(meeting?: object, mute?: boolean) {
|
|
81
|
-
LoggerProxy.logger.info(
|
|
81
|
+
LoggerProxy.logger.info(
|
|
82
|
+
`Meeting:muteState#handleClientRequest --> ${this.type}: user requesting new mute state: ${mute}`
|
|
83
|
+
);
|
|
82
84
|
|
|
83
85
|
if (!mute && !this.state.server.unmuteAllowed) {
|
|
84
|
-
return Promise.reject(
|
|
86
|
+
return Promise.reject(
|
|
87
|
+
new PermissionError('User is not allowed to unmute self (hard mute feature is being used)')
|
|
88
|
+
);
|
|
85
89
|
}
|
|
86
90
|
|
|
87
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,
|
|
@@ -111,7 +115,7 @@ class MuteState {
|
|
|
111
115
|
public applyClientStateLocally(meeting?: any) {
|
|
112
116
|
Media.setLocalTrack(
|
|
113
117
|
!this.state.client.localMute,
|
|
114
|
-
|
|
118
|
+
this.type === AUDIO ? meeting.mediaProperties.audioTrack : meeting.mediaProperties.videoTrack
|
|
115
119
|
);
|
|
116
120
|
}
|
|
117
121
|
|
|
@@ -125,19 +129,27 @@ class MuteState {
|
|
|
125
129
|
*/
|
|
126
130
|
private applyClientStateToServer(meeting?: object) {
|
|
127
131
|
if (this.state.syncToServerInProgress) {
|
|
128
|
-
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
|
+
);
|
|
129
135
|
|
|
130
136
|
return;
|
|
131
137
|
}
|
|
132
138
|
|
|
133
|
-
const localMuteRequiresSync =
|
|
134
|
-
const remoteMuteRequiresSync =
|
|
139
|
+
const localMuteRequiresSync = this.state.client.localMute !== this.state.server.localMute;
|
|
140
|
+
const remoteMuteRequiresSync = !this.state.client.localMute && this.state.server.remoteMute;
|
|
135
141
|
|
|
136
|
-
LoggerProxy.logger.info(
|
|
137
|
-
|
|
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
|
+
);
|
|
138
148
|
|
|
139
149
|
if (!localMuteRequiresSync && !remoteMuteRequiresSync) {
|
|
140
|
-
LoggerProxy.logger.info(
|
|
150
|
+
LoggerProxy.logger.info(
|
|
151
|
+
`Meeting:muteState#applyClientStateToServer --> ${this.type}: client state already matching server state, nothing to do`
|
|
152
|
+
);
|
|
141
153
|
|
|
142
154
|
if (this.pendingPromiseResolve) {
|
|
143
155
|
this.pendingPromiseResolve();
|
|
@@ -151,15 +163,20 @@ class MuteState {
|
|
|
151
163
|
this.state.syncToServerInProgress = true;
|
|
152
164
|
|
|
153
165
|
// first sync local mute with server
|
|
154
|
-
const localMuteSyncPromise =
|
|
166
|
+
const localMuteSyncPromise = localMuteRequiresSync
|
|
167
|
+
? this.sendLocalMuteRequestToServer(meeting)
|
|
168
|
+
: Promise.resolve();
|
|
155
169
|
|
|
156
170
|
localMuteSyncPromise
|
|
157
171
|
.then(() =>
|
|
158
172
|
// then follow it up with remote mute sync
|
|
159
|
-
|
|
173
|
+
remoteMuteRequiresSync ? this.sendRemoteMuteRequestToServer(meeting) : Promise.resolve()
|
|
174
|
+
)
|
|
160
175
|
.then(() => {
|
|
161
176
|
this.state.syncToServerInProgress = false;
|
|
162
|
-
LoggerProxy.logger.info(
|
|
177
|
+
LoggerProxy.logger.info(
|
|
178
|
+
`Meeting:muteState#applyClientStateToServer --> ${this.type}: sync with server completed`
|
|
179
|
+
);
|
|
163
180
|
|
|
164
181
|
// need to check if a new sync is required, because this.state.client may have changed while we were doing the current sync
|
|
165
182
|
this.applyClientStateToServer(meeting);
|
|
@@ -184,10 +201,14 @@ class MuteState {
|
|
|
184
201
|
* @returns {Promise}
|
|
185
202
|
*/
|
|
186
203
|
private sendLocalMuteRequestToServer(meeting?: any) {
|
|
187
|
-
const audioMuted =
|
|
188
|
-
|
|
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;
|
|
189
208
|
|
|
190
|
-
LoggerProxy.logger.info(
|
|
209
|
+
LoggerProxy.logger.info(
|
|
210
|
+
`Meeting:muteState#sendLocalMuteRequestToServer --> ${this.type}: sending local mute (audio=${audioMuted}, video=${videoMuted}) to server`
|
|
211
|
+
);
|
|
191
212
|
|
|
192
213
|
return MeetingUtil.remoteUpdateAudioVideo(audioMuted, videoMuted, meeting)
|
|
193
214
|
.then((locus) => {
|
|
@@ -195,7 +216,7 @@ class MuteState {
|
|
|
195
216
|
`Meeting:muteState#sendLocalMuteRequestToServer --> ${this.type}: local mute (audio=${audioMuted}, video=${videoMuted}) applied to server`
|
|
196
217
|
);
|
|
197
218
|
|
|
198
|
-
this.state.server.localMute =
|
|
219
|
+
this.state.server.localMute = this.type === AUDIO ? audioMuted : videoMuted;
|
|
199
220
|
|
|
200
221
|
meeting.locusInfo.onFullLocus(locus);
|
|
201
222
|
|
|
@@ -210,7 +231,6 @@ class MuteState {
|
|
|
210
231
|
});
|
|
211
232
|
}
|
|
212
233
|
|
|
213
|
-
|
|
214
234
|
/**
|
|
215
235
|
* Sets the remote mute value in the server
|
|
216
236
|
*
|
|
@@ -223,9 +243,12 @@ class MuteState {
|
|
|
223
243
|
if (this.type === AUDIO) {
|
|
224
244
|
const remoteMute = this.state.client.localMute;
|
|
225
245
|
|
|
226
|
-
LoggerProxy.logger.info(
|
|
246
|
+
LoggerProxy.logger.info(
|
|
247
|
+
`Meeting:muteState#sendRemoteMuteRequestToServer --> ${this.type}: sending remote mute:${remoteMute} to server`
|
|
248
|
+
);
|
|
227
249
|
|
|
228
|
-
return meeting.members
|
|
250
|
+
return meeting.members
|
|
251
|
+
.muteMember(meeting.members.selfId, remoteMute)
|
|
229
252
|
.then(() => {
|
|
230
253
|
LoggerProxy.logger.info(
|
|
231
254
|
`Meeting:muteState#sendRemoteMuteRequestToServer --> ${this.type}: remote mute:${remoteMute} applied to server`
|
|
@@ -258,7 +281,9 @@ class MuteState {
|
|
|
258
281
|
* @returns {undefined}
|
|
259
282
|
*/
|
|
260
283
|
public handleServerRemoteMuteUpdate(muted?: boolean, unmuteAllowed?: boolean) {
|
|
261
|
-
LoggerProxy.logger.info(
|
|
284
|
+
LoggerProxy.logger.info(
|
|
285
|
+
`Meeting:muteState#handleServerRemoteMuteUpdate --> ${this.type}: updating server remoteMute to (${muted})`
|
|
286
|
+
);
|
|
262
287
|
this.state.server.remoteMute = muted;
|
|
263
288
|
this.state.server.unmuteAllowed = unmuteAllowed;
|
|
264
289
|
}
|
|
@@ -272,13 +297,17 @@ class MuteState {
|
|
|
272
297
|
* @returns {undefined}
|
|
273
298
|
*/
|
|
274
299
|
public handleServerLocalUnmuteRequired(meeting?: object) {
|
|
275
|
-
LoggerProxy.logger.info(
|
|
300
|
+
LoggerProxy.logger.info(
|
|
301
|
+
`Meeting:muteState#handleServerLocalUnmuteRequired --> ${this.type}: localAudioUnmuteRequired received -> doing local unmute`
|
|
302
|
+
);
|
|
276
303
|
|
|
277
304
|
this.state.server.remoteMute = false;
|
|
278
305
|
this.state.client.localMute = false;
|
|
279
306
|
|
|
280
307
|
if (this.pendingPromiseReject) {
|
|
281
|
-
this.pendingPromiseReject(
|
|
308
|
+
this.pendingPromiseReject(
|
|
309
|
+
new Error('Server requested local unmute - this overrides any client request in progress')
|
|
310
|
+
);
|
|
282
311
|
this.pendingPromiseResolve = null;
|
|
283
312
|
this.pendingPromiseReject = null;
|
|
284
313
|
}
|
|
@@ -295,7 +324,9 @@ class MuteState {
|
|
|
295
324
|
* @returns {Boolean}
|
|
296
325
|
*/
|
|
297
326
|
public isMuted() {
|
|
298
|
-
return
|
|
327
|
+
return (
|
|
328
|
+
this.state.client.localMute || this.state.server.localMute || this.state.server.remoteMute
|
|
329
|
+
);
|
|
299
330
|
}
|
|
300
331
|
|
|
301
332
|
/**
|