From b5f802269a5ea352b6f29cfeaf4ffc6be88276d3 Mon Sep 17 00:00:00 2001 From: Rob Cameron Date: Thu, 17 Mar 2022 10:57:46 -0700 Subject: [PATCH 1/4] Returns error message as an array in faked extensions --- packages/api/src/validations/errors.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/api/src/validations/errors.ts b/packages/api/src/validations/errors.ts index 8bd4543e6d69..d2a0b7bbfa18 100644 --- a/packages/api/src/validations/errors.ts +++ b/packages/api/src/validations/errors.ts @@ -24,7 +24,7 @@ export class ServiceValidationError extends RedwoodError { code: 'BAD_USER_INPUT', properties: { messages: { - [String(value)]: errorMessage, + [String(value)]: [errorMessage], }, }, } From 5b2c2fda5325a3f42d01e35ac780d7a76ce91aac Mon Sep 17 00:00:00 2001 From: Rob Cameron Date: Thu, 17 Mar 2022 11:08:56 -0700 Subject: [PATCH 2/4] Update title and individual message formatting --- packages/forms/src/FormError.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/forms/src/FormError.tsx b/packages/forms/src/FormError.tsx index ad075f6f41f0..394a28dde75e 100644 --- a/packages/forms/src/FormError.tsx +++ b/packages/forms/src/FormError.tsx @@ -58,7 +58,7 @@ const FormError = ({ !!error.networkError && Object.keys(error.networkError).length > 0 if (hasGraphQLError) { - rootMessage = error.graphQLErrors[0].message ?? 'Something went wrong.' + rootMessage = 'Errors prevented this form from being saved:' const properties = error.graphQLErrors[0].extensions?.[ 'properties' @@ -69,7 +69,7 @@ const FormError = ({ if (propertyMessages) { for (const e in propertyMessages) { propertyMessages[e].forEach((fieldError: any) => { - messages.push(`${e} ${fieldError}`) + messages.push(fieldError) }) } } From 946c9598de903354964cd63a9a91773240c6b4da Mon Sep 17 00:00:00 2001 From: Rob Cameron Date: Thu, 17 Mar 2022 12:00:39 -0700 Subject: [PATCH 3/4] Need to preserve original error message behavior for non-Service Validation errors --- packages/forms/src/FormError.tsx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/forms/src/FormError.tsx b/packages/forms/src/FormError.tsx index 394a28dde75e..18d6071b4bb4 100644 --- a/packages/forms/src/FormError.tsx +++ b/packages/forms/src/FormError.tsx @@ -58,7 +58,12 @@ const FormError = ({ !!error.networkError && Object.keys(error.networkError).length > 0 if (hasGraphQLError) { - rootMessage = 'Errors prevented this form from being saved:' + rootMessage = error.graphQLErrors[0].message ?? 'Something went wrong' + + // override top-level message for ServiceValidation errorrs + if (error.graphQLErrors[0]?.extensions?.code === 'BAD_USER_INPUT') { + rootMessage = 'Errors prevented this form from being saved' + } const properties = error.graphQLErrors[0].extensions?.[ 'properties' From 4aa54067cd32c6838b263ed65a8a139479c92312 Mon Sep 17 00:00:00 2001 From: Rob Cameron Date: Thu, 17 Mar 2022 13:53:25 -0700 Subject: [PATCH 4/4] Adds humanize-string dependency to api package --- packages/api/package.json | 1 + yarn.lock | 1 + 2 files changed, 2 insertions(+) diff --git a/packages/api/package.json b/packages/api/package.json index 3cf4feb2e701..f87d36c9513c 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -33,6 +33,7 @@ "@babel/runtime-corejs3": "7.16.7", "@prisma/client": "3.11.0", "crypto-js": "4.1.1", + "humanize-string": "2.1.0", "jsonwebtoken": "8.5.1", "jwks-rsa": "2.0.5", "md5": "2.3.0", diff --git a/yarn.lock b/yarn.lock index 6539a9c3f1a7..2b0f185f98bf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5741,6 +5741,7 @@ __metadata: "@types/split2": 3.2.1 aws-lambda: 1.0.7 crypto-js: 4.1.1 + humanize-string: 2.1.0 jest: 27.5.1 jsonwebtoken: 8.5.1 jwks-rsa: 2.0.5