"use client"; import { Button } from "@usesend/ui/src/button"; import { Input } from "@usesend/ui/src/input"; import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, DialogTrigger, } from "@usesend/ui/src/dialog"; import { Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, } from "@usesend/ui/src/form"; import { api } from "~/trpc/react"; import React, { useState } from "react"; import { Domain } from "@prisma/client"; import { useRouter } from "next/navigation"; import { toast } from "@usesend/ui/src/toaster"; import { z } from "zod"; import { useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; const domainSchema = z.object({ domain: z.string(), }); export const DeleteDomain: React.FC<{ domain: Domain }> = ({ domain }) => { const [open, setOpen] = useState(false); const [domainName, setDomainName] = useState(""); const deleteDomainMutation = api.domain.deleteDomain.useMutation(); const domainForm = useForm>({ resolver: zodResolver(domainSchema), }); const utils = api.useUtils(); const router = useRouter(); async function onDomainDelete(values: z.infer) { if (values.domain !== domain.name) { domainForm.setError("domain", { message: "Domain name does not match", }); return; } deleteDomainMutation.mutate( { id: domain.id, }, { onSuccess: () => { utils.domain.domains.invalidate(); setOpen(false); toast.success(`Domain ${domain.name} deleted`); router.replace("/domains"); }, }, ); } return ( (_open !== open ? setOpen(_open) : null)} > Delete domain Are you sure you want to delete{" "} {domain.name} ? You can't reverse this.
( Domain {formState.errors.domain ? ( ) : ( . )} )} />
); }; export default DeleteDomain;