import { SmtpConfiguration, SmtpEventConfiguration } from "../configuration/smtp-config-schema"; import { BoxWithBorder } from "../../../components/box-with-border"; import { Box, Button, Text } from "@saleor/macaw-ui/next"; import { defaultPadding } from "../../../components/ui-defaults"; import { useDashboardNotification } from "@saleor/apps-shared"; import { trpcClient } from "../../trpc/trpc-client"; import { useForm } from "react-hook-form"; import { BoxFooter } from "../../../components/box-footer"; import { SectionWithDescription } from "../../../components/section-with-description"; import { SmtpUpdateEvent, smtpUpdateEventSchema } from "../configuration/smtp-config-input-schema"; import { useRouter } from "next/router"; import { zodResolver } from "@hookform/resolvers/zod"; import { smtpUrls } from "../urls"; import { setBackendErrors } from "../../../lib/set-backend-errors"; import { TextLink } from "@saleor/apps-ui"; interface EventBoxProps { configuration: SmtpConfiguration; event: SmtpEventConfiguration; } const EventBox = ({ event, configuration }: EventBoxProps) => { const router = useRouter(); const { notifySuccess, notifyError } = useDashboardNotification(); const { handleSubmit, control, setError, register } = useForm({ defaultValues: { id: configuration.id, ...event, }, resolver: zodResolver(smtpUpdateEventSchema), }); const trpcContext = trpcClient.useContext(); const { mutate } = trpcClient.smtpConfiguration.updateEvent.useMutation({ onSuccess: async () => { notifySuccess("Configuration saved"); trpcContext.smtpConfiguration.invalidate(); }, onError(error) { setBackendErrors({ error, setError, notifyError, }); }, }); return (
{ mutate({ ...data, }); })} > {event.eventType}
); }; interface SmtpEventsSectionProps { configuration: SmtpConfiguration; } export const SmtpEventsSection = ({ configuration }: SmtpEventsSectionProps) => { return ( Chose which Saleor events should send emails via SMTP. You can modify the email templates using{" "} MJML {" "} syntax. } > {configuration.events.map((event) => ( ))} ); };