Skip to content

Commit f4a1ec0

Browse files
authored
allow ability to write validation message to the notification system (#612)
1 parent bb9b7f8 commit f4a1ec0

File tree

3 files changed

+19
-12
lines changed

3 files changed

+19
-12
lines changed

src/context/engagement_context/engagement_context.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import { EngagementFormConfig } from '../../schemas/engagement_config';
1111
import {
1212
AlreadyExistsError,
1313
AlreadyLaunchedError,
14+
BadRequestError,
1415
NamingError,
1516
NotFoundError,
1617
} from '../../services/engagement_service/engagement_service_errors';
@@ -413,7 +414,7 @@ export const EngagementProvider = ({
413414
feedbackContext.hideLoader();
414415
let errorMessage =
415416
'There was an issue with saving your changes. Please follow up with an administrator if this continues.';
416-
if (e instanceof AlreadyExistsError || e instanceof NamingError) {
417+
if (e instanceof AlreadyExistsError || e instanceof NamingError || e instanceof BadRequestError) {
417418
errorMessage = e.message;
418419
}
419420
feedbackContext.showAlert(errorMessage, AlertType.error);

src/packages/api_v1_sdk/apiv1_engagement_service.ts

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import {
44
} from '../../services/engagement_service/engagement_service';
55
import { Engagement } from '../../schemas/engagement';
66
import { EngagementFormConfig } from '../../schemas/engagement_config';
7-
import { AlreadyExistsError, NamingError } from '../../services/engagement_service/engagement_service_errors';
7+
import { AlreadyExistsError, BadRequestError, NamingError } from '../../services/engagement_service/engagement_service_errors';
88
import { EngagementJsonSerializer } from '../../serializers/engagement/engagement_json_serializer';
99
import { Logger } from '../../utilities/logger';
1010
import { handleAxiosResponseErrors } from './http_error_handlers';
@@ -144,17 +144,22 @@ export class Apiv1EngagementService implements EngagementService {
144144
return Apiv1EngagementService.engagementSerializer.deserialize(data);
145145
} catch (e) {
146146
if (e.isAxiosError) {
147-
if(e.response.status === 400 && e.response.data["parameter_violations"]) {
148-
const errorMessage = e.response.data["parameter_violations"][0];
149-
let field = "Parameter";
150-
if(errorMessage.path === 'put.engagement.customerName') {
151-
field = "Client name";
152-
} else if(errorMessage.path === 'put.engagement.name') {
153-
field = 'Engagement name';
147+
if(e.response.status === 400) {
148+
149+
if(e.response.data["parameter_violations"]) {
150+
const errorMessage = e.response.data["parameter_violations"][0];
151+
let field = "Parameter";
152+
if(errorMessage.path === 'put.engagement.customerName') {
153+
field = "Client name";
154+
} else if(errorMessage.path === 'put.engagement.name') {
155+
field = 'Engagement name';
156+
}
157+
throw new NamingError(
158+
`${field} value ${errorMessage.value} is invalid. 😔 ${errorMessage.message}`
159+
);
160+
} else if(e.response.data["lodestarMessage"]) {
161+
throw new BadRequestError(e.response.data["lodestarMessage"]);
154162
}
155-
throw new NamingError(
156-
`${field} value ${errorMessage.value} is invalid. 😔 ${errorMessage.message}`
157-
);
158163
}
159164

160165
if (e.response.status === 409) {

src/services/engagement_service/engagement_service_errors.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@ export class AlreadyExistsError extends Error {}
22
export class NamingError extends Error {}
33
export class AlreadyLaunchedError extends Error {}
44
export class NotFoundError extends Error {}
5+
export class BadRequestError extends Error {}

0 commit comments

Comments
 (0)