import React, { useState, useCallback, memo } from 'react' import VoiceRecorder from '@/components/VoiceRecorder' import { SpeakingTestContainer } from '@/components/review/shared' import { BaseReviewProps } from '@/types/review' interface SentenceSpeakingTestProps extends BaseReviewProps { exampleImage?: string onImageClick?: (image: string) => void } const SentenceSpeakingTestComponent: React.FC = ({ cardData, exampleImage, onAnswer, onReportError, onImageClick, disabled = false }) => { const [showResult, setShowResult] = useState(false) // 判斷是否已答題(錄音提交後設定 hasAnswered = true) const hasAnswered = showResult const handleRecordingComplete = useCallback(() => { if (disabled || showResult) return setShowResult(true) onAnswer(cardData.example) // 語音測驗通常都算正確 }, [disabled, showResult, cardData.example, onAnswer]) // 提示區域 const promptArea = (

請看例句圖片並大聲說出完整的例句:

{exampleImage && (
Example illustration onImageClick?.(exampleImage)} />
)}
) // 錄音區域 const recordingArea = (
) // 結果顯示區域 const resultArea = showResult ? (

錄音完成!

系統正在評估你的發音...

) : null return ( ) } export const SentenceSpeakingTest = memo(SentenceSpeakingTestComponent) SentenceSpeakingTest.displayName = 'SentenceSpeakingTest'