Compare commits

...

2 Commits

View File

@ -452,7 +452,7 @@ export interface ContactFormResponse {
} }
/** /**
* Submit contact form * Submit contact form (public endpoint - no authentication required)
*/ */
export async function submitContactForm( export async function submitContactForm(
data: ContactFormInput data: ContactFormInput
@ -462,18 +462,34 @@ export async function submitContactForm(
method: "POST", method: "POST",
headers: { headers: {
"Content-Type": "application/json", "Content-Type": "application/json",
"Accept": "application/json",
}, },
body: JSON.stringify({ body: JSON.stringify({
name: data.name, name: data.name.trim(),
email: data.email, email: data.email.trim().toLowerCase(),
phone: data.phone, phone: data.phone.trim(),
message: data.message, message: data.message.trim(),
}), }),
}); });
const responseData = await response.json(); // Handle empty responses
const contentType = response.headers.get("content-type");
let responseData: any;
if (contentType && contentType.includes("application/json")) {
const text = await response.text();
responseData = text ? JSON.parse(text) : {};
} else {
const text = await response.text();
responseData = text ? { message: text } : {};
}
if (!response.ok) { if (!response.ok) {
// Check for authentication error specifically
if (response.status === 401 || response.status === 403) {
throw new Error("Contact form submission requires authentication. Please contact support if this is a public form.");
}
const error: ApiError = responseData; const error: ApiError = responseData;
throw new Error(extractErrorMessage(error)); throw new Error(extractErrorMessage(error));
} }
@ -483,7 +499,7 @@ export async function submitContactForm(
if (error instanceof Error) { if (error instanceof Error) {
throw error; throw error;
} }
throw new Error("Failed to submit contact form"); throw new Error("Failed to submit contact form. Please try again later.");
} }
} }