fix: review comments.
This commit is contained in:
parent
4daddd341d
commit
1e2f9160b5
|
@ -237,15 +237,18 @@ function sendData(command, value) {
|
||||||
/**
|
/**
|
||||||
* Mute or unmute local audio stream if it exists.
|
* Mute or unmute local audio stream if it exists.
|
||||||
* @param {boolean} muted - if audio stream should be muted or unmuted.
|
* @param {boolean} muted - if audio stream should be muted or unmuted.
|
||||||
|
*
|
||||||
|
* @returns {Promise}
|
||||||
*/
|
*/
|
||||||
function muteLocalAudio(muted) {
|
function muteLocalAudio(muted) {
|
||||||
APP.store.dispatch(setAudioMuted(muted));
|
return APP.store.dispatch(setAudioMuted(muted));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Mute or unmute local video stream if it exists.
|
* Mute or unmute local video stream if it exists.
|
||||||
* @param {boolean} muted if video stream should be muted or unmuted.
|
* @param {boolean} muted if video stream should be muted or unmuted.
|
||||||
*
|
*
|
||||||
|
* @returns {Promise}
|
||||||
*/
|
*/
|
||||||
function muteLocalVideo(muted) {
|
function muteLocalVideo(muted) {
|
||||||
return APP.store.dispatch(setVideoMuted(muted));
|
return APP.store.dispatch(setVideoMuted(muted));
|
||||||
|
@ -769,15 +772,21 @@ export default {
|
||||||
logger.warn('initial device list initialization failed', error);
|
logger.warn('initial device list initialization failed', error);
|
||||||
}
|
}
|
||||||
|
|
||||||
const handleStartAudioMuted = (options, tracks) => {
|
const handleStartAudioMuted = async (options, tracks) => {
|
||||||
if (options.startWithAudioMuted) {
|
if (options.startWithAudioMuted) {
|
||||||
// Always add the track on Safari because of a known issue where audio playout doesn't happen
|
// Always add the track on Safari because of a known issue where audio playout doesn't happen
|
||||||
// if the user joins audio and video muted, i.e., if there is no local media capture.
|
// if the user joins audio and video muted, i.e., if there is no local media capture.
|
||||||
if (browser.isWebKitBased()) {
|
if (browser.isWebKitBased()) {
|
||||||
this.muteAudio(true, true);
|
try {
|
||||||
} else {
|
await this.muteAudio(true, true);
|
||||||
return tracks.filter(track => track.getType() !== MEDIA_TYPE.AUDIO);
|
} catch (error) {
|
||||||
|
logger.error('Unmute audio failed!');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return tracks;
|
||||||
|
}
|
||||||
|
|
||||||
|
return tracks.filter(track => track.getType() !== MEDIA_TYPE.AUDIO);
|
||||||
}
|
}
|
||||||
|
|
||||||
return tracks;
|
return tracks;
|
||||||
|
@ -815,22 +824,26 @@ export default {
|
||||||
|
|
||||||
this._displayErrorsForCreateInitialLocalTracks(errors);
|
this._displayErrorsForCreateInitialLocalTracks(errors);
|
||||||
|
|
||||||
let localTracks = handleStartAudioMuted(initialOptions, tracks);
|
return handleStartAudioMuted(initialOptions, tracks)
|
||||||
|
.then(localTracks => {
|
||||||
|
let filteredTracks = localTracks;
|
||||||
|
|
||||||
// in case where gum is slow and resolves after the startAudio/VideoMuted coming from jicofo, we
|
// in case where gum is slow and resolves after the startAudio/VideoMuted coming from
|
||||||
// can be join unmuted even though jicofo had instruct us to mute, so let's respect that before
|
// jicofo, we can be join unmuted even though jicofo had instruct us to mute, so let's
|
||||||
// passing the tracks
|
// respect that before passing the tracks
|
||||||
if (!browser.isWebKitBased()) {
|
if (!browser.isWebKitBased()) {
|
||||||
if (room?.isStartAudioMuted()) {
|
if (room?.isStartAudioMuted()) {
|
||||||
localTracks = localTracks.filter(track => track.getType() !== MEDIA_TYPE.AUDIO);
|
filteredTracks
|
||||||
|
= filteredTracks.filter(track => track.getType() !== MEDIA_TYPE.AUDIO);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (room?.isStartVideoMuted()) {
|
if (room?.isStartVideoMuted()) {
|
||||||
localTracks = localTracks.filter(track => track.getType() !== MEDIA_TYPE.VIDEO);
|
filteredTracks = filteredTracks.filter(track => track.getType() !== MEDIA_TYPE.VIDEO);
|
||||||
}
|
}
|
||||||
|
|
||||||
return this._setLocalAudioVideoStreams(localTracks);
|
return this._setLocalAudioVideoStreams(filteredTracks);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
@ -841,7 +854,8 @@ export default {
|
||||||
promise.then(() => {
|
promise.then(() => {
|
||||||
this._initDeviceList(true);
|
this._initDeviceList(true);
|
||||||
});
|
});
|
||||||
promise = promise.then(([ tracks, con ]) => [ handleStartAudioMuted(initialOptions, tracks), con ]);
|
promise = promise.then(
|
||||||
|
([ tracks, con ]) => handleStartAudioMuted(initialOptions, tracks).then(lTracks => [ lTracks, con ]));
|
||||||
|
|
||||||
return promise;
|
return promise;
|
||||||
};
|
};
|
||||||
|
@ -929,6 +943,8 @@ export default {
|
||||||
* @param {boolean} mute true for mute and false for unmute.
|
* @param {boolean} mute true for mute and false for unmute.
|
||||||
* @param {boolean} [showUI] when set to false will not display any error
|
* @param {boolean} [showUI] when set to false will not display any error
|
||||||
* dialogs in case of media permissions error.
|
* dialogs in case of media permissions error.
|
||||||
|
*
|
||||||
|
* @returns {Promise}
|
||||||
*/
|
*/
|
||||||
muteAudio(mute, showUI = true) {
|
muteAudio(mute, showUI = true) {
|
||||||
const state = APP.store.getState();
|
const state = APP.store.getState();
|
||||||
|
@ -937,7 +953,7 @@ export default {
|
||||||
&& isUserInteractionRequiredForUnmute(state)) {
|
&& isUserInteractionRequiredForUnmute(state)) {
|
||||||
logger.error('Unmuting audio requires user interaction');
|
logger.error('Unmuting audio requires user interaction');
|
||||||
|
|
||||||
return;
|
return Promise.resolve();
|
||||||
}
|
}
|
||||||
|
|
||||||
// check for A/V Moderation when trying to unmute
|
// check for A/V Moderation when trying to unmute
|
||||||
|
@ -946,7 +962,7 @@ export default {
|
||||||
APP.store.dispatch(showModeratedNotification(MEDIA_TYPE.AUDIO));
|
APP.store.dispatch(showModeratedNotification(MEDIA_TYPE.AUDIO));
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return Promise.resolve();
|
||||||
}
|
}
|
||||||
|
|
||||||
APP.store.dispatch(executeTrackOperation(TrackOperationType.Audio, () => {
|
APP.store.dispatch(executeTrackOperation(TrackOperationType.Audio, () => {
|
||||||
|
@ -1484,12 +1500,10 @@ export default {
|
||||||
const oldTrack = getLocalJitsiAudioTrack(APP.store.getState());
|
const oldTrack = getLocalJitsiAudioTrack(APP.store.getState());
|
||||||
|
|
||||||
if (oldTrack === newTrack) {
|
if (oldTrack === newTrack) {
|
||||||
Promise.resolve();
|
return Promise.resolve();
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
APP.store.dispatch(replaceLocalTrack(oldTrack, newTrack, room))
|
return APP.store.dispatch(replaceLocalTrack(oldTrack, newTrack, room))
|
||||||
.then(() => {
|
.then(() => {
|
||||||
this.setAudioMuteStatus(this.isLocalAudioMuted());
|
this.setAudioMuteStatus(this.isLocalAudioMuted());
|
||||||
});
|
});
|
||||||
|
@ -2070,11 +2084,7 @@ export default {
|
||||||
|| (videoMuted && type === MEDIA_TYPE.VIDEO)) {
|
|| (videoMuted && type === MEDIA_TYPE.VIDEO)) {
|
||||||
promises.push(dispatch(executeTrackOperation(
|
promises.push(dispatch(executeTrackOperation(
|
||||||
type === MEDIA_TYPE.AUDIO ? TrackOperationType.Audio : TrackOperationType.Video,
|
type === MEDIA_TYPE.AUDIO ? TrackOperationType.Audio : TrackOperationType.Video,
|
||||||
() => {
|
() => dispatch(replaceStoredTracks(jitsiTrack, null)))));
|
||||||
console.error('replace stored track track');
|
|
||||||
|
|
||||||
return dispatch(replaceStoredTracks(jitsiTrack, null));
|
|
||||||
})));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue