From 6d23639e03b66ab47a1ea22ad3bb36c19ca6bc55 Mon Sep 17 00:00:00 2001 From: "Builder.io" Date: Tue, 30 Sep 2025 00:37:51 +0000 Subject: [PATCH] Add fallback to supabase update when /api/profile/ensure returns 404 cgen-e3260a3d006143b9b175d52103ef9d09 --- client/pages/Onboarding.tsx | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/client/pages/Onboarding.tsx b/client/pages/Onboarding.tsx index 57745f60..8748c576 100644 --- a/client/pages/Onboarding.tsx +++ b/client/pages/Onboarding.tsx @@ -148,15 +148,32 @@ export default function Onboarding() { headers: { "Content-Type": "application/json" }, body: JSON.stringify({ id: user.id, profile: payload }), }); + + // If server endpoint missing (404) or returns server error, fallback to direct Supabase client if (!ensureResp.ok) { - const text = await ensureResp.text().catch(() => ""); - let parsedError: any = undefined; - try { - parsedError = JSON.parse(text); - } catch {} - const message = - parsedError?.error || text || `HTTP ${ensureResp.status}`; - throw new Error(message); + // If endpoint not found, attempt client-side upsert via Supabase SDK + if (ensureResp.status === 404) { + try { + await aethexUserService.updateProfile(user.id, payload as any); + } catch (err) { + const text = await ensureResp.text().catch(() => ""); + let parsedError: any = undefined; + try { + parsedError = JSON.parse(text); + } catch {} + const message = parsedError?.error || text || `HTTP ${ensureResp.status}`; + throw new Error(`Server endpoint missing and client fallback failed: ${message}`); + } + } else { + const text = await ensureResp.text().catch(() => ""); + let parsedError: any = undefined; + try { + parsedError = JSON.parse(text); + } catch {} + const message = + parsedError?.error || text || `HTTP ${ensureResp.status}`; + throw new Error(message); + } } // Fire-and-forget interests via server