import { trpc } from '@documenso/trpc/react'; import { Button } from '@documenso/ui/primitives/button'; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from '@documenso/ui/primitives/dialog'; import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from '@documenso/ui/primitives/form/form'; import { Input } from '@documenso/ui/primitives/input'; import { useToast } from '@documenso/ui/primitives/use-toast'; import { zodResolver } from '@hookform/resolvers/zod'; import { Trans, useLingui } from '@lingui/react/macro'; import { useEffect, useState } from 'react'; import { useForm } from 'react-hook-form'; import { z } from 'zod'; const ZSendTestEmailFormSchema = z.object({ to: z.string().email(), }); type TSendTestEmailFormSchema = z.infer; export type EmailTransportSendTestDialogProps = { transportId: string; trigger: React.ReactNode; }; export const EmailTransportSendTestDialog = ({ transportId, trigger }: EmailTransportSendTestDialogProps) => { const { t } = useLingui(); const { toast } = useToast(); const [open, setOpen] = useState(false); const { mutateAsync: sendTest } = trpc.admin.emailTransport.sendTest.useMutation({ onSuccess: () => { toast({ title: t`Test email sent.`, }); setOpen(false); }, onError: (error) => { toast({ title: t`Test failed.`, description: error.message, variant: 'destructive', }); }, }); const form = useForm({ resolver: zodResolver(ZSendTestEmailFormSchema), defaultValues: { to: '', }, }); const onFormSubmit = async ({ to }: TSendTestEmailFormSchema) => { await sendTest({ id: transportId, to }); }; useEffect(() => { if (!open) { form.reset(); } }, [open, form]); return ( !form.formState.isSubmitting && setOpen(value)}> e.stopPropagation()}> {trigger} Send Test Email Send a test email using this transport to verify the configuration.
( Email )} />
); };