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.
This commit is contained in:
Lucas Bordeau
2024-06-13 12:43:13 +02:00
committed by GitHub
parent b26fd00a40
commit 6f65fa295b
3 changed files with 119 additions and 109 deletions

View File

@ -1,6 +1,7 @@
import { useEffect } from 'react'; import { useEffect } from 'react';
import { useSetRecoilState } from 'recoil'; import { useSetRecoilState } from 'recoil';
import { useSetRecordFieldValue } from '@/object-record/record-store/contexts/RecordFieldValueSelectorContext';
import { recordStoreFamilySelector } from '@/object-record/record-store/states/selectors/recordStoreFamilySelector'; import { recordStoreFamilySelector } from '@/object-record/record-store/states/selectors/recordStoreFamilySelector';
type SettingsDataModelSetFieldValueEffectProps = { type SettingsDataModelSetFieldValueEffectProps = {
@ -21,9 +22,12 @@ export const SettingsDataModelSetFieldValueEffect = ({
}), }),
); );
const setRecordFieldValue = useSetRecordFieldValue();
useEffect(() => { useEffect(() => {
setFieldValue(value); setFieldValue(value);
}, [value, setFieldValue]); setRecordFieldValue(entityId, fieldName, value);
}, [value, setFieldValue, setRecordFieldValue, entityId, fieldName]);
return null; return null;
}; };

View File

@ -18,6 +18,7 @@ import { formatFieldMetadataItemInput } from '@/object-metadata/utils/formatFiel
import { getFieldSlug } from '@/object-metadata/utils/getFieldSlug'; import { getFieldSlug } from '@/object-metadata/utils/getFieldSlug';
import { isLabelIdentifierField } from '@/object-metadata/utils/isLabelIdentifierField'; import { isLabelIdentifierField } from '@/object-metadata/utils/isLabelIdentifierField';
import { useFindManyRecordsQuery } from '@/object-record/hooks/useFindManyRecordsQuery'; import { useFindManyRecordsQuery } from '@/object-record/hooks/useFindManyRecordsQuery';
import { RecordFieldValueSelectorContextProvider } from '@/object-record/record-store/contexts/RecordFieldValueSelectorContext';
import { SaveAndCancelButtons } from '@/settings/components/SaveAndCancelButtons/SaveAndCancelButtons'; import { SaveAndCancelButtons } from '@/settings/components/SaveAndCancelButtons/SaveAndCancelButtons';
import { SettingsHeaderContainer } from '@/settings/components/SettingsHeaderContainer'; import { SettingsHeaderContainer } from '@/settings/components/SettingsHeaderContainer';
import { SettingsPageContainer } from '@/settings/components/SettingsPageContainer'; import { SettingsPageContainer } from '@/settings/components/SettingsPageContainer';
@ -169,7 +170,8 @@ export const SettingsObjectFieldEdit = () => {
canPersistFieldMetadataItemUpdate(activeMetadataField); canPersistFieldMetadataItemUpdate(activeMetadataField);
return ( return (
// eslint-disable-next-line react/jsx-props-no-spreading <RecordFieldValueSelectorContextProvider>
{/* eslint-disable-next-line react/jsx-props-no-spreading */}
<FormProvider {...formConfig}> <FormProvider {...formConfig}>
<SubMenuTopBarContainer Icon={IconSettings} title="Settings"> <SubMenuTopBarContainer Icon={IconSettings} title="Settings">
<SettingsPageContainer> <SettingsPageContainer>
@ -234,5 +236,6 @@ export const SettingsObjectFieldEdit = () => {
</SettingsPageContainer> </SettingsPageContainer>
</SubMenuTopBarContainer> </SubMenuTopBarContainer>
</FormProvider> </FormProvider>
</RecordFieldValueSelectorContextProvider>
); );
}; };

View File

@ -13,6 +13,7 @@ import { useFieldMetadataItem } from '@/object-metadata/hooks/useFieldMetadataIt
import { useFilteredObjectMetadataItems } from '@/object-metadata/hooks/useFilteredObjectMetadataItems'; import { useFilteredObjectMetadataItems } from '@/object-metadata/hooks/useFilteredObjectMetadataItems';
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
import { useFindManyRecords } from '@/object-record/hooks/useFindManyRecords'; import { useFindManyRecords } from '@/object-record/hooks/useFindManyRecords';
import { RecordFieldValueSelectorContextProvider } from '@/object-record/record-store/contexts/RecordFieldValueSelectorContext';
import { SaveAndCancelButtons } from '@/settings/components/SaveAndCancelButtons/SaveAndCancelButtons'; import { SaveAndCancelButtons } from '@/settings/components/SaveAndCancelButtons/SaveAndCancelButtons';
import { SettingsHeaderContainer } from '@/settings/components/SettingsHeaderContainer'; import { SettingsHeaderContainer } from '@/settings/components/SettingsHeaderContainer';
import { SettingsPageContainer } from '@/settings/components/SettingsPageContainer'; import { SettingsPageContainer } from '@/settings/components/SettingsPageContainer';
@ -172,7 +173,8 @@ export const SettingsObjectNewFieldStep2 = () => {
).filter(isDefined); ).filter(isDefined);
return ( return (
// eslint-disable-next-line react/jsx-props-no-spreading <RecordFieldValueSelectorContextProvider>
{/* eslint-disable-next-line react/jsx-props-no-spreading */}
<FormProvider {...formConfig}> <FormProvider {...formConfig}>
<SubMenuTopBarContainer Icon={IconSettings} title="Settings"> <SubMenuTopBarContainer Icon={IconSettings} title="Settings">
<SettingsPageContainer> <SettingsPageContainer>
@ -222,5 +224,6 @@ export const SettingsObjectNewFieldStep2 = () => {
</SettingsPageContainer> </SettingsPageContainer>
</SubMenuTopBarContainer> </SubMenuTopBarContainer>
</FormProvider> </FormProvider>
</RecordFieldValueSelectorContextProvider>
); );
}; };