'use client'; // import { authApi, verificationApi } from "@/lib/api"; import { useRouter } from "next/navigation"; import { toast } from "sonner"; import Header from "@/components/Header"; import Footer from "@/components/Footer"; import { Button } from "@/components/ui/button"; import { Card, CardContent } from "@/components/ui/card"; import { cn } from "@/lib/utils"; import { KeyRound, Phone, FileKey2 } from "lucide-react"; import EmailLoginMode from "./components/EmailLoginMode"; import PasswordLoginMode from "./components/PasswordLoginMode"; import PhoneLoginMode from "./components/PhoneLoginMode"; import { LoginFormData, SendCodeFormData, SubmitMode } from "./components/types"; import { useCallback, useState } from "react"; import LoginBG from './components/login-bg.jpg'; import Image from "next/image"; import { handleAPIError } from "@/lib/api/common"; // import { ApiError } from "@/lib/api/fetcher"; export default function Login() { const router = useRouter(); const [loginMode, setLoginMode] = useState('password'); // const handleSendCode = async (data: SendCodeFormData) => { // try { // const res = await verificationApi.send({ // type: 'login', // targetType: data.type, // phone: data.phone, // email: data.email, // }) // if (res) { // toast.success('验证码已发送,请注意查收'); // return true; // } else { // throw new Error(); // } // } catch (error) { // toast.error((error as ApiError).message || '验证码发送失败,请稍后再试'); // return false; // } // } // const handleSubmit = async (data: LoginFormData) => { // try { // const res = await authApi.login({ // ...data, // }); // if (res.token) { // toast.success('登录成功'); // localStorage.setItem('token', res.token); // router.replace('/console'); // return true; // } else { // throw new Error(); // } // } catch (error) { // toast.error((error as ApiError).message || '登录失败,请稍后再试'); // return false; // } // } return ( <>
{ e.preventDefault(); const formData = new FormData(e.currentTarget); let handler = (await (async () => { if (loginMode === 'password') { return import('./components/PasswordLoginMode'); } })())?.handleSubmit; if (!handler) { return toast.error('登陆状态异常'); } handler(formData).then((user) => { localStorage.setItem('user_profile', JSON.stringify(user)); // to main page }, (e) => { handleAPIError(e, ({ message }) => toast.error(message)) }) }}>
{loginMode === 'password' ? : null} {/* {loginMode === 'phone' ? : null} */} {/* {loginMode === 'email' ? : null} */}
或者使用
还没有账号?{" "} setLoginMode('phone')}> 注册
Image
登录即表示您同意我们的{" "} 服务条款 {" "} 和{" "} 隐私政策