Break loop in acquiring media on Safari
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
@@ -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],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user