mirror of
https://github.com/streamyfin/streamyfin.git
synced 2026-06-18 11:50:26 +01:00
fix: error race conditions
This commit is contained in:
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user