cannot use lk isFireFox

Signed-off-by: Timo K <toger5@hotmail.de>
This commit is contained in:
Timo K
2023-09-19 13:09:01 +02:00
parent f9618070a4
commit fdbc47fdd0
3 changed files with 12 additions and 8 deletions

View File

@@ -26,9 +26,9 @@ import {
} from "react"; } from "react";
import { createMediaDeviceObserver } from "@livekit/components-core"; import { createMediaDeviceObserver } from "@livekit/components-core";
import { Observable } from "rxjs"; import { Observable } from "rxjs";
import { isFireFox } from "livekit-client/dist/src/room/utils";
import { import {
isFirefox,
useAudioInput, useAudioInput,
useAudioOutput, useAudioOutput,
useVideoInput, useVideoInput,
@@ -128,11 +128,11 @@ export const MediaDevicesProvider: FC<Props> = ({ children }) => {
const usingNames = numCallersUsingNames > 0; const usingNames = numCallersUsingNames > 0;
// Use output device names for output devices on all platforms except FF. // 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 // Setting the audio device to sth. else than 'undefined' breaks echo-cancellation
// and even can introduce multiple different output devices for one call. // and even can introduce multiple different output devices for one call.
const alwaysUseDefaultAudio = isFireFox(); const alwaysUseDefaultAudio = isFirefox();
const [audioInputSetting, setAudioInputSetting] = useAudioInput(); const [audioInputSetting, setAudioInputSetting] = useAudioInput();
const [audioOutputSetting, setAudioOutputSetting] = useAudioOutput(); const [audioOutputSetting, setAudioOutputSetting] = useAudioOutput();
@@ -163,7 +163,7 @@ export const MediaDevicesProvider: FC<Props> = ({ children }) => {
useEffect(() => { useEffect(() => {
// Skip setting state for ff output. Redundent since it is set to always return 'undefined' // 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 ;) // 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);
}, [setAudioOutputSetting, audioOutput.selectedId]); }, [setAudioOutputSetting, audioOutput.selectedId]);

View File

@@ -18,7 +18,6 @@ import { ChangeEvent, Key, useCallback, useState } from "react";
import { Item } from "@react-stately/collections"; import { Item } from "@react-stately/collections";
import { Trans, useTranslation } from "react-i18next"; import { Trans, useTranslation } from "react-i18next";
import { MatrixClient } from "matrix-js-sdk"; import { MatrixClient } from "matrix-js-sdk";
import { isFireFox } from "livekit-client/dist/src/room/utils";
import { Modal } from "../Modal"; import { Modal } from "../Modal";
import styles from "./SettingsModal.module.css"; import styles from "./SettingsModal.module.css";
@@ -36,6 +35,7 @@ import {
useDeveloperSettingsTab, useDeveloperSettingsTab,
useShowConnectionStats, useShowConnectionStats,
useEnableE2EE, useEnableE2EE,
isFirefox,
} from "./useSetting"; } from "./useSetting";
import { FieldRow, InputField } from "../input/Input"; import { FieldRow, InputField } from "../input/Input";
import { Button } from "../button"; import { Button } from "../button";
@@ -133,7 +133,7 @@ export const SettingsModal = (props: Props) => {
} }
> >
{generateDeviceSelection(devices.audioInput, t("Microphone"))} {generateDeviceSelection(devices.audioInput, t("Microphone"))}
{!isFireFox() && {!isFirefox() &&
generateDeviceSelection(devices.audioOutput, t("Speaker"))} generateDeviceSelection(devices.audioOutput, t("Speaker"))}
</TabItem> </TabItem>
); );

View File

@@ -16,7 +16,6 @@ limitations under the License.
import { useCallback, useMemo } from "react"; import { useCallback, useMemo } from "react";
import { isE2EESupported } from "livekit-client"; import { isE2EESupported } from "livekit-client";
import { isFireFox } from "livekit-client/dist/src/room/utils";
import { PosthogAnalytics } from "../analytics/PosthogAnalytics"; import { PosthogAnalytics } from "../analytics/PosthogAnalytics";
import { import {
@@ -59,6 +58,11 @@ export const getSetting = <T>(name: string, defaultValue: T): T => {
export const setSetting = <T>(name: string, newValue: T) => export const setSetting = <T>(name: string, newValue: T) =>
setLocalStorageItem(getSettingKey(name), JSON.stringify(newValue)); setLocalStorageItem(getSettingKey(name), JSON.stringify(newValue));
export const isFirefox = () => {
const { userAgent } = navigator;
return userAgent.includes("Firefox");
};
const canEnableSpatialAudio = () => { const canEnableSpatialAudio = () => {
// Spatial audio means routing audio through audio contexts. On Chrome, // Spatial audio means routing audio through audio contexts. On Chrome,
// this bypasses the AEC processor and so breaks echo cancellation. // 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 // 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 // chrome flag, so we could enable this in Electron if we enabled the chrome flag
// in the Electron wrapper. // in the Electron wrapper.
return isFireFox(); return isFirefox();
}; };
export const useSpatialAudio = (): DisableableSetting<boolean> => { export const useSpatialAudio = (): DisableableSetting<boolean> => {