diff --git a/apps/web/src/pages/generate/hooks/useStep7Generate.ts b/apps/web/src/pages/generate/hooks/useStep7Generate.ts index 560e0aefd..a7729ebd8 100644 --- a/apps/web/src/pages/generate/hooks/useStep7Generate.ts +++ b/apps/web/src/pages/generate/hooks/useStep7Generate.ts @@ -3,11 +3,13 @@ * 封装生成确认页的展示逻辑 */ import { useMemo } from "react" +import { useQuery } from "@tanstack/react-query" import type { EditingTemplate } from "@/api/editing-planner" import type { GeneratedVideo } from "@/api/template-editor" import type { CoverConfig } from "../../editing-planner/types" import type { VoiceClone } from "@/api/voice-clone" import type { PresetVoiceItem } from "@/api/voices" +import { getAssetsByKind } from "@/api/assets" import { COVER_MODE_LABELS } from "../constants" interface UseStep7GenerateProps { @@ -65,14 +67,16 @@ export function useStep7Generate({ return `${selectedMaterials.length} 个素材` }, [materialMode, selectedMaterials.length, smartSelectedIds.length]) + // 从配音素材库中查找 voiceName + const { data: voiceMaterials = [] } = useQuery({ + queryKey: ["assets", "voice"], + queryFn: () => getAssetsByKind("voice", { limit: 50 }), + }) + const voiceName = useMemo(() => { - if (voiceMode === "clone") { - const cv = clonedVoices.find((v) => v.id === selectedClonedVoice) - return cv ? cv.name : "未选择" - } - const pv = presetVoices.find((v) => v.voice_id === selectedVoice) - return pv ? pv.name : "未选择" - }, [voiceMode, selectedVoice, selectedClonedVoice, presetVoices, clonedVoices]) + const asset = voiceMaterials.find((v) => v.id === selectedVoice) + return asset ? asset.name : "未选择" + }, [voiceMaterials, selectedVoice]) const coverSummary = useMemo(() => { if (!coverSettings.enabled) return "不使用"