Enqueue a snack bar on merge preview errors (#19465)
Fixes https://github.com/twentyhq/twenty/issues/19312 <img width="400" height="500" alt="Capture d’écran 2026-04-08 à 18 17 57" src="https://github.com/user-attachments/assets/41ac28b2-0208-47b4-bd85-f803c524330a" />
This commit is contained in:
@@ -6,8 +6,8 @@ import { IsMinimalMetadataReadyEffect } from '@/metadata-store/effect-components
|
||||
|
||||
import { GotoHotkeysEffectsProvider } from '@/app/effect-components/GotoHotkeysEffectsProvider';
|
||||
import { PageChangeEffect } from '@/app/effect-components/PageChangeEffect';
|
||||
import { SignOutOnOtherTabSignOutEffect } from '@/auth/effect-components/SignOutOnOtherTabSignOutEffect';
|
||||
import { AuthProvider } from '@/auth/components/AuthProvider';
|
||||
import { SignOutOnOtherTabSignOutEffect } from '@/auth/effect-components/SignOutOnOtherTabSignOutEffect';
|
||||
import { CaptchaProvider } from '@/captcha/components/CaptchaProvider';
|
||||
import { ClientConfigProvider } from '@/client-config/components/ClientConfigProvider';
|
||||
import { ClientConfigProviderEffect } from '@/client-config/components/ClientConfigProviderEffect';
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { useCallback, useState } from 'react';
|
||||
|
||||
import { dispatchObjectRecordOperationBrowserEvent } from '@/browser-event/utils/dispatchObjectRecordOperationBrowserEvent';
|
||||
import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient';
|
||||
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||
import { useGenerateDepthRecordGqlFieldsFromObject } from '@/object-record/graphql/record-gql-fields/hooks/useGenerateDepthRecordGqlFieldsFromObject';
|
||||
@@ -8,10 +9,9 @@ import { useFindOneRecordQuery } from '@/object-record/hooks/useFindOneRecordQue
|
||||
import { useMergeManyRecordsMutation } from '@/object-record/hooks/useMergeManyRecordsMutation';
|
||||
import { useRefetchAggregateQueries } from '@/object-record/hooks/useRefetchAggregateQueries';
|
||||
import { type ObjectRecord } from '@/object-record/types/ObjectRecord';
|
||||
import { dispatchObjectRecordOperationBrowserEvent } from '@/browser-event/utils/dispatchObjectRecordOperationBrowserEvent';
|
||||
import { getMergeManyRecordsMutationResponseField } from '@/object-record/utils/getMergeManyRecordsMutationResponseField';
|
||||
import { getOperationName } from '~/utils/getOperationName';
|
||||
import { type RecordGqlOperationGqlRecordFields } from 'twenty-shared/types';
|
||||
import { getOperationName } from '~/utils/getOperationName';
|
||||
|
||||
export type MergeManySettings = {
|
||||
conflictPriorityIndex: number;
|
||||
@@ -88,7 +88,6 @@ export const useMergeManyRecords = <
|
||||
// Prevent cache updates during dry run to avoid overwriting original record data
|
||||
...(preview && {
|
||||
fetchPolicy: 'no-cache',
|
||||
errorPolicy: 'ignore',
|
||||
}),
|
||||
refetchQueries: [
|
||||
getOperationName(findOneRecordQuery) ?? '',
|
||||
|
||||
+11
-4
@@ -1,12 +1,14 @@
|
||||
import { getRecordFromRecordNode } from '@/object-record/cache/utils/getRecordFromRecordNode';
|
||||
import { useMergeManyRecords } from '@/object-record/hooks/useMergeManyRecords';
|
||||
import { useMergeRecordsSelectedRecords } from '@/object-record/record-merge/hooks/useMergeRecordsSelectedRecords';
|
||||
import { useUpsertRecordsInStore } from '@/object-record/record-store/hooks/useUpsertRecordsInStore';
|
||||
import { type ObjectRecord } from '@/object-record/types/ObjectRecord';
|
||||
import { useEffect, useState } from 'react';
|
||||
import { isMergeInProgressState } from '@/object-record/record-merge/states/mergeInProgressState';
|
||||
import { mergeSettingsState } from '@/object-record/record-merge/states/mergeSettingsState';
|
||||
import { useUpsertRecordsInStore } from '@/object-record/record-store/hooks/useUpsertRecordsInStore';
|
||||
import { type ObjectRecord } from '@/object-record/types/ObjectRecord';
|
||||
import { useSnackBar } from '@/ui/feedback/snack-bar-manager/hooks/useSnackBar';
|
||||
import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue';
|
||||
import { type ErrorLike } from '@apollo/client';
|
||||
import { useEffect, useState } from 'react';
|
||||
|
||||
type UseMergePreviewProps = {
|
||||
objectNameSingular: string;
|
||||
@@ -30,6 +32,7 @@ export const usePerformMergePreview = ({
|
||||
const { selectedRecords } = useMergeRecordsSelectedRecords();
|
||||
|
||||
const { upsertRecordsInStore } = useUpsertRecordsInStore();
|
||||
const { enqueueErrorSnackBar } = useSnackBar();
|
||||
|
||||
useEffect(() => {
|
||||
const fetchPreview = async () => {
|
||||
@@ -60,8 +63,11 @@ export const usePerformMergePreview = ({
|
||||
|
||||
setMergePreviewRecord(transformPreviewRecord);
|
||||
upsertRecordsInStore({ partialRecords: [transformPreviewRecord] });
|
||||
} catch {
|
||||
} catch (error) {
|
||||
setMergePreviewRecord(null);
|
||||
enqueueErrorSnackBar({
|
||||
apolloError: error as ErrorLike,
|
||||
});
|
||||
} finally {
|
||||
setIsGeneratingPreview(false);
|
||||
setIsInitialized(true);
|
||||
@@ -79,6 +85,7 @@ export const usePerformMergePreview = ({
|
||||
mergeManyRecords,
|
||||
upsertRecordsInStore,
|
||||
isInitialized,
|
||||
enqueueErrorSnackBar,
|
||||
]);
|
||||
|
||||
return {
|
||||
|
||||
Reference in New Issue
Block a user