Recover mute state for moderator when returning from breakout's audio transfer

Fixes #11489
This commit is contained in:
Mario Jr 2021-02-25 15:36:11 -03:00
parent 23e65e6f40
commit 404d65d7a4
5 changed files with 25 additions and 0 deletions

View File

@ -84,6 +84,11 @@ export default lockContextContainer(withModalMounter(withTracker(({ mountModal,
const isViewer = currentUser.role === ROLE_VIEWER; const isViewer = currentUser.role === ROLE_VIEWER;
const isPresenter = currentUser.presenter; const isPresenter = currentUser.presenter;
if (Service.isReturningFromBreakoutAudioTransfer()) {
Service.setReturningFromBreakoutAudioTransfer(false);
Service.recoverMicState();
}
return ({ return ({
processToggleMuteFromOutside: arg => processToggleMuteFromOutside(arg), processToggleMuteFromOutside: arg => processToggleMuteFromOutside(arg),
showMute: isConnected() && !isListenOnly() && !isEchoTest() && !userLocks.userMic, showMute: isConnected() && !isListenOnly() && !isEchoTest() && !userLocks.userMic,

View File

@ -129,4 +129,10 @@ export default {
playAlertSound: url => AudioManager.playAlertSound(url), playAlertSound: url => AudioManager.playAlertSound(url),
updateAudioConstraints: updateAudioConstraints:
constraints => AudioManager.updateAudioConstraints(constraints), constraints => AudioManager.updateAudioConstraints(constraints),
recoverMicState,
setReturningFromBreakoutAudioTransfer: (value) => {
AudioManager.returningFromBreakoutAudioTransfer = value;
},
isReturningFromBreakoutAudioTransfer:
() => AudioManager.returningFromBreakoutAudioTransfer,
}; };

View File

@ -163,6 +163,7 @@ class BreakoutRoom extends PureComponent {
intl, intl,
isUserInBreakoutRoom, isUserInBreakoutRoom,
exitAudio, exitAudio,
setReturningFromBreakoutAudioTransfer,
} = this.props; } = this.props;
const { const {
@ -176,6 +177,7 @@ class BreakoutRoom extends PureComponent {
const disable = waiting && requestedBreakoutId !== breakoutId; const disable = waiting && requestedBreakoutId !== breakoutId;
const audioAction = joinedAudioOnly const audioAction = joinedAudioOnly
? () => { ? () => {
setReturningFromBreakoutAudioTransfer(true);
this.returnBackToMeeeting(breakoutId); this.returnBackToMeeeting(breakoutId);
return logger.debug({ return logger.debug({
logCode: 'breakoutroom_return_main_audio', logCode: 'breakoutroom_return_main_audio',

View File

@ -25,6 +25,7 @@ export default withTracker((props) => {
const breakoutRooms = findBreakouts(); const breakoutRooms = findBreakouts();
const isMicrophoneUser = AudioService.isConnected() && !AudioService.isListenOnly(); const isMicrophoneUser = AudioService.isConnected() && !AudioService.isListenOnly();
const isMeteorConnected = Meteor.status().connected; const isMeteorConnected = Meteor.status().connected;
const { setReturningFromBreakoutAudioTransfer } = AudioService;
return { return {
...props, ...props,
@ -41,5 +42,6 @@ export default withTracker((props) => {
isMeteorConnected, isMeteorConnected,
isUserInBreakoutRoom, isUserInBreakoutRoom,
exitAudio: () => AudioManager.exitAudio(), exitAudio: () => AudioManager.exitAudio(),
setReturningFromBreakoutAudioTransfer,
}; };
})(BreakoutContainer); })(BreakoutContainer);

View File

@ -37,6 +37,8 @@ class AudioManager {
tracker: new Tracker.Dependency(), tracker: new Tracker.Dependency(),
}; };
this._returningFromBreakoutAudioTransfer = false;
this.defineProperties({ this.defineProperties({
isMuted: false, isMuted: false,
isConnected: false, isConnected: false,
@ -523,6 +525,14 @@ class AudioManager {
? this.bridge.inputDeviceId : DEFAULT_INPUT_DEVICE_ID; ? this.bridge.inputDeviceId : DEFAULT_INPUT_DEVICE_ID;
} }
get returningFromBreakoutAudioTransfer() {
return this._returningFromBreakoutAudioTransfer;
}
set returningFromBreakoutAudioTransfer(value) {
this._returningFromBreakoutAudioTransfer = value;
}
set userData(value) { set userData(value) {
this._userData = value; this._userData = value;
} }