From c50a5749827b2f05eb9cc6528466297a03746ced Mon Sep 17 00:00:00 2001 From: icarus Date: Sun, 12 Oct 2025 17:52:48 +0800 Subject: [PATCH] fix(video): handle queued status in video progress updates Add 'queued' status to the SWR refresh conditions and restructure progress update logic to prevent potential race conditions when video status changes from queued to in_progress --- src/renderer/src/hooks/video/useOpenAIVideo.ts | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/renderer/src/hooks/video/useOpenAIVideo.ts b/src/renderer/src/hooks/video/useOpenAIVideo.ts index 17579b78cf..7467decaa6 100644 --- a/src/renderer/src/hooks/video/useOpenAIVideo.ts +++ b/src/renderer/src/hooks/video/useOpenAIVideo.ts @@ -23,6 +23,7 @@ export const useOpenAIVideo = (id: string) => { const addOpenAIVideo = useAddOpenAIVideo(providerId) let options: SWRConfiguration = {} switch (video?.status) { + case 'queued': case 'in_progress': options = { refreshInterval: 3000 @@ -39,12 +40,14 @@ export const useOpenAIVideo = (id: string) => { const revalidate = () => mutate(`video/openai/${id}`) useEffect(() => { - // update progress - if (data && data.video.status === 'in_progress' && data.video.progress) { - if (video) { - updateVideo({ id: video.id, progress: data.video.progress }) - } else { - addOpenAIVideo(data.video, 'Prompt lost') + // queue -> in_progress / update progress + if (data) { + if (data.video.status === 'in_progress' && data.video.progress) { + if (video) { + updateVideo({ id: video.id, progress: data.video.progress }) + } else { + addOpenAIVideo(data.video, 'Prompt lost') + } } } }, [addOpenAIVideo, data, updateVideo, video])