fix: review comments.

This commit is contained in:
Hristo Terezov 2022-12-07 18:27:26 -06:00
parent 4daddd341d
commit 1e2f9160b5
1 changed files with 40 additions and 30 deletions

View File

@ -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));
})));
} }
} }