import React, { useState } from "react" import { Text, Box, VStack, Button, Image, useColorModeValue, Link, Center, Flex, IconButton, HStack, Modal, ModalOverlay, ModalContent, ModalBody, useDisclosure, Input, useToast, Heading } from "@chakra-ui/react" import Logo from "components/logo" import { FaEnvelope, FaGithub, FaPlane, FaRegPaperPlane } from "react-icons/fa" import { requestApi } from "utils/axios/request" import { saveToken } from "utils/axios/getToken" import storage from "utils/localStorage" import { useRouter } from "next/router" import { validateEmail } from "utils/user" const LoginPage = () => { const { isOpen, onOpen, onClose } = useDisclosure() const toast = useToast() const router = useRouter() const [email, setEmail] = useState('') const [emailLogined, setEmailLogined] = useState(false) const login = async (email: string) => { const res = await requestApi.post("/user/login", { email: email }) saveToken(res.data.token) storage.set('session', res.data) const oldPage = storage.get('current-page') if (oldPage) { storage.remove('current-page') router.push(oldPage) } else { router.push('/') } } const onEmailLogin = async () => { const err = await validateEmail(email, false) if (err) { toast({ description: err, status: "error", duration: 2000, isClosable: true, }) return } await requestApi.post("/user/login/email", { email: email }) onClose() setEmailLogined(true) // login(email) } return ( 欢迎加入im.dev,一起打造全世界最好的开发者社区 { emailLogined ? Check your inbox for a secure link to sign in. : <> 从世界各地精选最优秀的内容 丰富的功能特性等待你的探索 充分展示自我并获得猎头关注 OR } onClick={onOpen} /> 如果继续,则表示你同意im.dev的服务条款和隐私政策 } Sign in using a secure link setEmail(e.currentTarget.value)} placeholder="enter your email address" _focus={null}> ) } export default LoginPage