import { NextPage, NextPageContext } from 'next' import { useState } from 'react' import { useRouter } from 'next/router' import dynamic from 'next/dynamic' import { NextSeo } from 'next-seo' import { Form, Formik } from 'formik' import { ParsedUrlQuery } from 'querystring' import { getJosaPicker } from 'josa' import { get } from '@utils/Query' import { checkUserFlag, cleanObject, getRandom, makeServerURL, parseCookie, redirectTo } from '@utils/Tools' import { ManageServer, ManageServerSchema } from '@utils/Yup' import { serverCategories, ServerIntroList } from '@utils/Constants' import { Server, Theme, User } from '@types' import { getToken } from '@utils/Csrf' import Fetch from '@utils/Fetch' import NotFound from 'pages/404' const Label = dynamic(() => import('@components/Form/Label')) const Input = dynamic(() => import('@components/Form/Input')) const Divider = dynamic(() => import('@components/Divider')) const Redirect = dynamic(() => import('@components/Redirect')) const TextArea = dynamic(() => import('@components/Form/TextArea')) const Segment = dynamic(() => import('@components/Segment')) const Markdown = dynamic(() => import('@components/Markdown')) const Selects = dynamic(() => import('@components/Form/Selects')) const Button = dynamic(() => import('@components/Button')) const Container = dynamic(() => import('@components/Container')) const ServerIcon = dynamic(() => import('@components/ServerIcon')) const Message = dynamic(() => import('@components/Message')) const Modal = dynamic(() => import('@components/Modal')) const Captcha = dynamic(() => import('@components/Captcha')) const Login = dynamic(() => import('@components/Login')) const Forbidden = dynamic(() => import('@components/Forbidden')) const ManageServerPage:NextPage = ({ server, user, owners, csrfToken, theme }) => { const [ data, setData ] = useState(null) const [ deleteModal, setDeleteModal ] = useState(false) const router = useRouter() async function submitServer(value: ManageServer) { const res = await Fetch(`/servers/${server.id}`, { method: 'PATCH', body: JSON.stringify(cleanObject(value)) }) setData(res) } if(!server) return if(!user) return if(!(owners as User[]).find(el => el.id === user.id) && !checkUserFlag(user.flags, 'staff')) return return

서버 관리하기

{({ errors, touched, values, setFieldTouched, setFieldValue }) => (

{server.name}

ID: {server.id}

{ data ? data.code === 200 ?

정보를 저장했습니다.

반영까지는 시간이 조금 걸릴 수 있습니다!

:

{data.message || '오류가 발생했습니다.'}

    {data.errors?.map((el, n) =>
  • {el}
  • )}
: '' }