From 00221471b843c0d5aac8a94eb51882da900ccc84 Mon Sep 17 00:00:00 2001 From: icarus Date: Sun, 12 Oct 2025 02:40:12 +0800 Subject: [PATCH] feat(video): add hook for handling OpenAI video status updates --- .../src/hooks/video/useOpenAIVideos.ts | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 src/renderer/src/hooks/video/useOpenAIVideos.ts diff --git a/src/renderer/src/hooks/video/useOpenAIVideos.ts b/src/renderer/src/hooks/video/useOpenAIVideos.ts new file mode 100644 index 0000000000..0aceb9f074 --- /dev/null +++ b/src/renderer/src/hooks/video/useOpenAIVideos.ts @@ -0,0 +1,52 @@ +import OpenAI from '@cherrystudio/openai' +import { useCallback } from 'react' + +import { useVideos } from './useVideos' + +export const useAddOpenAIVideo = (providerId: string) => { + const { addVideo } = useVideos(providerId) + + const addOpenAIVideo = useCallback( + (video: OpenAI.Videos.Video) => { + switch (video.status) { + case 'queued': + addVideo({ + id: video.id, + status: video.status, + type: 'openai', + metadata: video + }) + break + case 'in_progress': + addVideo({ + id: video.id, + status: 'in_progress', + type: 'openai', + progress: video.progress, + metadata: video + }) + break + case 'completed': + addVideo({ + id: video.id, + status: 'completed', + type: 'openai', + metadata: video + }) + break + case 'failed': + addVideo({ + id: video.id, + status: 'failed', + type: 'openai', + error: video.error, + metadata: video + }) + break + } + }, + [addVideo] + ) + + return addOpenAIVideo +}