File size: 925 Bytes
9e89154 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | /**
* Normalizes Flask `error_response` / legacy shapes — mirrors
* `frontend/src/services/api.js` interceptor order:
* `error.message` | `error` (string) | top-level `message` | axios message | fallback.
*/
export function extractApiErrorMessage(
err: unknown,
responseData: unknown
): string {
if (responseData && typeof responseData === "object") {
const r = responseData as {
error?: unknown;
message?: unknown;
};
const nested = r.error;
if (
nested &&
typeof nested === "object" &&
nested !== null &&
"message" in nested
) {
const m = (nested as { message?: unknown }).message;
if (typeof m === "string") return m;
}
if (typeof nested === "string") return nested;
if (typeof r.message === "string") return r.message;
}
if (err instanceof Error && err.message) return err.message;
return "An unexpected error occurred";
}
|