diff --git a/bbb-api-demo/src/main/webapp/demo_iframe.jsp b/bbb-api-demo/src/main/webapp/demo_iframe.jsp index 3cd02f6fda6db623efc735311ae0a3e3a8e19f5f..e8aafb61d2849581eee2c88b0f9705ab10e31b0d 100644 --- a/bbb-api-demo/src/main/webapp/demo_iframe.jsp +++ b/bbb-api-demo/src/main/webapp/demo_iframe.jsp @@ -133,10 +133,11 @@ muteButton.id = 'muteButton'; function getInitialState() { document.getElementById('client-content').contentWindow.postMessage('c_recording_status', '*'); - document.getElementById('client-content').contentWindow.postMessage('c_mute_status', '*'); + document.getElementById('client-content').contentWindow.postMessage('get_audio_joined_status', '*'); } function handleMessage(e) { + let neverJoinedAudio = true; switch (e) { case 'readyToConnect': { // get initial state @@ -160,11 +161,18 @@ function handleMessage(e) { case 'notInAudio': { muteButton.innerHTML = 'Not in audio'; document.getElementById('muteButton').disabled = true; + if (neverJoinedAudio) { + // poll every 1 sec to check if we joined audio + setTimeout(function(){ + document.getElementById('client-content').contentWindow.postMessage('get_audio_joined_status', '*'); + }, 1000);} break; } case 'joinedAudio': { + neverJoinedAudio = false; muteButton.innerHTML = ''; - document.getElementById('muteButton').disabled = false; getInitialState(); + document.getElementById('muteButton').disabled = false; + document.getElementById('client-content').contentWindow.postMessage('c_mute_status', '*'); break; } default: console.log('neither', { e }); 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 b2334ede83a8d269b2a0f1313bdae8309f8543db..6e7124fad1da3e9b40beda8021e76b0b75e2701d 100644 --- a/bigbluebutton-html5/imports/ui/components/audio/audio-controls/container.jsx +++ b/bigbluebutton-html5/imports/ui/components/audio/audio-controls/container.jsx @@ -15,11 +15,12 @@ const processToggleMuteFromOutside = (e) => { makeCall('toggleSelfVoice'); break; } + case 'get_audio_joined_status': { + const audioJoinedState = AudioManager.isConnected ? 'joinedAudio' : 'notInAudio'; + this.window.parent.postMessage({ response: audioJoinedState }, '*'); + break; + } case 'c_mute_status': { - if (!AudioManager.isUsingAudio()) { - this.window.parent.postMessage({ response: 'notInAudio' }, '*'); - return; - } const muteState = AudioManager.isMuted ? 'selfMuted' : 'selfUnmuted'; this.window.parent.postMessage({ response: muteState }, '*'); break;