import { type ErrorLike } from '@apollo/client'; import { CombinedGraphQLErrors } from '@apollo/client/errors'; import { type MessageDescriptor } from '@lingui/core'; import { t } from '@lingui/core/macro'; import { type Nullable } from 'twenty-shared/types'; import { isDefined } from 'twenty-shared/utils'; export const getErrorMessageFromApolloError = (error: ErrorLike): string => { if (!CombinedGraphQLErrors.is(error)) { return error.message ?? t`An error occurred.`; } const userFriendlyMessage = error.errors?.[0]?.extensions ?.userFriendlyMessage as Nullable; if (!isDefined(userFriendlyMessage)) { return t`An error occurred.`; } if (typeof userFriendlyMessage === 'object' && 'id' in userFriendlyMessage) { return t(userFriendlyMessage); } return userFriendlyMessage; };