diff --git a/bigbluebutton-html5/imports/ui/components/audio/service.js b/bigbluebutton-html5/imports/ui/components/audio/service.js index eab4d128bd5b6739fc0ac31f4df9a67154919238..da8531e73007b8d07b958e557c146a77ba2eb128 100755 --- a/bigbluebutton-html5/imports/ui/components/audio/service.js +++ b/bigbluebutton-html5/imports/ui/components/audio/service.js @@ -130,4 +130,5 @@ export default { }, isReturningFromBreakoutAudioTransfer: () => AudioManager.returningFromBreakoutAudioTransfer, + isReconnecting: () => AudioManager.isReconnecting, }; diff --git a/bigbluebutton-html5/imports/ui/components/breakout-room/component.jsx b/bigbluebutton-html5/imports/ui/components/breakout-room/component.jsx index c075d762d1470ec8cc03c460e8290d66684d3991..bdb8898a575b466a0720b4496bbde62780ecb8b3 100644 --- a/bigbluebutton-html5/imports/ui/components/breakout-room/component.jsx +++ b/bigbluebutton-html5/imports/ui/components/breakout-room/component.jsx @@ -101,11 +101,14 @@ class BreakoutRoom extends PureComponent { breakoutRoomUser, breakoutRooms, closeBreakoutPanel, + isMicrophoneUser, + isReconnecting, } = this.props; const { waiting, requestedBreakoutId, + joinedAudioOnly, } = this.state; if (breakoutRooms.length <= 0) closeBreakoutPanel(); @@ -119,6 +122,10 @@ class BreakoutRoom extends PureComponent { _.delay(() => this.setState({ waiting: false }), 1000); } } + + if (joinedAudioOnly && (!isMicrophoneUser || isReconnecting)) { + this.clearJoinedAudioOnly(); + } } getBreakoutURL(breakoutId) { @@ -143,6 +150,10 @@ class BreakoutRoom extends PureComponent { return null; } + clearJoinedAudioOnly() { + this.setState({ joinedAudioOnly: false }); + } + transferUserToBreakoutRoom(breakoutId) { const { transferToBreakout } = this.props; transferToBreakout(breakoutId); diff --git a/bigbluebutton-html5/imports/ui/components/breakout-room/container.jsx b/bigbluebutton-html5/imports/ui/components/breakout-room/container.jsx index a118057d345c73ce0e0ff61d3b9646d9d4a6ce2c..f092a239a79af991125593d57d06ae6596095c86 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 isReconnecting = AudioService.isReconnecting(); const { setReturningFromBreakoutAudioTransfer } = AudioService; return { @@ -43,5 +44,6 @@ export default withTracker((props) => { isUserInBreakoutRoom, exitAudio: () => AudioManager.exitAudio(), setReturningFromBreakoutAudioTransfer, + isReconnecting, }; })(BreakoutContainer); diff --git a/bigbluebutton-html5/imports/ui/services/audio-manager/index.js b/bigbluebutton-html5/imports/ui/services/audio-manager/index.js index 5213040d9053df335111aae62171d799992a0d40..3cc168e467b0e5fcc3ab6bf654a2fb94cf27fdee 100755 --- a/bigbluebutton-html5/imports/ui/services/audio-manager/index.js +++ b/bigbluebutton-html5/imports/ui/services/audio-manager/index.js @@ -52,6 +52,7 @@ class AudioManager { outputDeviceId: null, muteHandle: null, autoplayBlocked: false, + isReconnecting: false, }); this.useKurento = Meteor.settings.public.kurento.enableListenOnly; @@ -393,12 +394,15 @@ class AudioManager { } = response; if (status === STARTED) { + this.isReconnecting = false; this.onAudioJoin(); resolve(STARTED); } else if (status === ENDED) { + this.isReconnecting = false; logger.info({ logCode: 'audio_ended' }, 'Audio ended without issue'); this.onAudioExit(); } else if (status === FAILED) { + this.isReconnecting = false; const errorKey = this.messages.error[error] || this.messages.error.GENERIC_ERROR; const errorMsg = this.intl.formatMessage(errorKey, { 0: bridgeError }); this.error = !!error; @@ -416,10 +420,12 @@ class AudioManager { this.onAudioExit(); } } else if (status === RECONNECTING) { + this.isReconnecting = true; logger.info({ logCode: 'audio_reconnecting' }, 'Attempting to reconnect audio'); this.notify(this.intl.formatMessage(this.messages.info.RECONNECTING_AUDIO), true); this.playHangUpSound(); } else if (status === AUTOPLAY_BLOCKED) { + this.isReconnecting = false; this.autoplayBlocked = true; this.onAudioJoin(); resolve(AUTOPLAY_BLOCKED);