"use client"; import { useState } from "react"; import { zodResolver } from "@hookform/resolvers/zod"; import { useTranslations } from "next-intl"; import dynamic from "next/dynamic"; import { FormProvider, useForm } from "react-hook-form"; import { z } from "zod"; import { clearMessage } from "@/app/[locale]/components/InfoMessage"; import InfoMessage from "@/app/[locale]/components/InfoMessage"; import LoadingMap from "@/app/[locale]/components/LoadingMap"; import { DateField } from "@/app/[locale]/components/form/DateField"; import { SelectField } from "@/app/[locale]/components/form/SelectField"; import { SwitchField } from "@/app/[locale]/components/form/SwitchField"; import { TextAreaField } from "@/app/[locale]/components/form/TextAreaField"; import { TextField } from "@/app/[locale]/components/form/TextField"; import { addTournamentSchema } from "@/schemas"; import { TimeControl } from "@/types"; import { trpc } from "@/utils/trpc"; type TournamentFormValues = z.infer; const Map = dynamic(() => import("./Map"), { ssr: false, loading: LoadingMap, }); const TournamentForm = () => { const t = useTranslations("AddTournament"); const at = useTranslations("App"); const addTournament = trpc.addTournament.useMutation(); const [responseMessage, setResponseMessage] = useState({ isSuccessful: false, message: "", }); const form = useForm({ resolver: zodResolver(addTournamentSchema), defaultValues: { tournament: { norm_tournament: false, coordinates: [47.0844, 2.3964], }, }, }); const onSubmit = async (data: TournamentFormValues) => { try { await addTournament.mutateAsync(data); setResponseMessage({ isSuccessful: true, message: t("success"), }); clearMessage(setResponseMessage); form.reset(); } catch (err: unknown) { console.log(err); setResponseMessage({ isSuccessful: true, message: t("failure"), }); clearMessage(setResponseMessage); } }; return (
({ value: tc, label: at("timeControlEnum", { tc }), }))} required />
); }; export default TournamentForm;