Break loop in acquiring media on Safari

This commit is contained in:
Robin
2025-06-03 17:22:20 -04:00
parent 64e27152c6
commit 83bfb721e7
2 changed files with 7 additions and 5 deletions

View File

@@ -53,6 +53,7 @@ import {
useTrackProcessorSync, useTrackProcessorSync,
} from "../livekit/TrackProcessorContext"; } from "../livekit/TrackProcessorContext";
import { usePageTitle } from "../usePageTitle"; import { usePageTitle } from "../usePageTitle";
import { useLatest } from "../useLatest";
interface Props { interface Props {
client: MatrixClient; client: MatrixClient;
@@ -159,13 +160,14 @@ export const LobbyView: FC<Props> = ({
], ],
); );
const latestMuteStates = useLatest(muteStates);
const onError = useCallback( const onError = useCallback(
(error: Error) => { (error: Error) => {
logger.error("Error while creating preview Tracks:", error); logger.error("Error while creating preview Tracks:", error);
muteStates.audio.setEnabled?.(false); latestMuteStates.current.audio.setEnabled?.(false);
muteStates.video.setEnabled?.(false); latestMuteStates.current.video.setEnabled?.(false);
}, },
[muteStates.audio, muteStates.video], [latestMuteStates],
); );
const tracks = usePreviewTracks(localTrackOptions, onError); const tracks = usePreviewTracks(localTrackOptions, onError);

View File

@@ -60,7 +60,7 @@ function useMuteState(
// Determine the default value once devices are actually connected // Determine the default value once devices are actually connected
(prev) => (prev) =>
prev ?? (device.available.size > 0 ? enabledByDefault() : undefined), prev ?? (device.available.size > 0 ? enabledByDefault() : undefined),
[device], [device.available.size],
); );
return useMemo( return useMemo(
() => () =>
@@ -70,7 +70,7 @@ function useMuteState(
enabled: enabled ?? false, enabled: enabled ?? false,
setEnabled: setEnabled as Dispatch<SetStateAction<boolean>>, setEnabled: setEnabled as Dispatch<SetStateAction<boolean>>,
}, },
[device, enabled, setEnabled], [device.available.size, enabled, setEnabled],
); );
} }