diff --git a/src/livekit/MediaDevicesContext.tsx b/src/livekit/MediaDevicesContext.tsx index a85b687c..2ca695cd 100644 --- a/src/livekit/MediaDevicesContext.tsx +++ b/src/livekit/MediaDevicesContext.tsx @@ -322,43 +322,42 @@ export const MediaDevicesProvider: FC = ({ children }) => { }; function useControlledOutput(): MediaDeviceHandle { - const { available, deviceForEarpiece: physicalDeviceForEarpiceMode } = - useObservableEagerState( - useObservable(() => { - const outputDeviceData$ = setAvailableOutputDevices$.pipe( - startWith([]), - map((devices) => { - const deviceForEarpiece = devices.find((d) => d.forEarpiece); - const deviceMapTuple: [string, DeviceLabel][] = devices.map( - ({ id, name, isEarpiece, isSpeaker /*,isExternalHeadset*/ }) => { - let deviceLabel: DeviceLabel = { type: "name", name }; - // if (isExternalHeadset) // Do we want this? - if (isEarpiece) deviceLabel = { type: "earpiece" }; - if (isSpeaker) deviceLabel = { type: "default", name }; - return [id, deviceLabel]; - }, - ); - return { - devicesMap: new Map(deviceMapTuple), - deviceForEarpiece, - }; - }), - ); + const { available } = useObservableEagerState( + useObservable(() => { + const outputDeviceData$ = setAvailableOutputDevices$.pipe( + startWith([]), + map((devices) => { + const deviceForEarpiece = devices.find((d) => d.forEarpiece); + const deviceMapTuple: [string, DeviceLabel][] = devices.map( + ({ id, name, isEarpiece, isSpeaker /*,isExternalHeadset*/ }) => { + let deviceLabel: DeviceLabel = { type: "name", name }; + // if (isExternalHeadset) // Do we want this? + if (isEarpiece) deviceLabel = { type: "earpiece" }; + if (isSpeaker) deviceLabel = { type: "default", name }; + return [id, deviceLabel]; + }, + ); + return { + devicesMap: new Map(deviceMapTuple), + deviceForEarpiece, + }; + }), + ); - return combineLatest([outputDeviceData$, iosDeviceMenu$]).pipe( - map(([{ devicesMap, deviceForEarpiece }, iosShowEarpiece]) => { - let available = devicesMap; - if (iosShowEarpiece && !!deviceForEarpiece) { - available = new Map([ - ...devicesMap.entries(), - [EARPIECE_CONFIG_ID, { type: "earpiece" }], - ]); - } - return { available, deviceForEarpiece }; - }), - ); - }), - ); + return combineLatest([outputDeviceData$, iosDeviceMenu$]).pipe( + map(([{ devicesMap, deviceForEarpiece }, iosShowEarpiece]) => { + let available = devicesMap; + if (iosShowEarpiece && !!deviceForEarpiece) { + available = new Map([ + ...devicesMap.entries(), + [EARPIECE_CONFIG_ID, { type: "earpiece" }], + ]); + } + return { available, deviceForEarpiece }; + }), + ); + }), + ); const [preferredId, setPreferredId] = useSetting(audioOutputSetting); useEffect(() => { setOutputDevice$.subscribe((id) => { diff --git a/src/settings/SettingsModal.tsx b/src/settings/SettingsModal.tsx index 44559dee..262cbaa5 100644 --- a/src/settings/SettingsModal.tsx +++ b/src/settings/SettingsModal.tsx @@ -11,7 +11,7 @@ import { type MatrixClient } from "matrix-js-sdk"; import { Button, Root as Form, Separator } from "@vector-im/compound-web"; import { type Room as LivekitRoom } from "livekit-client"; import { useObservableEagerState } from "observable-hooks"; -// import { logger } from "matrix-js-sdk/lib/logger"; +import { logger } from "matrix-js-sdk/lib/logger"; import { Modal } from "../Modal"; import styles from "./SettingsModal.module.css"; @@ -128,12 +128,12 @@ export const SettingsModal: FC = ({ {iosDeviceMenu && ( )}