// entrypoints/popup/pages/Login.tsx
import React, { useState } from 'react';
import { useNavigate } from 'react-router-dom';
import { Button, Input, Message, Form, Grid } from '@alifd/next';
const { Row, Col } = Grid


export default function Login({ setIsLoggedIn }: { setIsLoggedIn: (loggedIn: boolean) => void }) {
    const formRef = useRef<any>(null); // 创建 ref 引用
    const [username, setUsername] = useState('');
    const [password, setPassword] = useState('');
    const [loading, setLoading] = useState(false);
    const [errors, setErrors] = useState<{ username?: string, password?: string }>({});
    const [keys, setKeys] = useState('');
    const [validImg, setValidImg] = useState('');
    const navigate = useNavigate();

    useEffect(() => {
        evVerify()
    }, [])

    const validateForm = () => {
        const newErrors: { username?: string, password?: string } = {};

        if (!username.trim()) {
            newErrors.username = '请输入用户名';
        }

        if (!password) {
            newErrors.password = '请输入密码';
        } else if (password.length < 6) {
            newErrors.password = '密码长度至少为6位';
        }

        setErrors(newErrors);
        return Object.keys(newErrors).length === 0;
    };

    const evVerify = () => {
        console.log('username')
        fetch('https://user.landwu.com/api/user/verify', {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json',
            }
        }).then(resjson => {
            return resjson.json(); // 正确解析 Response 为 JSON 数据
        }).then(res => {
            const { data = {} } = res;
            const { data: info = {} } = data;
            const { key = "", img = "" } = info;
            setKeys(key)
            setValidImg(img)
        })
    }

    const handleLogin = (values: any, e: React.FormEvent) => {

        console.log(values."fff")
        return
        e.preventDefault();

        if (!validateForm()) {
            return;
        }

        setLoading(true);

        try {
            const values = formRef.current.getFieldValues();
            console.log(values,"values")
            const { username, password, code } = values;
            const params = {
                username,
                password,
                code,
                key: keys
            }
            // 发送登录请求
            fetch('https://user.landwu.com/api/user/login', {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json',
                },
                body: JSON.stringify(params),
            }).then(response => response.json()).then(res => {
                const { msg = "", token = "", code } = res;
                if (!code) {
                    setLoading(false);
                    return false;
                }

                if (code == -1) {
                    evVerify()
                    Message.error(msg);
                    setLoading(false);
                    return false;
                }
                Message.success(msg);
                localStorage.setItem("access_token", token);
                localStorage.setItem('isLoggedIn', 'true');
                setIsLoggedIn(true);
                // 跳转到首页
                navigate('/');
                // Cookies.set("access_token", toCode(token));

            }).catch((e) => {
                console.log("catch")
                setLoading(false);
            });
        } catch (error) {
            console.error('登录请求失败:', error);
            Message.error('网络错误，请稍后重试');
        } finally {
            setLoading(false);
        }


        // 模拟登录请求
        // setTimeout(() => {
        //     // 这里添加实际的登录逻辑
        //     if (username && password) {
        //         // 模拟登录成功
        //         localStorage.setItem('isLoggedIn', 'true');
        //         setIsLoggedIn(true);
        //         // 跳转到首页
        //         navigate('/');
        //         Message.success('登录成功');
        //     } else {
        //         Message.error('登录失败，请检查用户名和密码');
        //     }
        //     setLoading(false);
        // }, 1000);
    };

    return (
        <div className="bg-gray-50 p-4">
            <div className="text-center mb-6">
                <h1 className="text-2xl font-bold text-gray-800">登录</h1>
            </div>

            <Form onSubmit={handleLogin} ref={formRef}>
                <Form.Item
                    label="用户名"
                    name="username"
                    required
                    help={errors.username}
                    validateState={errors.username ? 'error' : undefined}
                >
                    <Input
                        placeholder="请输入用户名"
                        value={username}
                        onChange={(value) => {
                            setUsername(value);
                            if (errors.username) {
                                setErrors({ ...errors, username: undefined });
                            }
                        }}
                        disabled={loading}
                    />
                </Form.Item>

                <Form.Item
                    label="密码"
                    name="password"
                    required
                    help={errors.password}
                    validateState={errors.password ? 'error' : undefined}
                >
                    <Input
                        htmlType="password"
                        placeholder="请输入密码"
                        value={password}
                        onChange={(value) => {
                            setPassword(value);
                            if (errors.password) {
                                setErrors({ ...errors, password: undefined });
                            }
                        }}
                        disabled={loading}
                    />
                </Form.Item>
                <Row>
                    <Col span={16}>
                        <Form.Item
                            label="验证码"
                            name="code"
                            required
                        >
                            <Input
                                size="large"
                            />
                        </Form.Item>
                    </Col>
                    <Col span={8}>
                        <img
                            src={validImg}
                            style={{
                                width: 82,
                                height: 30,
                                marginTop: 28
                            }}
                            onClick={evVerify}
                        />
                    </Col>
                </Row>

                <Form.Item>
                    <Button
                        type="primary"
                        htmlType="submit"
                        loading={loading}
                        className="w-full"
                    >
                        {loading ? '登录中...' : '登录'}
                    </Button>
                </Form.Item>
            </Form>

            <div className="mt-4 text-center text-sm text-gray-500">
                <p>忘记密码？请联系管理员</p>
            </div>
        </div>
    );
}