import { useState, useCallback } from 'react'; import { useAuthStore } from '../store/auth'; import logoImg from '../assets/logo_32.png'; import styles from './LoginModal.module.css'; interface Props { isOpen: boolean; onClose: () => void; onSuccess: () => void; } export function LoginModal({ isOpen, onClose, onSuccess }: Props) { const login = useAuthStore((s) => s.login); const [username, setUsername] = useState(''); const [password, setPassword] = useState(''); const [error, setError] = useState(''); const [loading, setLoading] = useState(false); const handleSubmit = useCallback(async (e: React.FormEvent) => { e.preventDefault(); setError(''); if (!username.trim()) { setError('请输入用户名或邮箱'); return; } if (password.length < 6) { setError('密码至少6位'); return; } setLoading(true); try { await login(username, password); onSuccess(); } catch (err: any) { const msg = err.response?.data?.message || err.response?.data?.error || '登录失败,请重试'; setError(msg); } finally { setLoading(false); } }, [username, password, login, onSuccess]); if (!isOpen) return null; return (