fix(native): stop preset detail request loop

This commit is contained in:
2026-02-13 18:42:48 +01:00
parent 38a557bd79
commit 5538554f7a

View File

@@ -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<void> => {
const token = await getToken();
@@ -64,31 +68,28 @@ export function StreamerScreen() {
};
void loadPresets();
}, [getToken]);
}, []);
useEffect(() => {
const loadIceServers = async (): Promise<void> => {
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 (
<SafeAreaView style={styles.safeArea}>