Refactor board field definitions to use record fields (#14165)
This PR removes board field definitions usage in favor of record fields, like we've already done on table with table columns. This PR also introduces a first step in the refactoring of the RecordIndexContext as a new way to store in-memory a normalized cache for some states used pretty much everywhere like field metadata items or field definition (for now but it will soon be removed). Since most of those states do not change if we don't modify the metadata, then we can safely store them in a context, which has the fastest access time in React. Co-authored-by: Charles Bochet <charles@twenty.com>
This commit is contained in:
+16
-1
@@ -11,6 +11,7 @@ import { type RecordFilterGroup } from '@/object-record/record-filter-group/type
|
||||
import { RecordFiltersComponentInstanceContext } from '@/object-record/record-filter/states/context/RecordFiltersComponentInstanceContext';
|
||||
import { type RecordFilter } from '@/object-record/record-filter/types/RecordFilter';
|
||||
import { RecordIndexContextProvider } from '@/object-record/record-index/contexts/RecordIndexContext';
|
||||
import { useRecordIndexFieldMetadataDerivedStates } from '@/object-record/record-index/hooks/useRecordIndexFieldMetadataDerivedStates';
|
||||
import { InputLabel } from '@/ui/input/components/InputLabel';
|
||||
import { WorkflowStepBody } from '@/workflow/workflow-steps/components/WorkflowStepBody';
|
||||
import { WorkflowFindRecordsFilters } from '@/workflow/workflow-steps/workflow-actions/find-records-action/components/WorkflowFindRecordsFilters';
|
||||
@@ -70,6 +71,7 @@ export const WorkflowEditActionFindRecords = ({
|
||||
filter: action.settings.input.filter as FindRecordsActionFilter,
|
||||
});
|
||||
const isFormDisabled = actionOptions.readonly;
|
||||
const instanceId = `workflow-edit-action-record-find-records-${action.id}-${formData.objectNameSingular}`;
|
||||
|
||||
const selectedObjectMetadataItem = activeNonSystemObjectMetadataItems.find(
|
||||
(item) => item.nameSingular === formData.objectNameSingular,
|
||||
@@ -80,6 +82,16 @@ export const WorkflowEditActionFindRecords = ({
|
||||
|
||||
const { objectPermissionsByObjectMetadataId } = useObjectPermissions();
|
||||
|
||||
const {
|
||||
fieldDefinitionByFieldMetadataItemId,
|
||||
fieldMetadataItemByFieldMetadataItemId,
|
||||
labelIdentifierFieldMetadataItem,
|
||||
recordFieldByFieldMetadataItemId,
|
||||
} = useRecordIndexFieldMetadataDerivedStates(
|
||||
selectedObjectMetadataItem,
|
||||
instanceId,
|
||||
);
|
||||
|
||||
const saveAction = useDebouncedCallback(
|
||||
async (formData: FindRecordsFormData) => {
|
||||
if (actionOptions.readonly === true) {
|
||||
@@ -118,7 +130,6 @@ export const WorkflowEditActionFindRecords = ({
|
||||
action,
|
||||
defaultTitle: 'Search Records',
|
||||
});
|
||||
const instanceId = `workflow-edit-action-record-find-records-${action.id}-${formData.objectNameSingular}`;
|
||||
|
||||
return (
|
||||
<>
|
||||
@@ -174,6 +185,10 @@ export const WorkflowEditActionFindRecords = ({
|
||||
objectMetadataItem: selectedObjectMetadataItem,
|
||||
recordIndexId: instanceId,
|
||||
objectPermissionsByObjectMetadataId,
|
||||
labelIdentifierFieldMetadataItem,
|
||||
recordFieldByFieldMetadataItemId,
|
||||
fieldDefinitionByFieldMetadataItemId,
|
||||
fieldMetadataItemByFieldMetadataItemId,
|
||||
}}
|
||||
>
|
||||
<RecordFilterGroupsComponentInstanceContext.Provider
|
||||
|
||||
Reference in New Issue
Block a user