fix: AudioCaptureOptions was causing un-necessary effect render

AudioCaptureOptions was a different object but with same internal values, use directly deviceId so that Object.is works properly
This commit is contained in:
Valere
2025-05-07 15:13:11 +02:00
parent ecc5c98acc
commit 02fa7594e9
3 changed files with 7 additions and 9 deletions

View File

@@ -57,7 +57,7 @@ test.each<[string, ConnectionError]>([
() => setSfuConfig({ url: "URL", jwt: "JWT token" }), () => setSfuConfig({ url: "URL", jwt: "JWT token" }),
[], [],
); );
useECConnectionState({}, false, mockRoom, sfuConfig); useECConnectionState("default", false, mockRoom, sfuConfig);
return <button onClick={connect}>Connect</button>; return <button onClick={connect}>Connect</button>;
}; };

View File

@@ -59,7 +59,7 @@ async function doConnect(
livekitRoom: Room, livekitRoom: Room,
sfuConfig: SFUConfig, sfuConfig: SFUConfig,
audioEnabled: boolean, audioEnabled: boolean,
audioOptions: AudioCaptureOptions, initialDeviceId: string | undefined,
): Promise<void> { ): Promise<void> {
// Always create an audio track manually. // Always create an audio track manually.
// livekit (by default) keeps the mic track open when you mute, but if you start muted, // livekit (by default) keeps the mic track open when you mute, but if you start muted,
@@ -82,7 +82,7 @@ async function doConnect(
let preCreatedAudioTrack: LocalTrack | undefined; let preCreatedAudioTrack: LocalTrack | undefined;
try { try {
const audioTracks = await livekitRoom!.localParticipant.createTracks({ const audioTracks = await livekitRoom!.localParticipant.createTracks({
audio: audioOptions, audio: { deviceId: initialDeviceId },
}); });
if (audioTracks.length < 1) { if (audioTracks.length < 1) {
logger.info("Tried to pre-create local audio track but got no tracks"); logger.info("Tried to pre-create local audio track but got no tracks");
@@ -187,7 +187,7 @@ async function connectAndPublish(
} }
export function useECConnectionState( export function useECConnectionState(
initialAudioOptions: AudioCaptureOptions, initialDeviceId: string | undefined,
initialAudioEnabled: boolean, initialAudioEnabled: boolean,
livekitRoom?: Room, livekitRoom?: Room,
sfuConfig?: SFUConfig, sfuConfig?: SFUConfig,
@@ -280,7 +280,7 @@ export function useECConnectionState(
livekitRoom!, livekitRoom!,
sfuConfig!, sfuConfig!,
initialAudioEnabled, initialAudioEnabled,
initialAudioOptions, initialDeviceId,
) )
.catch((e) => { .catch((e) => {
if (e instanceof ElementCallError) { if (e instanceof ElementCallError) {
@@ -296,7 +296,7 @@ export function useECConnectionState(
}, [ }, [
sfuConfig, sfuConfig,
livekitRoom, livekitRoom,
initialAudioOptions, initialDeviceId,
initialAudioEnabled, initialAudioEnabled,
doFocusSwitch, doFocusSwitch,
]); ]);

View File

@@ -155,9 +155,7 @@ export function useLiveKit(
); );
const connectionState = useECConnectionState( const connectionState = useECConnectionState(
{ initialDevices.current.audioInput.selectedId,
deviceId: initialDevices.current.audioInput.selectedId,
},
initialMuteStates.current.audio.enabled, initialMuteStates.current.audio.enabled,
room, room,
sfuConfig, sfuConfig,