fix: error race conditions

This commit is contained in:
lostb1t
2025-05-29 16:04:22 +02:00
committed by GitHub
parent e8e62061ae
commit 16e88cca8c

View File

@@ -132,11 +132,10 @@ export default function page() {
fetchedItem = res.data; fetchedItem = res.data;
} }
setItem(fetchedItem); setItem(fetchedItem);
setItemStatus({ isLoading: false, isError: false });
} catch (error) { } catch (error) {
console.error("Failed to fetch item:", error); console.error("Failed to fetch item:", error);
setItemStatus({ isLoading: false, isError: true }); setItemStatus({ isLoading: false, isError: true });
} finally {
setItemStatus({ isLoading: false, isError: false });
} }
}; };
@@ -159,6 +158,7 @@ export default function page() {
useEffect(() => { useEffect(() => {
const fetchStreamData = async () => { const fetchStreamData = async () => {
setItemStatus({ isLoading: true, isError: false });
const native = await generateDeviceProfile(); const native = await generateDeviceProfile();
try { try {
let result: Stream | null = null; let result: Stream | null = null;
@@ -193,11 +193,10 @@ export default function page() {
result = { mediaSource, sessionId, url }; result = { mediaSource, sessionId, url };
} }
setStream(result); setStream(result);
setStreamStatus({ isLoading: false, isError: false });
} catch (error) { } catch (error) {
console.error("Failed to fetch stream:", error); console.error("Failed to fetch stream:", error);
setStreamStatus({ isLoading: false, isError: true }); setStreamStatus({ isLoading: false, isError: true });
} finally {
setStreamStatus({ isLoading: false, isError: false });
} }
}; };
fetchStreamData(); fetchStreamData();
@@ -415,7 +414,7 @@ export default function page() {
return () => setIsMounted(false); return () => setIsMounted(false);
}, []); }, []);
if (itemStatus.isLoading || streamStatus.isLoading) { if (itemStatus.isLoading || streamStatus.isLoading || !item || !stream) {
return ( return (
<View className='w-screen h-screen flex flex-col items-center justify-center bg-black'> <View className='w-screen h-screen flex flex-col items-center justify-center bg-black'>
<Loader /> <Loader />
@@ -423,7 +422,7 @@ export default function page() {
); );
} }
if (!item || !stream || itemStatus.isError || streamStatus.isError) if (itemStatus.isError || streamStatus.isError)
return ( return (
<View className='w-screen h-screen flex flex-col items-center justify-center bg-black'> <View className='w-screen h-screen flex flex-col items-center justify-center bg-black'>
<Text className='text-white'>{t("player.error")}</Text> <Text className='text-white'>{t("player.error")}</Text>