Skip to content

Commit

Permalink
fix: TypeError formatting (#5076)
Browse files Browse the repository at this point in the history
  • Loading branch information
petermakowski authored Jul 21, 2023
1 parent 223e2af commit 004fe82
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 9 deletions.
8 changes: 3 additions & 5 deletions src/app/utils/formatErrors.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,8 @@ describe("formatErrors", () => {
expect(formatErrors(error, "name")).toEqual("Too long.");
});

it("can return the errors for a single key from an array", () => {
const error = {
name: ["Too long.", "Too late."],
};
expect(formatErrors(error, "name")).toEqual("Too long. Too late.");
it("correctly formats fetch TypeError", () => {
const typeError = new TypeError("Failed to fetch");
expect(formatErrors(typeError)).toEqual("Failed to fetch");
});
});
14 changes: 10 additions & 4 deletions src/app/utils/formatErrors.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@ const flattenErrors = <E>(errors: E): string | null => {

export type ErrorType<E = null, I = any, K extends keyof I = any> =
| APIError<E>
| EventError<I, E, K>;
| EventError<I, E, K>
| Error;

export const formatErrors = <E, I, K extends keyof I>(
errors?: ErrorType<E, I, K>,
Expand All @@ -34,9 +35,14 @@ export const formatErrors = <E, I, K extends keyof I>(
if (errorKey && errorKey in errors) {
errorMessage = flattenErrors(errors[errorKey as keyof typeof errors]);
} else {
errorMessage = Object.entries(errors)
.map(([key, value]) => `${key}: ${flattenErrors(value)}`)
.join(" ");
const errorEntries = Object.entries(errors);
if (errorEntries.length > 0) {
errorMessage = Object.entries(errors)
.map(([key, value]) => `${key}: ${flattenErrors(value)}`)
.join(" ");
} else if (errors instanceof Error) {
errorMessage = errors?.message;
}
}
} else if (typeof errors === "string") {
errorMessage = errors;
Expand Down

0 comments on commit 004fe82

Please sign in to comment.