diff --git a/web/src/components/VideoDetailModal.tsx b/web/src/components/VideoDetailModal.tsx index 52d1358..4276831 100644 --- a/web/src/components/VideoDetailModal.tsx +++ b/web/src/components/VideoDetailModal.tsx @@ -212,29 +212,34 @@ export function VideoDetailModal({ task, onClose, onReEdit, onRegenerate, onDele onReEdit(task.id); onClose(); } else { - // Fallback: load task into input bar and navigate to generation page + // Fallback (asset page → reEdit): 跟 store/generation.ts:reEdit 对齐, + // 用 setState 一次性批量灌入所有相关字段。 + // 关键 bug 修复:之前只 setPrompt 不写 editorHtml,PromptInput 渲染 editorHtml, + // 所以编辑器是空的(只回填了图片素材)。 const store = useInputBarStore.getState(); store.reset(); - store.setPrompt(task.prompt || ''); - if (task.mode) store.setMode(task.mode as 'universal' | 'keyframe'); - if (task.model) store.setModel(task.model as 'seedance_2.0' | 'seedance_2.0_fast'); - if (task.aspectRatio) store.setAspectRatio(task.aspectRatio as any); - if (task.duration) store.setDuration(task.duration); - if (task.resolution) store.setResolution(task.resolution); - // Load references from task (exclude asset library refs — they restore via @mentions in editorHtml) - if (task.references && task.references.length > 0) { - const refs = task.references.filter(r => r.previewUrl && !r.isAssetRef).map(r => ({ + if (task.mode && store.mode !== task.mode) { + store.switchMode(task.mode as 'universal' | 'keyframe'); + } + const refs = (task.references || []) + .filter(r => r.previewUrl && !r.isAssetRef) + .map(r => ({ id: r.id, - file: null as unknown as File, - previewUrl: r.previewUrl, type: r.type as 'image' | 'video' | 'audio', + previewUrl: r.previewUrl, label: r.label, tosUrl: r.previewUrl, })); - if (refs.length > 0) { - useInputBarStore.setState({ references: refs }); - } - } + useInputBarStore.setState({ + prompt: task.prompt || '', + editorHtml: task.editorHtml || task.prompt || '', + model: (task.model as 'seedance_2.0' | 'seedance_2.0_fast') || 'seedance_2.0', + aspectRatio: (task.aspectRatio as any) || '16:9', + duration: task.duration ?? 5, + resolution: task.resolution || '720p', + references: refs, + assetMentions: task.assetMentions || [], + }); onClose(); navigate('/app'); }