From 788b170f98d908a91e219c6d6fa59a57f0ec4a83 Mon Sep 17 00:00:00 2001 From: icarus Date: Sun, 12 Oct 2025 06:00:42 +0800 Subject: [PATCH] feat(video): pass params to VideoPanel for state management Move prompt state management to parent component to maintain consistency across video creation flow --- src/renderer/src/pages/video/VideoPage.tsx | 2 +- src/renderer/src/pages/video/VideoPanel.tsx | 22 ++++++++++----------- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/src/renderer/src/pages/video/VideoPage.tsx b/src/renderer/src/pages/video/VideoPage.tsx index 30643299b2..646fd02241 100644 --- a/src/renderer/src/pages/video/VideoPage.tsx +++ b/src/renderer/src/pages/video/VideoPage.tsx @@ -64,7 +64,7 @@ export const VideoPage = () => { {provider.type === 'openai-response' && } - + {/* Video list */} diff --git a/src/renderer/src/pages/video/VideoPanel.tsx b/src/renderer/src/pages/video/VideoPanel.tsx index fcf3a9b02a..7fab56af7d 100644 --- a/src/renderer/src/pages/video/VideoPanel.tsx +++ b/src/renderer/src/pages/video/VideoPanel.tsx @@ -3,8 +3,9 @@ import { loggerService } from '@logger' import { useAddOpenAIVideo } from '@renderer/hooks/video/useAddOpenAIVideo' import { createVideo } from '@renderer/services/ApiService' import { Provider } from '@renderer/types' -import { Video } from '@renderer/types/video' +import { CreateVideoParams, Video } from '@renderer/types/video' import { getErrorMessage } from '@renderer/utils' +import { DeepPartial } from 'ai' import { ArrowUp, ImageIcon } from 'lucide-react' import { useCallback, useState } from 'react' import { useTranslation } from 'react-i18next' @@ -14,13 +15,14 @@ import { VideoViewer } from './VideoViewer' export type VideoPanelProps = { provider: Provider video?: Video + params: CreateVideoParams + updateParams: (upadte: DeepPartial>) => void } const logger = loggerService.withContext('VideoPanel') -export const VideoPanel = ({ provider, video }: VideoPanelProps) => { +export const VideoPanel = ({ provider, video, params, updateParams }: VideoPanelProps) => { const { t } = useTranslation() - const [prompt, setPrompt] = useState('') const [isProcessing, setIsProcessing] = useState(false) const addOpenAIVideo = useAddOpenAIVideo(provider.id) @@ -28,13 +30,7 @@ export const VideoPanel = ({ provider, video }: VideoPanelProps) => { if (isProcessing) return setIsProcessing(true) try { - const result = await createVideo({ - type: 'openai', - params: { - prompt - }, - provider - }) + const result = await createVideo(params) const video = result.video switch (result.type) { case 'openai': @@ -48,7 +44,9 @@ export const VideoPanel = ({ provider, video }: VideoPanelProps) => { } finally { setIsProcessing(false) } - }, [addOpenAIVideo, isProcessing, prompt, provider, t]) + }, [addOpenAIVideo, isProcessing, params, t]) + + const setPrompt = useCallback((value: string) => updateParams({ params: { prompt: value } }), [updateParams]) return (
@@ -61,7 +59,7 @@ export const VideoPanel = ({ provider, video }: VideoPanelProps) => {