From 87f665a3731204e505326b5845ec9a8674efd748 Mon Sep 17 00:00:00 2001 From: Thomas Trompette Date: Thu, 10 Oct 2024 14:35:09 +0200 Subject: [PATCH] Rename utils --- .../utils/isObjectMetadataReadOnly.ts | 8 ++++++++ .../object-metadata/utils/isReadOnlyObject.ts | 8 -------- ...ject.ts => isWorkflowSubObjectMetadata.ts} | 4 +++- .../record-field/hooks/useIsFieldReadOnly.ts | 9 ++------- .../utils/isFieldMetadataReadOnly.ts | 19 +++++++++++++++++++ .../isFieldReadonlyFromObjectMetadataName.ts | 17 ----------------- .../components/RecordIndexPageHeader.tsx | 4 ++-- .../RecordDetailRelationRecordsListItem.tsx | 7 ++----- .../RecordDetailRelationSection.tsx | 7 ++----- .../RecordTableEmptyStateDisplay.tsx | 4 ++-- .../components/RecordTableHeaderCell.tsx | 4 ++-- 11 files changed, 42 insertions(+), 49 deletions(-) create mode 100644 packages/twenty-front/src/modules/object-metadata/utils/isObjectMetadataReadOnly.ts delete mode 100644 packages/twenty-front/src/modules/object-metadata/utils/isReadOnlyObject.ts rename packages/twenty-front/src/modules/object-metadata/utils/{isWorkflowSubObject.ts => isWorkflowSubObjectMetadata.ts} (72%) create mode 100644 packages/twenty-front/src/modules/object-record/record-field/utils/isFieldMetadataReadOnly.ts delete mode 100644 packages/twenty-front/src/modules/object-record/record-field/utils/isFieldReadonlyFromObjectMetadataName.ts diff --git a/packages/twenty-front/src/modules/object-metadata/utils/isObjectMetadataReadOnly.ts b/packages/twenty-front/src/modules/object-metadata/utils/isObjectMetadataReadOnly.ts new file mode 100644 index 000000000000..c6455e009c9d --- /dev/null +++ b/packages/twenty-front/src/modules/object-metadata/utils/isObjectMetadataReadOnly.ts @@ -0,0 +1,8 @@ +import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { isWorkflowSubObjectMetadata } from '@/object-metadata/utils/isWorkflowSubObjectMetadata'; + +export const isObjectMetadataReadOnly = ( + objectMetadataItem: Pick, +) => + objectMetadataItem.isRemote || + isWorkflowSubObjectMetadata(objectMetadataItem.nameSingular); diff --git a/packages/twenty-front/src/modules/object-metadata/utils/isReadOnlyObject.ts b/packages/twenty-front/src/modules/object-metadata/utils/isReadOnlyObject.ts deleted file mode 100644 index 6d57e85f384b..000000000000 --- a/packages/twenty-front/src/modules/object-metadata/utils/isReadOnlyObject.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; -import { isWorkflowSubObject } from '@/object-metadata/utils/isWorkflowSubObject'; - -export const isReadOnlyObject = ( - objectMetadataItem: Pick, -) => - objectMetadataItem.isRemote || - isWorkflowSubObject(objectMetadataItem.nameSingular); diff --git a/packages/twenty-front/src/modules/object-metadata/utils/isWorkflowSubObject.ts b/packages/twenty-front/src/modules/object-metadata/utils/isWorkflowSubObjectMetadata.ts similarity index 72% rename from packages/twenty-front/src/modules/object-metadata/utils/isWorkflowSubObject.ts rename to packages/twenty-front/src/modules/object-metadata/utils/isWorkflowSubObjectMetadata.ts index a02d78f3e635..1ad6c0cbb290 100644 --- a/packages/twenty-front/src/modules/object-metadata/utils/isWorkflowSubObject.ts +++ b/packages/twenty-front/src/modules/object-metadata/utils/isWorkflowSubObjectMetadata.ts @@ -1,5 +1,7 @@ import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; -export const isWorkflowSubObject = (objectMetadataNameSingular?: string) => +export const isWorkflowSubObjectMetadata = ( + objectMetadataNameSingular?: string, +) => objectMetadataNameSingular === CoreObjectNameSingular.WorkflowVersion || objectMetadataNameSingular === CoreObjectNameSingular.WorkflowRun; diff --git a/packages/twenty-front/src/modules/object-record/record-field/hooks/useIsFieldReadOnly.ts b/packages/twenty-front/src/modules/object-record/record-field/hooks/useIsFieldReadOnly.ts index ba8dedd7c0a0..48bb034244ea 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/hooks/useIsFieldReadOnly.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/hooks/useIsFieldReadOnly.ts @@ -2,8 +2,8 @@ import { useContext } from 'react'; import { isFieldActor } from '@/object-record/record-field/types/guards/isFieldActor'; import { isFieldRichText } from '@/object-record/record-field/types/guards/isFieldRichText'; -import { isFieldReadonlyFromObjectMetadataName } from '@/object-record/record-field/utils/isFieldReadonlyFromObjectMetadataName'; import { FieldContext } from '../contexts/FieldContext'; +import { isFieldMetadataReadOnly } from '../utils/isFieldMetadataReadOnly'; export const useIsFieldReadOnly = () => { const { fieldDefinition } = useContext(FieldContext); @@ -11,13 +11,8 @@ export const useIsFieldReadOnly = () => { const { metadata } = fieldDefinition; return ( - metadata.fieldName === 'noteTargets' || - metadata.fieldName === 'taskTargets' || isFieldActor(fieldDefinition) || isFieldRichText(fieldDefinition) || - isFieldReadonlyFromObjectMetadataName( - metadata.fieldName, - metadata.objectMetadataNameSingular, - ) + isFieldMetadataReadOnly(metadata) ); }; diff --git a/packages/twenty-front/src/modules/object-record/record-field/utils/isFieldMetadataReadOnly.ts b/packages/twenty-front/src/modules/object-record/record-field/utils/isFieldMetadataReadOnly.ts new file mode 100644 index 000000000000..a24ed100352d --- /dev/null +++ b/packages/twenty-front/src/modules/object-record/record-field/utils/isFieldMetadataReadOnly.ts @@ -0,0 +1,19 @@ +import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; +import { isWorkflowSubObjectMetadata } from '@/object-metadata/utils/isWorkflowSubObjectMetadata'; +import { FieldMetadata } from '@/object-record/record-field/types/FieldMetadata'; + +export const isFieldMetadataReadOnly = (fieldMetadata: FieldMetadata) => { + if ( + fieldMetadata.fieldName === 'noteTargets' || + fieldMetadata.fieldName === 'taskTargets' + ) { + return true; + } + + return ( + isWorkflowSubObjectMetadata(fieldMetadata.objectMetadataNameSingular) || + (fieldMetadata.objectMetadataNameSingular === + CoreObjectNameSingular.Workflow && + fieldMetadata.fieldName !== 'name') + ); +}; diff --git a/packages/twenty-front/src/modules/object-record/record-field/utils/isFieldReadonlyFromObjectMetadataName.ts b/packages/twenty-front/src/modules/object-record/record-field/utils/isFieldReadonlyFromObjectMetadataName.ts deleted file mode 100644 index ca208cbccf70..000000000000 --- a/packages/twenty-front/src/modules/object-record/record-field/utils/isFieldReadonlyFromObjectMetadataName.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; -import { isWorkflowSubObject } from '@/object-metadata/utils/isWorkflowSubObject'; - -export const isFieldReadonlyFromObjectMetadataName = ( - fieldName: string, - objectMetadataNameSingular?: string, -) => { - if (!objectMetadataNameSingular) { - return false; - } - - return ( - isWorkflowSubObject(objectMetadataNameSingular) || - (objectMetadataNameSingular === CoreObjectNameSingular.Workflow && - fieldName !== 'name') - ); -}; diff --git a/packages/twenty-front/src/modules/object-record/record-index/components/RecordIndexPageHeader.tsx b/packages/twenty-front/src/modules/object-record/record-index/components/RecordIndexPageHeader.tsx index bb0f3cf01168..f167ad13f19d 100644 --- a/packages/twenty-front/src/modules/object-record/record-index/components/RecordIndexPageHeader.tsx +++ b/packages/twenty-front/src/modules/object-record/record-index/components/RecordIndexPageHeader.tsx @@ -2,7 +2,7 @@ import { useRecoilValue } from 'recoil'; import { useIcons } from 'twenty-ui'; import { useFilteredObjectMetadataItems } from '@/object-metadata/hooks/useFilteredObjectMetadataItems'; -import { isReadOnlyObject } from '@/object-metadata/utils/isReadOnlyObject'; +import { isObjectMetadataReadOnly } from '@/object-metadata/utils/isObjectMetadataReadOnly'; import { RecordIndexPageKanbanAddButton } from '@/object-record/record-index/components/RecordIndexPageKanbanAddButton'; import { RecordIndexRootPropsContext } from '@/object-record/record-index/contexts/RecordIndexRootPropsContext'; import { recordIndexViewTypeState } from '@/object-record/record-index/states/recordIndexViewTypeState'; @@ -32,7 +32,7 @@ export const RecordIndexPageHeader = () => { const recordIndexViewType = useRecoilValue(recordIndexViewTypeState); const shouldDisplayAddButton = objectMetadataItem - ? !isReadOnlyObject(objectMetadataItem) + ? !isObjectMetadataReadOnly(objectMetadataItem) : false; const isTable = recordIndexViewType === ViewType.Table; diff --git a/packages/twenty-front/src/modules/object-record/record-show/record-detail-section/components/RecordDetailRelationRecordsListItem.tsx b/packages/twenty-front/src/modules/object-record/record-show/record-detail-section/components/RecordDetailRelationRecordsListItem.tsx index 8ced0500d7e9..eefeb3540878 100644 --- a/packages/twenty-front/src/modules/object-record/record-show/record-detail-section/components/RecordDetailRelationRecordsListItem.tsx +++ b/packages/twenty-front/src/modules/object-record/record-show/record-detail-section/components/RecordDetailRelationRecordsListItem.tsx @@ -24,7 +24,7 @@ import { } from '@/object-record/record-field/contexts/FieldContext'; import { usePersistField } from '@/object-record/record-field/hooks/usePersistField'; import { FieldRelationMetadata } from '@/object-record/record-field/types/FieldMetadata'; -import { isFieldReadonlyFromObjectMetadataName } from '@/object-record/record-field/utils/isFieldReadonlyFromObjectMetadataName'; +import { isFieldMetadataReadOnly } from '@/object-record/record-field/utils/isFieldMetadataReadOnly'; import { RecordInlineCell } from '@/object-record/record-inline-cell/components/RecordInlineCell'; import { PropertyBox } from '@/object-record/record-inline-cell/property-box/components/PropertyBox'; import { InlineCellHotkeyScope } from '@/object-record/record-inline-cell/types/InlineCellHotkeyScope'; @@ -181,10 +181,7 @@ export const RecordDetailRelationRecordsListItem = ({ [isExpanded], ); - const canEdit = !isFieldReadonlyFromObjectMetadataName( - fieldDefinition.metadata.fieldName, - fieldDefinition.metadata.objectMetadataNameSingular, - ); + const canEdit = !isFieldMetadataReadOnly(fieldDefinition.metadata); return ( <> diff --git a/packages/twenty-front/src/modules/object-record/record-show/record-detail-section/components/RecordDetailRelationSection.tsx b/packages/twenty-front/src/modules/object-record/record-show/record-detail-section/components/RecordDetailRelationSection.tsx index f9e57f5e4325..81e0c37c76e7 100644 --- a/packages/twenty-front/src/modules/object-record/record-show/record-detail-section/components/RecordDetailRelationSection.tsx +++ b/packages/twenty-front/src/modules/object-record/record-show/record-detail-section/components/RecordDetailRelationSection.tsx @@ -12,7 +12,7 @@ import { usePersistField } from '@/object-record/record-field/hooks/usePersistFi import { RelationFromManyFieldInputMultiRecordsEffect } from '@/object-record/record-field/meta-types/input/components/RelationFromManyFieldInputMultiRecordsEffect'; import { useUpdateRelationFromManyFieldInput } from '@/object-record/record-field/meta-types/input/hooks/useUpdateRelationFromManyFieldInput'; import { FieldRelationMetadata } from '@/object-record/record-field/types/FieldMetadata'; -import { isFieldReadonlyFromObjectMetadataName } from '@/object-record/record-field/utils/isFieldReadonlyFromObjectMetadataName'; +import { isFieldMetadataReadOnly } from '@/object-record/record-field/utils/isFieldMetadataReadOnly'; import { RecordDetailRelationRecordsList } from '@/object-record/record-show/record-detail-section/components/RecordDetailRelationRecordsList'; import { RecordDetailSection } from '@/object-record/record-show/record-detail-section/components/RecordDetailSection'; import { RecordDetailSectionHeader } from '@/object-record/record-show/record-detail-section/components/RecordDetailSectionHeader'; @@ -159,10 +159,7 @@ export const RecordDetailRelationSection = ({ recordId, }); - const canEdit = !isFieldReadonlyFromObjectMetadataName( - fieldDefinition.metadata.fieldName, - fieldDefinition.metadata.objectMetadataNameSingular, - ); + const canEdit = !isFieldMetadataReadOnly(fieldDefinition.metadata); if (loading) return null; diff --git a/packages/twenty-front/src/modules/object-record/record-table/empty-state/components/RecordTableEmptyStateDisplay.tsx b/packages/twenty-front/src/modules/object-record/record-table/empty-state/components/RecordTableEmptyStateDisplay.tsx index 1dcb489a79ea..c5f120a6de63 100644 --- a/packages/twenty-front/src/modules/object-record/record-table/empty-state/components/RecordTableEmptyStateDisplay.tsx +++ b/packages/twenty-front/src/modules/object-record/record-table/empty-state/components/RecordTableEmptyStateDisplay.tsx @@ -8,7 +8,7 @@ import { AnimatedPlaceholderEmptyTitle, } from '@/ui/layout/animated-placeholder/components/EmptyPlaceholderStyled'; -import { isReadOnlyObject } from '@/object-metadata/utils/isReadOnlyObject'; +import { isObjectMetadataReadOnly } from '@/object-metadata/utils/isObjectMetadataReadOnly'; import { RecordTableContext } from '@/object-record/record-table/contexts/RecordTableContext'; import { Button } from '@/ui/input/button/components/Button'; import { useContext } from 'react'; @@ -32,7 +32,7 @@ export const RecordTableEmptyStateDisplay = ({ title, }: RecordTableEmptyStateDisplayProps) => { const { objectMetadataItem } = useContext(RecordTableContext); - const isReadOnly = isReadOnlyObject(objectMetadataItem); + const isReadOnly = isObjectMetadataReadOnly(objectMetadataItem); return ( diff --git a/packages/twenty-front/src/modules/object-record/record-table/record-table-header/components/RecordTableHeaderCell.tsx b/packages/twenty-front/src/modules/object-record/record-table/record-table-header/components/RecordTableHeaderCell.tsx index e5d966179094..ff3fc98580ee 100644 --- a/packages/twenty-front/src/modules/object-record/record-table/record-table-header/components/RecordTableHeaderCell.tsx +++ b/packages/twenty-front/src/modules/object-record/record-table/record-table-header/components/RecordTableHeaderCell.tsx @@ -4,7 +4,7 @@ import { useRecoilCallback, useRecoilState, useRecoilValue } from 'recoil'; import { IconPlus } from 'twenty-ui'; import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem'; -import { isReadOnlyObject } from '@/object-metadata/utils/isReadOnlyObject'; +import { isObjectMetadataReadOnly } from '@/object-metadata/utils/isObjectMetadataReadOnly'; import { FieldMetadata } from '@/object-record/record-field/types/FieldMetadata'; import { useRecordTableStates } from '@/object-record/record-table/hooks/internal/useRecordTableStates'; import { useCreateNewTableRecord } from '@/object-record/record-table/hooks/useCreateNewTableRecords'; @@ -198,7 +198,7 @@ export const RecordTableHeaderCell = ({ createNewTableRecord(); }; - const isReadOnly = isReadOnlyObject(objectMetadataItem); + const isReadOnly = isObjectMetadataReadOnly(objectMetadataItem); return (