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";
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<Props> = ({ 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<Props> = ({ 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]);

View File

@@ -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"))}
</TabItem>
);

View File

@@ -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 = <T>(name: string, defaultValue: T): T => {
export const setSetting = <T>(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<boolean> => {