diff --git a/bigbluebutton-html5/imports/ui/components/audio/audio-controls/container.jsx b/bigbluebutton-html5/imports/ui/components/audio/audio-controls/container.jsx index e73416ede48c6897bf4cf7c2aaa32c791b18cbf0..35123b946226a8c3b76630f8aea61e325bb29a98 100755 --- a/bigbluebutton-html5/imports/ui/components/audio/audio-controls/container.jsx +++ b/bigbluebutton-html5/imports/ui/components/audio/audio-controls/container.jsx @@ -84,6 +84,11 @@ export default lockContextContainer(withModalMounter(withTracker(({ mountModal, const isViewer = currentUser.role === ROLE_VIEWER; const isPresenter = currentUser.presenter; + if (Service.isReturningFromBreakoutAudioTransfer()) { + Service.setReturningFromBreakoutAudioTransfer(false); + Service.recoverMicState(); + } + return ({ processToggleMuteFromOutside: arg => processToggleMuteFromOutside(arg), showMute: isConnected() && !isListenOnly() && !isEchoTest() && !userLocks.userMic, diff --git a/bigbluebutton-html5/imports/ui/components/audio/service.js b/bigbluebutton-html5/imports/ui/components/audio/service.js index 25f5159e91dca9d68063df6d2ab25dae9c5f9fa6..b5caac4531e782021f9605c7d7c0a926a6738ed7 100755 --- a/bigbluebutton-html5/imports/ui/components/audio/service.js +++ b/bigbluebutton-html5/imports/ui/components/audio/service.js @@ -129,4 +129,10 @@ export default { playAlertSound: url => AudioManager.playAlertSound(url), updateAudioConstraints: constraints => AudioManager.updateAudioConstraints(constraints), + recoverMicState, + setReturningFromBreakoutAudioTransfer: (value) => { + AudioManager.returningFromBreakoutAudioTransfer = value; + }, + isReturningFromBreakoutAudioTransfer: + () => AudioManager.returningFromBreakoutAudioTransfer, }; diff --git a/bigbluebutton-html5/imports/ui/components/breakout-room/component.jsx b/bigbluebutton-html5/imports/ui/components/breakout-room/component.jsx index 0ba5df04cc78ae5f2d485d38237021190172706f..41b5b89864da4388b9cc836af645713ee7a69c27 100644 --- a/bigbluebutton-html5/imports/ui/components/breakout-room/component.jsx +++ b/bigbluebutton-html5/imports/ui/components/breakout-room/component.jsx @@ -163,6 +163,7 @@ class BreakoutRoom extends PureComponent { intl, isUserInBreakoutRoom, exitAudio, + setReturningFromBreakoutAudioTransfer, } = this.props; const { @@ -176,6 +177,7 @@ class BreakoutRoom extends PureComponent { const disable = waiting && requestedBreakoutId !== breakoutId; const audioAction = joinedAudioOnly ? () => { + setReturningFromBreakoutAudioTransfer(true); this.returnBackToMeeeting(breakoutId); return logger.debug({ logCode: 'breakoutroom_return_main_audio', diff --git a/bigbluebutton-html5/imports/ui/components/breakout-room/container.jsx b/bigbluebutton-html5/imports/ui/components/breakout-room/container.jsx index 4cc8d0788472ae996f57e92de8a3cb10ca2b7cf4..a118057d345c73ce0e0ff61d3b9646d9d4a6ce2c 100644 --- a/bigbluebutton-html5/imports/ui/components/breakout-room/container.jsx +++ b/bigbluebutton-html5/imports/ui/components/breakout-room/container.jsx @@ -25,6 +25,7 @@ export default withTracker((props) => { const breakoutRooms = findBreakouts(); const isMicrophoneUser = AudioService.isConnected() && !AudioService.isListenOnly(); const isMeteorConnected = Meteor.status().connected; + const { setReturningFromBreakoutAudioTransfer } = AudioService; return { ...props, @@ -41,5 +42,6 @@ export default withTracker((props) => { isMeteorConnected, isUserInBreakoutRoom, exitAudio: () => AudioManager.exitAudio(), + setReturningFromBreakoutAudioTransfer, }; })(BreakoutContainer); diff --git a/bigbluebutton-html5/imports/ui/services/audio-manager/index.js b/bigbluebutton-html5/imports/ui/services/audio-manager/index.js index f5c020879464709dabc3c67484cceef93d6674d2..000d427a09690589d471a5490d646e5d5c24d405 100755 --- a/bigbluebutton-html5/imports/ui/services/audio-manager/index.js +++ b/bigbluebutton-html5/imports/ui/services/audio-manager/index.js @@ -37,6 +37,8 @@ class AudioManager { tracker: new Tracker.Dependency(), }; + this._returningFromBreakoutAudioTransfer = false; + this.defineProperties({ isMuted: false, isConnected: false, @@ -523,6 +525,14 @@ class AudioManager { ? this.bridge.inputDeviceId : DEFAULT_INPUT_DEVICE_ID; } + get returningFromBreakoutAudioTransfer() { + return this._returningFromBreakoutAudioTransfer; + } + + set returningFromBreakoutAudioTransfer(value) { + this._returningFromBreakoutAudioTransfer = value; + } + set userData(value) { this._userData = value; }