'use client' import { useState } from 'react' import Link from 'next/link' import { useRouter } from 'next/navigation' import { useAuth } from '@/contexts/AuthContext' export default function RegisterPage() { const router = useRouter() const { register } = useAuth() const [formData, setFormData] = useState({ username: '', email: '', password: '', confirmPassword: '' }) const [loading, setLoading] = useState(false) const [errors, setErrors] = useState>({}) const [apiError, setApiError] = useState('') const validatePassword = (password: string) => { if (password.length < 8) return '密碼至少需要 8 個字元' if (!/[A-Z]/.test(password)) return '密碼需包含大寫字母' if (!/[a-z]/.test(password)) return '密碼需包含小寫字母' if (!/[0-9]/.test(password)) return '密碼需包含數字' return '' } const handleChange = (e: React.ChangeEvent) => { const { name, value } = e.target setFormData(prev => ({ ...prev, [name]: value })) // Clear error when user starts typing if (errors[name]) { setErrors(prev => ({ ...prev, [name]: '' })) } } const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() setApiError('') const newErrors: Record = {} // Validate form if (formData.username.length < 3) { newErrors.username = '用戶名至少需要 3 個字元' } const passwordError = validatePassword(formData.password) if (passwordError) { newErrors.password = passwordError } if (formData.password !== formData.confirmPassword) { newErrors.confirmPassword = '密碼不一致' } if (Object.keys(newErrors).length > 0) { setErrors(newErrors) return } setLoading(true) // 調試:打印要發送的數據 console.log('Submitting registration with data:', { username: formData.username, email: formData.email, password: formData.password ? '[hidden]' : 'empty' }) const result = await register(formData.username, formData.email, formData.password) if (result.success) { router.push('/dashboard') } else { setApiError(result.error || '註冊失敗') } setLoading(false) } const handleGoogleSignup = () => { setLoading(true) setTimeout(() => { router.push('/dashboard') }, 1000) } return (

創建帳號

開始您的英文學習之旅

{apiError && (

{apiError}

)}
{errors.username && (

{errors.username}

)}
{errors.password && (

{errors.password}

)}
{errors.confirmPassword && (

{errors.confirmPassword}

)}
{/*
*/}

已經有帳號?{' '} 立即登入

) }