diff --git a/src/react-components/ui-root.js b/src/react-components/ui-root.js index fd0bf9b17aa927f1e383f36cd7c3231e26f7cbbf..4ad6b1a08c1368264b4d744f27699a32874134a5 100644 --- a/src/react-components/ui-root.js +++ b/src/react-components/ui-root.js @@ -288,17 +288,14 @@ class UIRoot extends Component { setMediaStreamToDefault = async () => { let hasAudio = false; - console.log(this.props.store.state); const { lastUsedMicDeviceId } = this.props.store.state; // Try to fetch last used mic, and if we don't get it then fall back to default. if (lastUsedMicDeviceId) { - console.log("Check for " + lastUsedMicDeviceId); hasAudio = await this.fetchAudioTrack({ audio: { deviceId: { exact: lastUsedMicDeviceId } } }); } if (!hasAudio) { - console.log("Use defualt"); hasAudio = await this.fetchAudioTrack({ audio: true }); } @@ -350,6 +347,8 @@ class UIRoot extends Component { setupNewMediaStream = async () => { const mediaStream = new MediaStream(); + await this.fetchMicDevices(); + if (this.state.videoTrack) { mediaStream.addTrack(this.state.videoTrack); } @@ -380,17 +379,11 @@ class UIRoot extends Component { this.setState({ micLevel: this.micLevelMovingAverage.movingAverage() }); }, 50); - setTimeout(() => { - // TODO DEAL WITH BY REFACTORING THESE METHODS TO PASS IN mediaStream; - const selectedMicDeviceId = this.selectedMicDeviceId(); - - console.log(this.selectedMicLabel()); - console.log("Save " + selectedMicDeviceId); + const micDeviceId = this.micDeviceIdForMicLabel(this.micLabelForMediaStream(mediaStream)); - if (selectedMicDeviceId) { - this.props.store.update({ lastUsedMicDeviceId: this.selectedMicDeviceId() }); - } - }, 100); + if (micDeviceId) { + this.props.store.update({ lastUsedMicDeviceId: micDeviceId }); + } this.setState({ micUpdateInterval }); } @@ -418,7 +411,6 @@ class UIRoot extends Component { beginAudioSetup = async () => { this.startTestTone(); - await this.fetchMicDevices(); this.setState({ entryStep: ENTRY_STEPS.audio_setup }); }; @@ -441,17 +433,20 @@ class UIRoot extends Component { return !!this.state.micDevices.find(d => HMD_MIC_REGEXES.find(r => d.label.match(r))); }; + micLabelForMediaStream = mediaStream => { + return (mediaStream && mediaStream.getAudioTracks().length > 0 && mediaStream.getAudioTracks()[0].label) || ""; + }; + selectedMicLabel = () => { - return ( - (this.state.mediaStream && - this.state.mediaStream.getAudioTracks().length > 0 && - this.state.mediaStream.getAudioTracks()[0].label) || - "" - ); + return this.micLabelForMediaStream(this.state.mediaStream); + }; + + micDeviceIdForMicLabel = label => { + return this.state.micDevices.filter(d => d.label === label).map(d => d.deviceId)[0]; }; selectedMicDeviceId = () => { - return this.state.micDevices.filter(d => d.label === this.selectedMicLabel()).map(d => d.deviceId)[0]; + return this.micDeviceIdForMicLabel(this.selectedMicLabel()); }; onAudioReadyButton = () => {