From 6f65fa295b8006267b6421e36ecc3478c0024361 Mon Sep 17 00:00:00 2001 From: Lucas Bordeau Date: Thu, 13 Jun 2024 12:43:13 +0200 Subject: [PATCH] Added RecordValue use-context-selector to settings field's logic (#5851) In the settings part of the app, where display fields are used as in table cell and board cards, we didn't have the new context selector logic implemented, due to the recent performance optimization. --- .../SettingsDataModelSetFieldValueEffect.tsx | 6 +- .../data-model/SettingsObjectFieldEdit.tsx | 121 +++++++++--------- .../SettingsObjectNewFieldStep2.tsx | 101 ++++++++------- 3 files changed, 119 insertions(+), 109 deletions(-) diff --git a/packages/twenty-front/src/modules/settings/data-model/fields/preview/components/SettingsDataModelSetFieldValueEffect.tsx b/packages/twenty-front/src/modules/settings/data-model/fields/preview/components/SettingsDataModelSetFieldValueEffect.tsx index d6d23bf77..3d5d3285d 100644 --- a/packages/twenty-front/src/modules/settings/data-model/fields/preview/components/SettingsDataModelSetFieldValueEffect.tsx +++ b/packages/twenty-front/src/modules/settings/data-model/fields/preview/components/SettingsDataModelSetFieldValueEffect.tsx @@ -1,6 +1,7 @@ import { useEffect } from 'react'; import { useSetRecoilState } from 'recoil'; +import { useSetRecordFieldValue } from '@/object-record/record-store/contexts/RecordFieldValueSelectorContext'; import { recordStoreFamilySelector } from '@/object-record/record-store/states/selectors/recordStoreFamilySelector'; type SettingsDataModelSetFieldValueEffectProps = { @@ -21,9 +22,12 @@ export const SettingsDataModelSetFieldValueEffect = ({ }), ); + const setRecordFieldValue = useSetRecordFieldValue(); + useEffect(() => { setFieldValue(value); - }, [value, setFieldValue]); + setRecordFieldValue(entityId, fieldName, value); + }, [value, setFieldValue, setRecordFieldValue, entityId, fieldName]); return null; }; diff --git a/packages/twenty-front/src/pages/settings/data-model/SettingsObjectFieldEdit.tsx b/packages/twenty-front/src/pages/settings/data-model/SettingsObjectFieldEdit.tsx index d1c2fad1d..bb2ac5e63 100644 --- a/packages/twenty-front/src/pages/settings/data-model/SettingsObjectFieldEdit.tsx +++ b/packages/twenty-front/src/pages/settings/data-model/SettingsObjectFieldEdit.tsx @@ -18,6 +18,7 @@ import { formatFieldMetadataItemInput } from '@/object-metadata/utils/formatFiel import { getFieldSlug } from '@/object-metadata/utils/getFieldSlug'; import { isLabelIdentifierField } from '@/object-metadata/utils/isLabelIdentifierField'; import { useFindManyRecordsQuery } from '@/object-record/hooks/useFindManyRecordsQuery'; +import { RecordFieldValueSelectorContextProvider } from '@/object-record/record-store/contexts/RecordFieldValueSelectorContext'; import { SaveAndCancelButtons } from '@/settings/components/SaveAndCancelButtons/SaveAndCancelButtons'; import { SettingsHeaderContainer } from '@/settings/components/SettingsHeaderContainer'; import { SettingsPageContainer } from '@/settings/components/SettingsPageContainer'; @@ -169,70 +170,72 @@ export const SettingsObjectFieldEdit = () => { canPersistFieldMetadataItemUpdate(activeMetadataField); return ( - // eslint-disable-next-line react/jsx-props-no-spreading - - - - - - {shouldDisplaySaveAndCancel && ( - navigate(`/settings/objects/${objectSlug}`)} - onSave={formConfig.handleSubmit(handleSave)} + + {/* eslint-disable-next-line react/jsx-props-no-spreading */} + + + + + - )} - -
- - -
-
- - - -
- {!isLabelIdentifier && ( + {shouldDisplaySaveAndCancel && ( + navigate(`/settings/objects/${objectSlug}`)} + onSave={formConfig.handleSubmit(handleSave)} + /> + )} +
-
- )} -
-
-
+
+ + + +
+ {!isLabelIdentifier && ( +
+ +
+ )} + + + + ); }; diff --git a/packages/twenty-front/src/pages/settings/data-model/SettingsObjectNewField/SettingsObjectNewFieldStep2.tsx b/packages/twenty-front/src/pages/settings/data-model/SettingsObjectNewField/SettingsObjectNewFieldStep2.tsx index 921c36605..da7fa13d2 100644 --- a/packages/twenty-front/src/pages/settings/data-model/SettingsObjectNewField/SettingsObjectNewFieldStep2.tsx +++ b/packages/twenty-front/src/pages/settings/data-model/SettingsObjectNewField/SettingsObjectNewFieldStep2.tsx @@ -13,6 +13,7 @@ import { useFieldMetadataItem } from '@/object-metadata/hooks/useFieldMetadataIt import { useFilteredObjectMetadataItems } from '@/object-metadata/hooks/useFilteredObjectMetadataItems'; import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; import { useFindManyRecords } from '@/object-record/hooks/useFindManyRecords'; +import { RecordFieldValueSelectorContextProvider } from '@/object-record/record-store/contexts/RecordFieldValueSelectorContext'; import { SaveAndCancelButtons } from '@/settings/components/SaveAndCancelButtons/SaveAndCancelButtons'; import { SettingsHeaderContainer } from '@/settings/components/SettingsHeaderContainer'; import { SettingsPageContainer } from '@/settings/components/SettingsPageContainer'; @@ -172,55 +173,57 @@ export const SettingsObjectNewFieldStep2 = () => { ).filter(isDefined); return ( - // eslint-disable-next-line react/jsx-props-no-spreading - - - - - - {!activeObjectMetadataItem.isRemote && ( - navigate(`/settings/objects/${objectSlug}`)} - onSave={formConfig.handleSubmit(handleSave)} + + {/* eslint-disable-next-line react/jsx-props-no-spreading */} + + + + + - )} - -
- - -
-
- - - -
-
-
-
+ {!activeObjectMetadataItem.isRemote && ( + navigate(`/settings/objects/${objectSlug}`)} + onSave={formConfig.handleSubmit(handleSave)} + /> + )} +
+
+ + +
+
+ + + +
+
+
+
+ ); };