import axios from "axios"; import { useRouter } from "next/router"; import nProgress from "nprogress"; import { useMemo, useState } from "react"; import useAutoFocus from "../../hooks/useAutoFocus"; import FormLayout from "../../components/FormLayout"; import TextBox from "../../components/TextBox"; import { redirectWithoutClientCache } from "../../utils/client"; import { HandleAxiosError } from "../../utils/front"; import styles from "../../styles/create.module.scss"; function CreateCategory() { const autoFocusRef = useAutoFocus(); const router = useRouter(); const info = useRouter().query?.info as string; const [name, setName] = useState(""); const [error, setError] = useState(null); const [submitted, setSubmitted] = useState(false); const canSubmit = useMemo( () => name.length !== 0 && !submitted, [name.length, submitted] ); const handleSubmit = async (event) => { event.preventDefault(); setError(null); setSubmitted(true); nProgress.start(); try { const { data } = await axios.post("/api/category/create", { name }); redirectWithoutClientCache(router, ""); router.push(`/?categoryId=${data?.categoryId}`); setSubmitted(true); } catch (error) { setError(HandleAxiosError(error)); setSubmitted(false); } finally { nProgress.done(); } }; return ( <> setName(value)} value={name} fieldClass={styles["input-field"]} placeholder="Nom..." innerRef={autoFocusRef} /> ); } CreateCategory.authRequired = true; export default CreateCategory;