23 lines
979 B
TypeScript
23 lines
979 B
TypeScript
import { apiFetch, RateLimitError, ApiError, NetworkError } from '../client';
|
|
import type { ContactPayload, ContactResult } from '../types/contact';
|
|
import { resolveBaseUrl } from '../base-url';
|
|
|
|
export async function submitContact(payload: ContactPayload): Promise<ContactResult> {
|
|
try {
|
|
const data = await apiFetch<{ id?: number; status?: string; error?: string }>(`${resolveBaseUrl()}/public/contact`, {
|
|
method: 'POST',
|
|
headers: { 'Content-Type': 'application/json' },
|
|
body: JSON.stringify(payload),
|
|
});
|
|
return { success: true, id: data.id ?? 0 };
|
|
} catch (err) {
|
|
if (err instanceof RateLimitError) throw err;
|
|
if (err instanceof NetworkError) {
|
|
return { success: false, error: 'Network error. Please check your connection and try again.' };
|
|
}
|
|
if (err instanceof ApiError) {
|
|
return { success: false, error: err.message };
|
|
}
|
|
return { success: false, error: 'Something went wrong. Please try again.' };
|
|
}
|
|
}
|