fix(room): нормализовать сентинел "default" выбора устройства
usePersistentUserChoices хранит «устройство не выбрано» как литерал "default", а не пустую строку — deviceId: userChoices.audioDeviceId || undefined на него не срабатывал, и в deviceId уходил сентинел. В Chrome это давало OverconstrainedError на первом визите с лишним неудачным проходом до фолбэка. Та же нормализация уже была сделана в 0.0.33 для useDeviceCheckAccess.ts — здесь то же самое для комнаты.
This commit is contained in:
@@ -452,8 +452,23 @@ export function RoomPage() {
|
||||
// dynacast: паблишер прекращает отдавать слои, на которые нет подписчиков.
|
||||
adaptiveStream: true,
|
||||
dynacast: true,
|
||||
audioCaptureDefaults: { deviceId: userChoices.audioDeviceId || undefined },
|
||||
videoCaptureDefaults: { deviceId: userChoices.videoDeviceId || undefined },
|
||||
// `usePersistentUserChoices` хранит «устройство не выбрано» как литерал
|
||||
// `"default"` (`@livekit/components-core`, `defaultUserChoices`), а не
|
||||
// пустую строку — `|| undefined` его не отсекает, и в Chrome это давало
|
||||
// `OverconstrainedError` на первом визите (см. тот же сентинел в
|
||||
// `useDeviceCheckAccess.ts::openStream`).
|
||||
audioCaptureDefaults: {
|
||||
deviceId:
|
||||
userChoices.audioDeviceId && userChoices.audioDeviceId !== 'default'
|
||||
? userChoices.audioDeviceId
|
||||
: undefined,
|
||||
},
|
||||
videoCaptureDefaults: {
|
||||
deviceId:
|
||||
userChoices.videoDeviceId && userChoices.videoDeviceId !== 'default'
|
||||
? userChoices.videoDeviceId
|
||||
: undefined,
|
||||
},
|
||||
// Аудиовыход (колонки/наушники/bluetooth) — отдельный персист, не через
|
||||
// usePersistentUserChoices: LocalUserChoices LiveKit про него не знает
|
||||
// (см. lib/audioOutputDevice.ts). Читаем один раз при монтировании —
|
||||
|
||||
Reference in New Issue
Block a user