From 5538554f7ad88f236388ac4df3b29cbf7d3b5ddd Mon Sep 17 00:00:00 2001 From: Izan Gil <66965250+SrIzan10@users.noreply.github.com> Date: Fri, 13 Feb 2026 18:42:48 +0100 Subject: [PATCH] fix(native): stop preset detail request loop --- native-app/src/screens/StreamerScreen.tsx | 45 ++++++++++++----------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/native-app/src/screens/StreamerScreen.tsx b/native-app/src/screens/StreamerScreen.tsx index b0503d4..9e05a99 100644 --- a/native-app/src/screens/StreamerScreen.tsx +++ b/native-app/src/screens/StreamerScreen.tsx @@ -12,7 +12,7 @@ import { RTCView } from "react-native-webrtc"; import { useHeliumStreamer } from "../hooks/useHeliumStreamer"; import { useAppTheme } from "../lib/theme"; -import { getPresetIceServers, getPresets } from "../lib/presets"; +import { getPresets } from "../lib/presets"; import type { NativeIceServer, PresetUser } from "../types/presets"; export function StreamerScreen() { @@ -36,6 +36,10 @@ export function StreamerScreen() { stopSharing, } = useHeliumStreamer(iceServers); + const selectedPreset = useMemo(() => { + return presets.find((preset) => preset.presetId === presetId) ?? null; + }, [presetId, presets]); + useEffect(() => { const loadPresets = async (): Promise => { const token = await getToken(); @@ -64,31 +68,28 @@ export function StreamerScreen() { }; void loadPresets(); - }, [getToken]); + }, []); useEffect(() => { - const loadIceServers = async (): Promise => { - if (!presetId) { - return; - } + if (!selectedPreset) { + setIceServers([]); + return; + } - const token = await getToken(); - if (!token) { - setPresetStatus("missing auth token for preset"); - return; - } + try { + const rawIceServers = selectedPreset.preset.iceServers; + const parsedIceServers = + typeof rawIceServers === "string" + ? (JSON.parse(rawIceServers) as NativeIceServer[]) + : rawIceServers; - try { - const servers = await getPresetIceServers(token, presetId); - setIceServers(servers); - setPresetStatus(`loaded ${servers.length} ICE server entries`); - } catch (error) { - setPresetStatus(`failed preset load: ${(error as Error).message}`); - } - }; - - void loadIceServers(); - }, [getToken, presetId]); + setIceServers(parsedIceServers ?? []); + setPresetStatus(`loaded ${(parsedIceServers ?? []).length} ICE server entries`); + } catch { + setIceServers([]); + setPresetStatus("failed to parse ICE servers from preset"); + } + }, [selectedPreset]); return (