Add fallback to supabase update when /api/profile/ensure returns 404
cgen-e3260a3d006143b9b175d52103ef9d09
This commit is contained in:
parent
f70ffedd4e
commit
6d23639e03
1 changed files with 25 additions and 8 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in a new issue