fix: U03 pagination + U04 form errors with retry (#1788956171115)
This commit is contained in:
@@ -14,7 +14,11 @@ export const POST: APIRoute = async ({ request, redirect, cookies }) => {
|
||||
let uploadToken: string | null = null;
|
||||
try {
|
||||
const response = await fetch(`${base}/api/v1/catch-reports`, { method: "POST", headers: { "content-type": "application/json", "X-Forwarded-For": request.headers.get("x-forwarded-for") || request.headers.get("x-real-ip") || "unknown" }, body: JSON.stringify(payload), signal: AbortSignal.timeout(30_000) });
|
||||
if (!response.ok) return redirect("/report?state=create_error", 303);
|
||||
if (!response.ok) {
|
||||
if (response.status === 429) return redirect("/report?state=rate_limited", 303);
|
||||
if (response.status >= 500) return redirect("/report?state=server_error", 303);
|
||||
return redirect("/report?state=create_error", 303);
|
||||
}
|
||||
const created = await response.json() as { id?: unknown; screenshot_upload_token?: unknown };
|
||||
if (typeof created.id !== "string" || typeof created.screenshot_upload_token !== "string") return redirect("/report?state=create_error", 303);
|
||||
createdId = created.id;
|
||||
@@ -30,7 +34,11 @@ export const POST: APIRoute = async ({ request, redirect, cookies }) => {
|
||||
}
|
||||
return redirect("/report?state=sent", 303);
|
||||
}
|
||||
catch {
|
||||
catch (err) {
|
||||
if (err instanceof TypeError && err.message.includes("abort")) {
|
||||
if (createdId && uploadToken) cookies.set(`rf4-upload-${createdId}`, uploadToken, {httpOnly:true, sameSite:"strict", secure:import.meta.env.PROD, path:"/", maxAge:3600});
|
||||
return redirect(createdId ? `/report?state=screenshot_error&report_id=${encodeURIComponent(createdId)}` : "/report?state=timeout", 303);
|
||||
}
|
||||
if (createdId && uploadToken) cookies.set(`rf4-upload-${createdId}`, uploadToken, {httpOnly:true, sameSite:"strict", secure:import.meta.env.PROD, path:"/", maxAge:3600});
|
||||
return redirect(createdId ? `/report?state=screenshot_error&report_id=${encodeURIComponent(createdId)}` : "/report?state=create_error", 303);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user