import type { CloneModalProps } from "../types/cloneModal" import { useCloneFormState } from "./useCloneFormState" import { useCloneSubmit } from "./useCloneSubmit" /** * 音色克隆弹窗主业务 Hook * 组合表单状态 + 提交流程两个子 Hook */ const useCloneModal = ({ open, onClose, onSuccess }: CloneModalProps) => { const formState = useCloneFormState({ open, onClose }) const { handleSubmit } = useCloneSubmit({ voiceName: formState.voiceName, voiceDescription: formState.voiceDescription, selectedFile: formState.selectedFile, recordedBlob: formState.recordedBlob, setPhase: formState.setPhase, setErrorMessage: formState.setErrorMessage, validateForm: formState.validateForm, onSuccess, onClose: formState.handleClose, }) return { phase: formState.phase, voiceName: formState.voiceName, voiceDescription: formState.voiceDescription, selectedFile: formState.selectedFile, dragActive: formState.dragActive, errorMessage: formState.errorMessage, isRecording: formState.isRecording, recordTime: formState.recordTime, recordedBlob: formState.recordedBlob, canSubmit: formState.canSubmit, isProcessing: formState.isProcessing, setVoiceName: formState.setVoiceName, setVoiceDescription: formState.setVoiceDescription, setDragActive: formState.setDragActive, handleFileSelect: formState.handleFileSelect, handleRecordToggle: formState.handleRecordToggle, handleClose: formState.handleClose, handleSubmit, } } export default useCloneModal