From fdbc47fdd0aebc2d0b2a6b3c81238a7ba5da7d9b Mon Sep 17 00:00:00 2001 From: Timo K Date: Tue, 19 Sep 2023 13:09:01 +0200 Subject: [PATCH] cannot use lk isFireFox Signed-off-by: Timo K --- src/livekit/MediaDevicesContext.tsx | 8 ++++---- src/settings/SettingsModal.tsx | 4 ++-- src/settings/useSetting.ts | 8 ++++++-- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/livekit/MediaDevicesContext.tsx b/src/livekit/MediaDevicesContext.tsx index fdd44a6b..38e30214 100644 --- a/src/livekit/MediaDevicesContext.tsx +++ b/src/livekit/MediaDevicesContext.tsx @@ -26,9 +26,9 @@ import { } from "react"; import { createMediaDeviceObserver } from "@livekit/components-core"; import { Observable } from "rxjs"; -import { isFireFox } from "livekit-client/dist/src/room/utils"; import { + isFirefox, useAudioInput, useAudioOutput, useVideoInput, @@ -128,11 +128,11 @@ export const MediaDevicesProvider: FC = ({ children }) => { const usingNames = numCallersUsingNames > 0; // Use output device names for output devices on all platforms except FF. - const useOutputNames = usingNames && !isFireFox(); + const useOutputNames = usingNames && !isFirefox(); // Setting the audio device to sth. else than 'undefined' breaks echo-cancellation // and even can introduce multiple different output devices for one call. - const alwaysUseDefaultAudio = isFireFox(); + const alwaysUseDefaultAudio = isFirefox(); const [audioInputSetting, setAudioInputSetting] = useAudioInput(); const [audioOutputSetting, setAudioOutputSetting] = useAudioOutput(); @@ -163,7 +163,7 @@ export const MediaDevicesProvider: FC = ({ children }) => { useEffect(() => { // Skip setting state for ff output. Redundent since it is set to always return 'undefined' // but makes it clear while debugging that this is not happening on FF. + perf ;) - if (audioOutput.selectedId !== undefined && !isFireFox()) + if (audioOutput.selectedId !== undefined && !isFirefox()) setAudioOutputSetting(audioOutput.selectedId); }, [setAudioOutputSetting, audioOutput.selectedId]); diff --git a/src/settings/SettingsModal.tsx b/src/settings/SettingsModal.tsx index ea4c9d6d..d029906f 100644 --- a/src/settings/SettingsModal.tsx +++ b/src/settings/SettingsModal.tsx @@ -18,7 +18,6 @@ import { ChangeEvent, Key, useCallback, useState } from "react"; import { Item } from "@react-stately/collections"; import { Trans, useTranslation } from "react-i18next"; import { MatrixClient } from "matrix-js-sdk"; -import { isFireFox } from "livekit-client/dist/src/room/utils"; import { Modal } from "../Modal"; import styles from "./SettingsModal.module.css"; @@ -36,6 +35,7 @@ import { useDeveloperSettingsTab, useShowConnectionStats, useEnableE2EE, + isFirefox, } from "./useSetting"; import { FieldRow, InputField } from "../input/Input"; import { Button } from "../button"; @@ -133,7 +133,7 @@ export const SettingsModal = (props: Props) => { } > {generateDeviceSelection(devices.audioInput, t("Microphone"))} - {!isFireFox() && + {!isFirefox() && generateDeviceSelection(devices.audioOutput, t("Speaker"))} ); diff --git a/src/settings/useSetting.ts b/src/settings/useSetting.ts index d3407c6c..1ab9781d 100644 --- a/src/settings/useSetting.ts +++ b/src/settings/useSetting.ts @@ -16,7 +16,6 @@ limitations under the License. import { useCallback, useMemo } from "react"; import { isE2EESupported } from "livekit-client"; -import { isFireFox } from "livekit-client/dist/src/room/utils"; import { PosthogAnalytics } from "../analytics/PosthogAnalytics"; import { @@ -59,6 +58,11 @@ export const getSetting = (name: string, defaultValue: T): T => { export const setSetting = (name: string, newValue: T) => setLocalStorageItem(getSettingKey(name), JSON.stringify(newValue)); +export const isFirefox = () => { + const { userAgent } = navigator; + return userAgent.includes("Firefox"); +}; + const canEnableSpatialAudio = () => { // Spatial audio means routing audio through audio contexts. On Chrome, // this bypasses the AEC processor and so breaks echo cancellation. @@ -69,7 +73,7 @@ const canEnableSpatialAudio = () => { // widely enough, we can allow spatial audio everywhere. It's currently in a // chrome flag, so we could enable this in Electron if we enabled the chrome flag // in the Electron wrapper. - return isFireFox(); + return isFirefox(); }; export const useSpatialAudio = (): DisableableSetting => {