mirror of
https://github.com/datahub-project/datahub.git
synced 2025-09-27 10:04:52 +00:00
41 lines
1.3 KiB
TypeScript
41 lines
1.3 KiB
TypeScript
import { ErrorResponse } from '@apollo/client/link/error';
|
|
import { message } from 'antd';
|
|
import { ErrorCodes } from './constants';
|
|
|
|
interface Props {
|
|
error: ErrorResponse;
|
|
defaultMessage: string;
|
|
permissionMessage?: string;
|
|
badRequestMessage?: string;
|
|
serverErrorMessage?: string;
|
|
}
|
|
|
|
export default function handleGraphQLError({
|
|
error,
|
|
defaultMessage,
|
|
permissionMessage = 'Unauthorized. Please contact your DataHub administrator.',
|
|
badRequestMessage,
|
|
serverErrorMessage,
|
|
}: Props) {
|
|
// destroy the default error message from errorLink in App.tsx
|
|
message.destroy();
|
|
const { graphQLErrors } = error;
|
|
if (graphQLErrors && graphQLErrors.length) {
|
|
const { extensions } = graphQLErrors[0];
|
|
const errorCode = extensions && (extensions.code as number);
|
|
if (errorCode === ErrorCodes.Forbidden) {
|
|
message.error(permissionMessage);
|
|
return;
|
|
}
|
|
if (errorCode === ErrorCodes.BadRequest && badRequestMessage) {
|
|
message.error(badRequestMessage);
|
|
return;
|
|
}
|
|
if (errorCode === ErrorCodes.ServerError && serverErrorMessage) {
|
|
message.error(serverErrorMessage);
|
|
return;
|
|
}
|
|
}
|
|
message.error(defaultMessage);
|
|
}
|