fix: sendAnswer await startInterview + stopRecord guard

- sendAnswer: await startInterview() 后再发答案,避免面试还没创建
  就把用户输入 '你好' 当成答案提交给空 interviewId
- stopRecord: 加 !isRecording.value 守卫,防止 user touchend 在
  uni.authorize success 回调之前触发 recorder.stop() 导致报错
This commit is contained in:
yuzhiran
2026-07-05 13:04:40 +08:00
parent 656dfabb29
commit 1422c04b2c
+4 -1
View File
@@ -301,9 +301,10 @@ const startInterview = async () => {
const sendAnswer = async () => { const sendAnswer = async () => {
if (!inputText.value.trim() || aiLoading.value || isComplete.value) return if (!inputText.value.trim() || aiLoading.value || isComplete.value) return
if (!token()) { checkLogin(); return } if (!token()) { checkLogin(); return }
// 确保面试已创建(startInterview 是 async,必须 await
if (!interviewId.value) { if (!interviewId.value) {
await startInterview() await startInterview()
if (!interviewId.value) return // creation failed, don't discard answer if (!interviewId.value) return // 创建失败,不丢弃用户输入
} }
const answer = inputText.value.trim() const answer = inputText.value.trim()
@@ -412,6 +413,7 @@ function startRecord() {
uni.showToast({ title: '录音初始化失败', icon: 'none' }) uni.showToast({ title: '录音初始化失败', icon: 'none' })
return return
} }
// 确保在授权通过后才开始录音,避免 stopRecord 先于 startRecord 被调用
recorder.start({ recorder.start({
format: 'wav', format: 'wav',
sampleRate: 16000, sampleRate: 16000,
@@ -438,6 +440,7 @@ function startRecord() {
} }
function stopRecord() { function stopRecord() {
if (!isRecording.value) return
isRecording.value = false isRecording.value = false
if (!recorder) return if (!recorder) return
recorder.stop() recorder.stop()