fix: remove Content-Type header when sending FormData in apiFetch

The hardcoded 'Content-Type: application/json' header was conflicting
with multipart/form-data uploads. When body is FormData, we now omit
the Content-Type header to let the browser set the correct
'multipart/form-data; boundary=...' header.

Fixes 415 Unsupported Media Type error on photo uploads.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Gabriel Santana de Menezes 2026-05-21 19:07:31 -04:00
parent f86d8a1e69
commit ee3c42a17f

View file

@ -21,16 +21,17 @@ export async function apiFetch<T>(path: string, options: RequestOptions = {}) {
} }
} }
const isFormData = body instanceof FormData
const contentTypeHeader = isFormData ? {} : { 'Content-Type': 'application/json' }
const response = await fetch(buildUrl(path), { const response = await fetch(buildUrl(path), {
...rest, ...rest,
headers: { headers: {
'Content-Type': 'application/json', ...contentTypeHeader,
...authHeader, ...authHeader,
...headers, ...headers,
}, },
body: body !== undefined && body !== null && !(body instanceof FormData) body: isFormData ? body : (body !== undefined && body !== null ? JSON.stringify(body) : undefined),
? JSON.stringify(body)
: body,
}) })
const text = await response.text() const text = await response.text()