fix(voice): 修复克隆音色弹窗「选文件无反应」死锁(isSubmittingRef 三处误用) #1541

Merged
auto-approve-bot merged 2 commits from fix/clone-modal-submit-lock into develop 2026-08-29 17:36:01 +08:00
@@ -57,8 +57,8 @@ const CloneModal: React.FC<CloneModalProps> = ({ open, onClose, onSuccess }) =>
setVoiceDescription("")
setSelectedFile(null)
setDragActive(false)
if (isSubmittingRef.current) return
isSubmittingRef.current = true
// 注意:resetState 不得触碰 isSubmittingRef——提交锁仅属于 handleSubmit
// 此前在此上锁且无复位路径,弹窗打开即死锁
setErrorMessage("")
resetRecorder()
}, [getNextDefaultName, resetRecorder])
@@ -99,8 +99,8 @@ const CloneModal: React.FC<CloneModalProps> = ({ open, onClose, onSuccess }) =>
setErrorMessage(error)
setSelectedFile(null)
} else {
if (isSubmittingRef.current) return
isSubmittingRef.current = true
// 文件选择为纯同步 state 设置,无异步竞态;防重入只属于提交动作,
// 由 handleSubmit 的 isSubmittingRef + isProcessing 保证,此处不设锁
setErrorMessage("")
setSelectedFile(file)
resetRecorder()
@@ -132,8 +132,8 @@ const CloneModal: React.FC<CloneModalProps> = ({ open, onClose, onSuccess }) =>
setErrorMessage(error)
setSelectedFile(null)
} else {
if (isSubmittingRef.current) return
isSubmittingRef.current = true
// 文件选择为纯同步 state 设置,无异步竞态;防重入只属于提交动作,
// 由 handleSubmit 的 isSubmittingRef + isProcessing 保证,此处不设锁
setErrorMessage("")
setSelectedFile(file)
resetRecorder()