import { useRouter } from "next/router" import React, { useEffect, useState } from "react" import { requestApi } from "utils/axios/request" import { saveToken } from "utils/axios/getToken" import storage from "utils/localStorage" import { Avatar, Box, Button, Center, Flex, Heading, HStack, Input, Text, useToast, VStack, Wrap } from "@chakra-ui/react" import Card from "components/card" import { config } from "configs/config" import Link from "next/link" import { ReserveUrls } from "src/data/reserve-urls" import { Tag } from "src/types/tag" import Follow from "components/interaction/follow" import { validateUsername } from "utils/user" const OnboardPage = () => { const [step,setStep] = useState(1) const [email,setEmail] = useState('') const [nickname,setNickname] = useState('') const [username,setUsername] = useState('') const [tags,setTags]:[Tag[],any] = useState([]) const router = useRouter() const toast = useToast() const code = router.query.code useEffect(() => { if (code) { getEmailByCode(code) } }, [code]) const getEmailByCode = async (code) => { const res = await requestApi.get(`/user/email/byCode?code=${code}`) if (!res.data) { toast({ description: "code不存在或者已失效", status: "error", duration: 2000, isClosable: true, }) setTimeout(() => router.push('/login'),2000) } setEmail(res.data) } const register = async () => { if (nickname === "" || username === "") { toast({ description: "nickname or username can't be empty", status: "error", duration: 2000, isClosable: true, }) return } const res0 = await validateUsername(username) if (res0) { toast({ description: res0, status: "error", duration: 2000, isClosable: true, }) return } const res = await requestApi.post("/user/register", { code: code, nickname: nickname,username: username }) saveToken(res.data.token) storage.set('session', res.data) setStep(2) const res1 = await requestApi.get(`/tag/all`) setTags(res1.data) } const finish = async () => { const oldPage = storage.get('current-page') if (oldPage) { storage.remove('current-page') router.push(oldPage) } else { router.push('/') } } return (