diff --git a/packages/twenty-front/src/modules/error-handler/components/PromiseRejectionEffect.tsx b/packages/twenty-front/src/modules/error-handler/components/PromiseRejectionEffect.tsx index 4f4e7c6a7e5..d8f42bebf55 100644 --- a/packages/twenty-front/src/modules/error-handler/components/PromiseRejectionEffect.tsx +++ b/packages/twenty-front/src/modules/error-handler/components/PromiseRejectionEffect.tsx @@ -50,19 +50,38 @@ export const PromiseRejectionEffect = () => { ); } - try { - const { captureException } = await import('@sentry/react'); - captureException(error, (scope) => { - scope.setExtras({ mechanism: 'onUnhandle' }); + if (isAbortError) { + return; + } - const fingerprint = hasErrorCode(error) ? error.code : error.message; - scope.setFingerprint([fingerprint]); - error.name = error.message; - return scope; + try { + const { captureException, captureMessage } = await import('@sentry/react'); + + if (error instanceof Error) { + captureException(error, (scope) => { + scope.setExtras({ mechanism: 'onUnhandledRejection' }); + + const fingerprint = hasErrorCode(error) + ? error.code + : error.message; + scope.setFingerprint([fingerprint]); + + return scope; + }); + + return; + } + + captureMessage('Unhandled promise rejection with non-error reason', { + level: 'warning', + extra: { + mechanism: 'onUnhandledRejection', + reasonType: typeof error, + }, }); } catch (sentryError) { // oxlint-disable-next-line no-console - console.error('Failed to capture exception with Sentry:', sentryError); + console.warn('Failed to capture exception with Sentry:', sentryError); } }, [enqueueErrorSnackBar], diff --git a/packages/twenty-front/src/modules/error-handler/components/SentryInitEffect.tsx b/packages/twenty-front/src/modules/error-handler/components/SentryInitEffect.tsx index f90cabcecbc..83518bc2d58 100644 --- a/packages/twenty-front/src/modules/error-handler/components/SentryInitEffect.tsx +++ b/packages/twenty-front/src/modules/error-handler/components/SentryInitEffect.tsx @@ -59,7 +59,7 @@ export const SentryInitEffect = () => { setIsSentryInitialized(true); } catch (error) { // oxlint-disable-next-line no-console - console.error('Failed to initialize Sentry:', error); + console.warn('Failed to initialize Sentry:', error); } finally { setIsSentryInitializing(false); } @@ -83,7 +83,7 @@ export const SentryInitEffect = () => { setIsSentryUserDefined(true); } catch (error) { // oxlint-disable-next-line no-console - console.error('Failed to set Sentry user:', error); + console.warn('Failed to set Sentry user:', error); } } else if (!isDefined(currentUser) && isSentryInitialized) { try { @@ -91,7 +91,7 @@ export const SentryInitEffect = () => { setUser(null); } catch (error) { // oxlint-disable-next-line no-console - console.error('Failed to clear Sentry user:', error); + console.warn('Failed to clear Sentry user:', error); } } }; diff --git a/packages/twenty-front/src/modules/object-record/object-options-dropdown/hooks/useObjectOptionsForBoard.ts b/packages/twenty-front/src/modules/object-record/object-options-dropdown/hooks/useObjectOptionsForBoard.ts index 442f1fc2d6c..272289b5a3a 100644 --- a/packages/twenty-front/src/modules/object-record/object-options-dropdown/hooks/useObjectOptionsForBoard.ts +++ b/packages/twenty-front/src/modules/object-record/object-options-dropdown/hooks/useObjectOptionsForBoard.ts @@ -114,7 +114,14 @@ export const useObjectOptionsForBoard = ({ updatedRecordField.fieldMetadataItemId, ); - draftRecordIndexFieldDefinitions[indexToModify].position = + const recordIndexFieldDefinitionToModify = + draftRecordIndexFieldDefinitions[indexToModify]; + + if (!isDefined(recordIndexFieldDefinitionToModify)) { + return; + } + + recordIndexFieldDefinitionToModify.position = updatedRecordField.position; }, ); @@ -222,7 +229,14 @@ export const useObjectOptionsForBoard = ({ updatedRecordField.fieldMetadataItemId, ); - draftRecordIndexFieldDefinitions[indexToModify].isVisible = + const recordIndexFieldDefinitionToModify = + draftRecordIndexFieldDefinitions[indexToModify]; + + if (!isDefined(recordIndexFieldDefinitionToModify)) { + return; + } + + recordIndexFieldDefinitionToModify.isVisible = shouldShowFieldMetadataItem; }, );