"use server"; import { getI18n, getLocalizedI18n } from "@/i18n/server"; import { contactSchema } from "@/types/contact"; import { getPayload } from "@/utils/payload"; import { getSettings } from "@/api"; import { renderContactConfirmationEmail } from "@/emails/contact-confirmation"; import { renderContactEmail } from "@/emails/contact"; export const submitContactFormAction = async (_: any, formData: FormData) => { const { success, error, data } = contactSchema.safeParse(Object.fromEntries(formData)); if (!success) { return { success, error: error.flatten().fieldErrors }; } const payload = await getPayload(); const { adminLanguage, contactEmailsTo } = await getSettings(); const [t, reset] = await getLocalizedI18n(adminLanguage); try { let res = await payload.sendEmail({ to: contactEmailsTo, subject: t("email.contactSubject", { name: data.name }), email: await renderContactEmail({ t, ...data, }), }); res = await payload.sendEmail({ to: data.email, subject: t("email.contactConfirmationSubject"), email: await renderContactConfirmationEmail({ t, ...data, }), }); } finally { reset(); } return { success: true }; };