From bd291e2771458050227f2154db88d80a2bba4889 Mon Sep 17 00:00:00 2001 From: Micheal Parks Date: Fri, 20 Jun 2025 12:45:17 -0400 Subject: [PATCH 1/4] init --- src/lib/hooks/create-stream-client.svelte.ts | 28 ++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/src/lib/hooks/create-stream-client.svelte.ts b/src/lib/hooks/create-stream-client.svelte.ts index c55bb9f0..5b4c1553 100644 --- a/src/lib/hooks/create-stream-client.svelte.ts +++ b/src/lib/hooks/create-stream-client.svelte.ts @@ -35,8 +35,25 @@ export const createStreamClient = ( }); $effect(() => { - streamClient?.getStream(resourceName()); - return () => streamClient?.remove(resourceName()); + const client = streamClient; + const name = resourceName(); + + if (!client) return; + + const getStream = async () => { + try { + await client.getStream(name); + } catch (error) { + console.warn(error); + return getStream(); + } + }; + + getStream(); + + return () => { + client.remove(name); + }; }); const queryOptions = $derived( @@ -51,7 +68,14 @@ export const createStreamClient = ( ], enabled: streamClient !== undefined, retry: false, + + /** + * Resolution options are fairly static, + * so we don't refetch often. + */ refetchOnWindowFocus: false, + refetchOnMount: false, + queryFn: async () => { return streamClient?.getOptions(resourceName()); }, From 26e65c17b8d77d7fe53c9d548603dc0bbd54a1da Mon Sep 17 00:00:00 2001 From: Micheal Parks Date: Fri, 20 Jun 2025 17:38:52 -0400 Subject: [PATCH 2/4] better stream handling --- src/lib/hooks/create-stream-client.svelte.ts | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/src/lib/hooks/create-stream-client.svelte.ts b/src/lib/hooks/create-stream-client.svelte.ts index 4db3fce4..ddc38369 100644 --- a/src/lib/hooks/create-stream-client.svelte.ts +++ b/src/lib/hooks/create-stream-client.svelte.ts @@ -35,24 +35,11 @@ export const createStreamClient = ( }); $effect(() => { - const client = streamClient; const name = resourceName(); - if (!client) return; - - const getStream = async () => { - try { - await client.getStream(name); - } catch (error) { - console.warn(error); - return getStream(); - } - }; - - getStream(); - + streamClient?.add(name); return () => { - client.remove(name); + streamClient?.remove(name); }; }); From b2c1a5fb63a2f4313c3364114491ee74ecdd6e4f Mon Sep 17 00:00:00 2001 From: Micheal Parks Date: Fri, 20 Jun 2025 17:51:33 -0400 Subject: [PATCH 3/4] cleanup --- src/lib/hooks/create-stream-client.svelte.ts | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/lib/hooks/create-stream-client.svelte.ts b/src/lib/hooks/create-stream-client.svelte.ts index ddc38369..b57f5409 100644 --- a/src/lib/hooks/create-stream-client.svelte.ts +++ b/src/lib/hooks/create-stream-client.svelte.ts @@ -20,7 +20,7 @@ export const createStreamClient = ( ); const handleTrack = (event: unknown) => { - const [stream] = (event as { streams: MediaStream[] }).streams; + const [stream] = (event as RTCTrackEvent).streams; if (!stream || stream.id !== resourceName()) { return; @@ -36,11 +36,8 @@ export const createStreamClient = ( $effect(() => { const name = resourceName(); - streamClient?.add(name); - return () => { - streamClient?.remove(name); - }; + return () => streamClient?.remove(name); }); const queryOptions = $derived( From b9c6c09bcbda6ca6752743ecfa4fb63e34cb5f62 Mon Sep 17 00:00:00 2001 From: Micheal Parks Date: Fri, 20 Jun 2025 17:55:02 -0400 Subject: [PATCH 4/4] changeset --- .changeset/shaky-fans-enjoy.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/shaky-fans-enjoy.md diff --git a/.changeset/shaky-fans-enjoy.md b/.changeset/shaky-fans-enjoy.md new file mode 100644 index 00000000..ff5b5d97 --- /dev/null +++ b/.changeset/shaky-fans-enjoy.md @@ -0,0 +1,5 @@ +--- +'@viamrobotics/svelte-sdk': patch +--- + +Don't throw errors in createStreamClient hook from stream timeouts