import { Button, FormControl, FormErrorMessage, FormHelperText, FormLabel, Modal, ModalBody, ModalCloseButton, ModalContent, ModalFooter, ModalHeader, ModalOverlay, Select, useToast, } from "@chakra-ui/react"; import { zodResolver } from "@hookform/resolvers/zod"; import UserSelector from "components/common/UserSelector"; import { useState } from "react"; import { Controller, useForm } from "react-hook-form"; import { getToastOptions } from "utils/objects"; import { trpc } from "utils/trpc"; import { vouchSchema } from "utils/validators/vouch"; import * as z from "zod"; interface Props { canVouchFor: number; } type FormData = z.infer; const VouchModal: React.FC = ({ canVouchFor }) => { const toast = useToast(); const [isOpen, setIsOpen] = useState(false); const { handleSubmit, errors, register, control } = useForm({ resolver: zodResolver(vouchSchema), }); const utils = trpc.useQueryUtils(); const { mutate, status } = trpc.useMutation("plus.vouch", { onSuccess() { toast(getToastOptions("Successfully vouched", "success")); utils.invalidateQuery(["plus.statuses"]); setIsOpen(false); }, onError(error) { toast(getToastOptions(error.message, "error")); }, }); return ( <> {isOpen && ( setIsOpen(false)} size="xl" closeOnOverlayClick={false} > Vouching
mutate(data))}> Tier ( )} /> User ( )} /> {errors.vouchedId?.message} Region If the player isn't from either region then choose the one they play most commonly with.
)} ); }; export default VouchModal;