Fix device selection persistence bug

This commit is contained in:
Miriam Zimmerman 2024-10-07 16:32:31 -04:00 committed by GitHub
parent bad065859c
commit a3b972f6e7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 157 additions and 67 deletions

View file

@ -15,6 +15,7 @@ import {
import { awaitObject } from '../../util/awaitObject';
import { DurationInSeconds } from '../../util/durations';
import { createSetting, createCallback } from '../../util/preload';
import { findBestMatchingAudioDeviceIndex } from '../../calling/findBestMatchingDevice';
function doneRendering() {
ipcRenderer.send('settings-done-rendering');
@ -239,6 +240,30 @@ async function renderPreferences() {
const preferredSystemLocales =
MinimalSignalContext.getPreferredSystemLocales();
const selectedMicIndex = findBestMatchingAudioDeviceIndex(
{
available: availableMicrophones,
preferred: selectedMicrophone,
},
OS.isWindows()
);
const recomputedSelectedMicrophone =
selectedMicIndex !== undefined
? availableMicrophones[selectedMicIndex]
: undefined;
const selectedSpeakerIndex = findBestMatchingAudioDeviceIndex(
{
available: availableSpeakers,
preferred: selectedSpeaker,
},
OS.isWindows()
);
const recomputedSelectedSpeaker =
selectedSpeakerIndex !== undefined
? availableSpeakers[selectedSpeakerIndex]
: undefined;
const props = {
// Settings
availableCameras,
@ -279,8 +304,8 @@ async function renderPreferences() {
preferredSystemLocales,
resolvedLocale,
selectedCamera,
selectedMicrophone,
selectedSpeaker,
selectedMicrophone: recomputedSelectedMicrophone,
selectedSpeaker: recomputedSelectedSpeaker,
sentMediaQualitySetting,
themeSetting,
universalExpireTimer: DurationInSeconds.fromSeconds(universalExpireTimer),