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 +}