mirror of
https://github.com/blakeblackshear/frigate.git
synced 2025-09-14 17:52:10 +02:00
Don't block UI while pulling the stream live info (#19998)
This commit is contained in:
parent
1613499218
commit
037c4d1cc0
@ -33,29 +33,43 @@ export default function useCameraLiveMode(
|
|||||||
|
|
||||||
const streamsFetcher = useCallback(async (key: string) => {
|
const streamsFetcher = useCallback(async (key: string) => {
|
||||||
const streamNames = key.split(",");
|
const streamNames = key.split(",");
|
||||||
const metadata: { [key: string]: LiveStreamMetadata } = {};
|
|
||||||
|
|
||||||
await Promise.all(
|
const metadataPromises = streamNames.map(async (streamName) => {
|
||||||
streamNames.map(async (streamName) => {
|
try {
|
||||||
try {
|
const response = await fetch(`/api/go2rtc/streams/${streamName}`, {
|
||||||
const response = await fetch(`/api/go2rtc/streams/${streamName}`);
|
priority: "low",
|
||||||
if (response.ok) {
|
});
|
||||||
const data = await response.json();
|
|
||||||
metadata[streamName] = data;
|
if (response.ok) {
|
||||||
}
|
const data = await response.json();
|
||||||
} catch (error) {
|
return { streamName, data };
|
||||||
// eslint-disable-next-line no-console
|
|
||||||
console.error(`Failed to fetch metadata for ${streamName}:`, error);
|
|
||||||
}
|
}
|
||||||
}),
|
return { streamName, data: null };
|
||||||
);
|
} catch (error) {
|
||||||
|
// eslint-disable-next-line no-console
|
||||||
|
console.error(`Failed to fetch metadata for ${streamName}:`, error);
|
||||||
|
return { streamName, data: null };
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const results = await Promise.allSettled(metadataPromises);
|
||||||
|
|
||||||
|
const metadata: { [key: string]: LiveStreamMetadata } = {};
|
||||||
|
results.forEach((result) => {
|
||||||
|
if (result.status === "fulfilled" && result.value.data) {
|
||||||
|
metadata[result.value.streamName] = result.value.data;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
return metadata;
|
return metadata;
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
const { data: allStreamMetadata = {} } = useSWR<{
|
const { data: allStreamMetadata = {} } = useSWR<{
|
||||||
[key: string]: LiveStreamMetadata;
|
[key: string]: LiveStreamMetadata;
|
||||||
}>(restreamedStreamsKey, streamsFetcher, { revalidateOnFocus: false });
|
}>(restreamedStreamsKey, streamsFetcher, {
|
||||||
|
revalidateOnFocus: false,
|
||||||
|
dedupingInterval: 10000,
|
||||||
|
});
|
||||||
|
|
||||||
const [preferredLiveModes, setPreferredLiveModes] = useState<{
|
const [preferredLiveModes, setPreferredLiveModes] = useState<{
|
||||||
[key: string]: LivePlayerMode;
|
[key: string]: LivePlayerMode;
|
||||||
|
Loading…
Reference in New Issue
Block a user