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 { useToast } from '@documenso/ui/primitives/use-toast'; import { Trans, useLingui } from '@lingui/react/macro'; import { useState } from 'react'; import { EmailTransportForm, type EmailTransportFormValues, emailTransportFormToConfig, } from '../forms/email-transport-form'; export type EmailTransportCreateDialogProps = { trigger?: React.ReactNode; }; export const EmailTransportCreateDialog = ({ trigger }: EmailTransportCreateDialogProps) => { const { t } = useLingui(); const { toast } = useToast(); const [open, setOpen] = useState(false); const { mutateAsync: createTransport, isPending } = trpc.admin.emailTransport.create.useMutation({ onSuccess: () => { toast({ title: t`Transport created.`, }); setOpen(false); }, onError: (error) => { toast({ title: t`Failed to create transport.`, description: error.message, variant: 'destructive', }); }, }); const onFormSubmit = async (values: EmailTransportFormValues) => { await createTransport({ name: values.name, fromName: values.fromName, fromAddress: values.fromAddress, config: emailTransportFormToConfig(values), }); }; return ( !isPending && setOpen(value)}> e.stopPropagation()} asChild> {trigger ?? ( )} Add Email Transport Fill in the details to create a new email transport. } /> ); };