'use client'
import { useEffect } from 'react'
import { useRouter } from 'next/navigation'
import { Navigation } from '@/components/Navigation'
import LearningComplete from '@/components/LearningComplete'
import { Modal } from '@/components/ui/Modal'
// 新架構組件
import { ProgressTracker } from '@/components/review/ProgressTracker'
import { TaskListModal } from '@/components/review/TaskListModal'
import { LoadingStates } from '@/components/review/LoadingStates'
import { ReviewRunner } from '@/components/review/ReviewRunner'
// 狀態管理
import { useReviewStore } from '@/store/useReviewStore'
import { useUIStore } from '@/store/useUIStore'
import { ReviewService } from '@/lib/services/review/reviewService'
export default function LearnPage() {
const router = useRouter()
// Zustand stores
const {
mounted,
isLoading,
currentCard,
dueCards,
testItems,
completedTests,
totalTests,
score,
showComplete,
showNoDueCards,
error,
setMounted,
loadDueCards,
initializeTestQueue,
resetSession
} = useReviewStore()
const {
showTaskListModal,
showReportModal,
modalImage,
reportReason,
reportingCard,
setShowTaskListModal,
closeReportModal,
closeImageModal,
setReportReason
} = useUIStore()
// 初始化
useEffect(() => {
setMounted(true)
initializeSession()
}, [])
// 初始化學習會話
const initializeSession = async () => {
try {
await loadDueCards()
if (dueCards.length > 0) {
const cardIds = dueCards.map(c => c.id)
const completedTests = await ReviewService.loadCompletedTests(cardIds)
initializeTestQueue(completedTests)
}
} catch (error) {
console.error('初始化複習會話失敗:', error)
}
}
// 重新開始
const handleRestart = async () => {
resetSession()
await initializeSession()
}
// 載入狀態
if (!mounted || isLoading) {
return (
單字:{reportingCard?.word}