Compare commits

...

2 Commits

5 changed files with 20 additions and 15 deletions
@@ -24,7 +24,9 @@ export const PromiseRejectionEffect = () => {
return; // already handled by apolloLink
}
enqueueErrorSnackBar({});
if (error.networkError?.name !== 'AbortError') {
enqueueErrorSnackBar({});
}
try {
const { captureException } = await import('@sentry/react');
@@ -123,6 +123,10 @@ export const useSnackBar = () => {
) & {
options?: Omit<SnackBarOptions, 'message' | 'id'>;
}) => {
if (apolloError?.networkError?.name === 'AbortError') {
return;
}
const errorMessage = message
? message
: apolloError
@@ -18,9 +18,7 @@ export class ApprovedAccessDomainExceptionFilter implements ExceptionFilter {
case ApprovedAccessDomainExceptionCode.APPROVED_ACCESS_DOMAIN_ALREADY_VALIDATED:
case ApprovedAccessDomainExceptionCode.APPROVED_ACCESS_DOMAIN_MUST_BE_A_COMPANY_DOMAIN:
throw new ForbiddenError(exception.message, {
extensions: {
userFriendlyMessage: exception.userFriendlyMessage,
},
userFriendlyMessage: exception.userFriendlyMessage,
});
default: {
const _exhaustiveCheck: never = exception.code;
@@ -30,6 +30,11 @@ export enum ErrorCode {
INTERNAL_SERVER_ERROR = 'INTERNAL_SERVER_ERROR',
}
type RestrictedGraphQLErrorExtensions = {
userFriendlyMessage?: string;
subCode?: string;
};
export class BaseGraphQLError extends GraphQLError {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
public extensions: Record<string, any>;
@@ -110,7 +115,7 @@ export class ValidationError extends BaseGraphQLError {
export class AuthenticationError extends BaseGraphQLError {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
constructor(message: string, extensions?: Record<string, any>) {
constructor(message: string, extensions?: RestrictedGraphQLErrorExtensions) {
super(message, ErrorCode.UNAUTHENTICATED, extensions);
Object.defineProperty(this, 'name', { value: 'AuthenticationError' });
@@ -119,7 +124,7 @@ export class AuthenticationError extends BaseGraphQLError {
export class ForbiddenError extends BaseGraphQLError {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
constructor(message: string, extensions?: Record<string, any>) {
constructor(message: string, extensions?: RestrictedGraphQLErrorExtensions) {
super(message, ErrorCode.FORBIDDEN, extensions);
Object.defineProperty(this, 'name', { value: 'ForbiddenError' });
@@ -151,7 +156,7 @@ export class PersistedQueryNotSupportedError extends BaseGraphQLError {
export class UserInputError extends BaseGraphQLError {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
constructor(message: string, extensions?: Record<string, any>) {
constructor(message: string, extensions?: RestrictedGraphQLErrorExtensions) {
super(message, ErrorCode.BAD_USER_INPUT, extensions);
Object.defineProperty(this, 'name', { value: 'UserInputError' });
@@ -160,7 +165,7 @@ export class UserInputError extends BaseGraphQLError {
export class NotFoundError extends BaseGraphQLError {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
constructor(message: string, extensions?: Record<string, any>) {
constructor(message: string, extensions?: RestrictedGraphQLErrorExtensions) {
super(message, ErrorCode.NOT_FOUND, extensions);
Object.defineProperty(this, 'name', { value: 'NotFoundError' });
@@ -177,7 +182,7 @@ export class MethodNotAllowedError extends BaseGraphQLError {
export class ConflictError extends BaseGraphQLError {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
constructor(message: string, extensions?: Record<string, any>) {
constructor(message: string, extensions?: RestrictedGraphQLErrorExtensions) {
super(message, ErrorCode.CONFLICT, extensions);
Object.defineProperty(this, 'name', { value: 'ConflictError' });
@@ -20,15 +20,11 @@ export const handleWorkflowTriggerException = (
case WorkflowTriggerExceptionCode.INVALID_WORKFLOW_STATUS:
case WorkflowTriggerExceptionCode.FORBIDDEN:
throw new UserInputError(exception.message, {
extensions: {
userFriendlyMessage: exception.userFriendlyMessage,
},
userFriendlyMessage: exception.userFriendlyMessage,
});
case WorkflowTriggerExceptionCode.NOT_FOUND:
throw new NotFoundError(exception.message, {
extensions: {
userFriendlyMessage: exception.userFriendlyMessage,
},
userFriendlyMessage: exception.userFriendlyMessage,
});
case WorkflowTriggerExceptionCode.INTERNAL_ERROR:
throw exception;