Skip to content
Snippets Groups Projects
Commit a216703c authored by Anton Georgiev's avatar Anton Georgiev
Browse files

avoid race condition when detecting user join from outside iframe

parent 0c38ed32
No related branches found
No related tags found
No related merge requests found
...@@ -133,10 +133,11 @@ muteButton.id = 'muteButton'; ...@@ -133,10 +133,11 @@ muteButton.id = 'muteButton';
function getInitialState() { function getInitialState() {
document.getElementById('client-content').contentWindow.postMessage('c_recording_status', '*'); 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) { function handleMessage(e) {
let neverJoinedAudio = true;
switch (e) { switch (e) {
case 'readyToConnect': { case 'readyToConnect': {
// get initial state // get initial state
...@@ -160,11 +161,18 @@ function handleMessage(e) { ...@@ -160,11 +161,18 @@ function handleMessage(e) {
case 'notInAudio': { case 'notInAudio': {
muteButton.innerHTML = 'Not in audio'; muteButton.innerHTML = 'Not in audio';
document.getElementById('muteButton').disabled = true; 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; break;
} }
case 'joinedAudio': { case 'joinedAudio': {
neverJoinedAudio = false;
muteButton.innerHTML = ''; muteButton.innerHTML = '';
document.getElementById('muteButton').disabled = false; getInitialState(); document.getElementById('muteButton').disabled = false;
document.getElementById('client-content').contentWindow.postMessage('c_mute_status', '*');
break; break;
} }
default: console.log('neither', { e }); default: console.log('neither', { e });
......
...@@ -15,11 +15,12 @@ const processToggleMuteFromOutside = (e) => { ...@@ -15,11 +15,12 @@ const processToggleMuteFromOutside = (e) => {
makeCall('toggleSelfVoice'); makeCall('toggleSelfVoice');
break; break;
} }
case 'get_audio_joined_status': {
const audioJoinedState = AudioManager.isConnected ? 'joinedAudio' : 'notInAudio';
this.window.parent.postMessage({ response: audioJoinedState }, '*');
break;
}
case 'c_mute_status': { case 'c_mute_status': {
if (!AudioManager.isUsingAudio()) {
this.window.parent.postMessage({ response: 'notInAudio' }, '*');
return;
}
const muteState = AudioManager.isMuted ? 'selfMuted' : 'selfUnmuted'; const muteState = AudioManager.isMuted ? 'selfMuted' : 'selfUnmuted';
this.window.parent.postMessage({ response: muteState }, '*'); this.window.parent.postMessage({ response: muteState }, '*');
break; break;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment