import { NextPage, NextPageContext } from 'next' import { NextSeo } from 'next-seo' import { useState } from 'react' import dynamic from 'next/dynamic' import { useRouter } from 'next/router' import { get } from '@utils/Query' import { parseCookie } from '@utils/Tools' import { Bot, Server, SubmittedBot, User } from '@types' import Fetch from '@utils/Fetch' import { getToken } from '@utils/Csrf' const Container = dynamic(() => import('@components/Container')) const ResponsiveGrid = dynamic(() => import('@components/ResponsiveGrid')) const Button = dynamic(() => import('@components/Button')) const BotCard = dynamic(() => import('@components/BotCard')) const ServerCard = dynamic(() => import('@components/ServerCard')) const SubmittedBotCard = dynamic(() => import('@components/SubmittedBotCard')) const Login = dynamic(() => import('@components/Login')) const Panel:NextPage = ({ logged, user, submits, csrfToken }) => { const router = useRouter() const [ submitLimit, setSubmitLimit ] = useState(8) if(!logged) return return

관리 패널

깃허브 계정 연동

연동한 깃허브 계정은 프로필에 표시됩니다.

나의 봇

{ user.bots.length === 0 ?

소유한 봇이 없습니다.

: { (user.bots as Bot[]).map(bot=> ) } }

나의 서버

{ user.servers.length === 0 ?

소유한 서버가 없습니다.

: { (user.servers as Server[]).map(server=> ) } }

봇 심사이력

{ submits.length === 0 ?

심사이력이 없습니다.

: <>

자세히 보려면 카드를 클릭하세요.

{ submits.slice(0, submitLimit).map(el=> ) }
{ submitLimit < submits.length &&
} }
} export const getServerSideProps = async (ctx: NextPageContext) => { const parsed = parseCookie(ctx.req) const user = await get.Authorization(parsed?.token) || '' const submits = await get.botSubmits.load(user) return { props: { logged: !!user, user: await get.user.load(user), submits, csrfToken: getToken(ctx.req, ctx.res) } } } interface PanelProps { logged: boolean user: User submits: SubmittedBot[] csrfToken: string } export default Panel