feature (error): surface traceID to error screen

This commit is contained in:
MickaelK
2026-09-18 01:42:33 +10:00
parent d464976772
commit bca897639d
3 changed files with 13 additions and 11 deletions
+10 -10
View File
@@ -29,7 +29,7 @@ export default function(opts) {
const result = res.xhr.responseText;
res.responseJSON = JSON.parse(result);
if (res.responseJSON.status !== "ok") {
throw new AjaxError("Oups something went wrong", result);
throw new AjaxError("Oups something went wrong", result, "STATUS_NOT_OK", res.responseHeaders["x-request-id"]);
}
}
return res;
@@ -100,44 +100,44 @@ function processError(xhr, err) {
case 500:
return new AjaxError(
message || "Oups something went wrong with our servers",
err, "INTERNAL_SERVER_ERROR"
err, "INTERNAL_SERVER_ERROR", err.request.headers["x-request-id"],
);
case 401:
return new AjaxError(
message || "Authentication error",
err, "Unauthorized"
err, "Unauthorized", err.request.headers["x-request-id"],
);
case 403:
return new AjaxError(
message || "You can't do that",
err, "FORBIDDEN"
err, "FORBIDDEN", err.request.headers["x-request-id"],
);
case 413:
return new AjaxError(
message || "Payload too large",
err, "PAYLOAD_TOO_LARGE"
err, "PAYLOAD_TOO_LARGE", err.request.headers["x-request-id"],
);
case 502:
return new AjaxError(
message || "The destination is acting weird",
err, "BAD_GATEWAY"
err, "BAD_GATEWAY", err.request.headers["x-request-id"],
);
case 409:
return new AjaxError(
message || "Oups you just ran into a conflict",
err, "CONFLICT"
err, "CONFLICT", err.request.headers["x-request-id"],
);
case 0:
switch (responseText) {
case "":
return new AjaxError(
"Service unavailable, if the problem persist, contact your administrator",
err, "INTERNAL_SERVER_ERROR"
err, "INTERNAL_SERVER_ERROR", err.request.headers["x-request-id"],
);
default:
return new AjaxError(responseText, err, "INTERNAL_SERVER_ERROR");
return new AjaxError(responseText, err, "INTERNAL_SERVER_ERROR", err.request.headers["x-request-id"]);
}
default:
return new AjaxError(message || "Oups something went wrong", err);
return new AjaxError(message || "Oups something went wrong", err, "HTTP_ERROR" , err.request.headers["x-request-id"]);
}
}
+2 -1
View File
@@ -1,9 +1,10 @@
export class AjaxError extends Error {
constructor(message, err = null, code = "UNDEFINED_CODE") {
constructor(message, err = null, code = "UNDEFINED_CODE", traceID = "N/A") {
super(message);
this.name = this.constructor.name;
this.errCode = code;
this.errOrig = err;
this.traceID = traceID;
}
code() {
+1
View File
@@ -76,6 +76,7 @@ function processError(err) {
type: ${err.type()}
code: ${err.code()}
message: ${err.message}
traceID: ${err.traceID}
trace: ${err.stack}`;
} else if (err instanceof ApplicationError) {
msg = t(err.message);