Refactor: move public storefront stop data to server-side + parallel agent work
Server-side / caching refactor (Grok): - New RPC get_public_stops_for_brand (migration 148) for public storefront stops - New server action getPublicStopsForBrand with revalidate=300 + tags - Add revalidateTag invalidation to createStopsBatch + publishStop - Convert /tuxedo/stops and /indian-river-direct/stops to Server Components - Extract TuxedoStopsList + IndianRiverStopsList as client islands (GSAP only) - Removes supabase-js from browser bundle on those routes - Both pages now statically prerendered (5m ISR) Parallel agent changes also staged: - AI provider model list refresh (claude-sonnet-4-5, etc.) - ESLint directive patches for react-hooks/set-state-in-effect - Admin + storefront + checkout + cart updates - New admin_create_stop_rpcs migration (147) - Misc fixes across ~90 files Build verified: typecheck clean, lint clean on new files, production build succeeds.
This commit is contained in:
@@ -268,11 +268,35 @@ export async function deleteWaterHeadgate(headgateId: string): Promise<{ success
|
||||
}
|
||||
);
|
||||
|
||||
const data = await response.json();
|
||||
if (!response.ok || !data?.success) {
|
||||
return { success: false, error: data?.error ?? "Failed to delete headgate" };
|
||||
// The RPC returns JSONB on success: { success: true } or { success: false, error: "..." }.
|
||||
// On failure (HTTP non-2xx) Supabase returns { message: "...", code: "...", details: ... }.
|
||||
// We try to extract the most useful message in both cases.
|
||||
let data: { success?: boolean; error?: string; message?: string } | null = null;
|
||||
try {
|
||||
data = await response.json();
|
||||
} catch {
|
||||
// Non-JSON body — leave data as null, fall through to default error
|
||||
}
|
||||
return { success: true };
|
||||
|
||||
if (response.ok && data?.success) {
|
||||
return { success: true };
|
||||
}
|
||||
|
||||
// Prefer the RPC's own error if it set one
|
||||
const errorMessage =
|
||||
data?.error ??
|
||||
data?.message ??
|
||||
(response.ok ? "Unknown error" : `HTTP ${response.status}: ${response.statusText || "request failed"}`);
|
||||
|
||||
if (process.env.NODE_ENV !== "production") {
|
||||
console.error("[deleteWaterHeadgate] failed", {
|
||||
headgateId,
|
||||
status: response.status,
|
||||
data,
|
||||
});
|
||||
}
|
||||
|
||||
return { success: false, error: errorMessage };
|
||||
}
|
||||
|
||||
// ── Entries ────────────────────────────────────────────────
|
||||
|
||||
Reference in New Issue
Block a user