import { alertAction } from '$lib/client/confirm.svelte'; /** * Fetch wrapper for actions where a non-OK response should pop a modal * via alertAction(). Returns the Response on 2xx, or null after showing * the alert. Caller should `if (!res) return;` after the call. * * Use this for *interactive* actions (rename, delete, save). For form * submissions where the error should appear inline next to the field * (e.g. admin/domains add()), keep manual handling. */ export async function asyncFetch( url: string, init: RequestInit | undefined, errorTitle: string ): Promise { const res = await fetch(url, init); if (res.ok) return res; const body = (await res.json().catch(() => null)) as { message?: string } | null; await alertAction({ title: errorTitle, message: body?.message ?? `HTTP ${res.status}` }); return null; }