import { XCircleIcon, PlusCircleIcon } from "@heroicons/react/20/solid"; import { useRouter } from "next/router"; import { useState } from "react"; import { type SubmitHandler, useForm, type UseFormReturn, } from "react-hook-form"; import { AdminBarLayout } from "~/components/admin/ControlBar"; import { AdminActionButton, AdminActionConfirmButton, } from "~/components/admin/common"; import { type ResourceCreateInput, ResourceForm, type ResourceUpdateInput, } from "~/components/admin/resources/form"; import { HeaderFooterLayout } from "~/layouts/HeaderFooterLayout"; import { api } from "~/utils/api"; import { parseTRPCErrorMessage } from "~/utils/parseTRPCError"; const EditResourcePage = () => { const router = useRouter(); const formMethods = useForm(); const [serverError, setServerError] = useState(undefined); const { mutate } = api.auditoryResource.create.useMutation({ onSuccess: async (resData) => { if (!resData) { setServerError("An unexpected error has occured"); } setServerError(undefined); await router.push(`/resources/${resData.id}`); }, onError: (error) => { setServerError(parseTRPCErrorMessage(error.message)); }, }); const onSubmit: SubmitHandler = (data) => { mutate(data); }; return ( } label="Create" onClick={() => { formMethods .handleSubmit(onSubmit)() .catch((error) => console.error(error)); }} />, } label="Cancel" onConfirm={() => { router.push("/resources").catch((error) => { console.error(error); }); }} />, ]} >
} error={serverError} />
); }; export default EditResourcePage;