diff --git a/packages/twenty-front/src/modules/object-record/record-field/ui/meta-types/hooks/useAddSelectOption.ts b/packages/twenty-front/src/modules/object-record/record-field/ui/meta-types/hooks/useAddSelectOption.ts index d81bb191ba..b351d3c2b8 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/ui/meta-types/hooks/useAddSelectOption.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/ui/meta-types/hooks/useAddSelectOption.ts @@ -1,13 +1,14 @@ +import { useFieldMetadataItemById } from '@/object-metadata/hooks/useFieldMetadataItemById'; import { navigationMemorizedUrlState } from '@/ui/navigation/states/navigationMemorizedUrlState'; import { shouldNavigateBackToMemorizedUrlOnSaveState } from '@/ui/navigation/states/shouldNavigateBackToMemorizedUrlOnSaveState'; import { useSetAtomState } from '@/ui/utilities/state/jotai/hooks/useSetAtomState'; import { useCallback } from 'react'; -import { useParams } from 'react-router-dom'; import { SettingsPath } from 'twenty-shared/types'; import { useNavigateSettings } from '~/hooks/useNavigateSettings'; -export const useAddSelectOption = (fieldName: string) => { - const { objectNamePlural } = useParams(); +export const useAddSelectOption = (fieldMetadataId: string) => { + const { fieldMetadataItem, objectMetadataItem } = + useFieldMetadataItemById(fieldMetadataId); const navigateSettings = useNavigateSettings(); const setNavigationMemorizedUrl = useSetAtomState( navigationMemorizedUrlState, @@ -17,6 +18,9 @@ export const useAddSelectOption = (fieldName: string) => { shouldNavigateBackToMemorizedUrlOnSaveState, ); + const fieldName = fieldMetadataItem?.name; + const objectNamePlural = objectMetadataItem?.namePlural; + const addSelectOption = useCallback( (optionName: string) => { if (!fieldName || !objectNamePlural) return; diff --git a/packages/twenty-front/src/modules/object-record/record-field/ui/meta-types/hooks/useCanAddSelectOption.ts b/packages/twenty-front/src/modules/object-record/record-field/ui/meta-types/hooks/useCanAddSelectOption.ts index 83df7c5465..ff678ebe83 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/ui/meta-types/hooks/useCanAddSelectOption.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/ui/meta-types/hooks/useCanAddSelectOption.ts @@ -1,10 +1,11 @@ +import { useFieldMetadataItemById } from '@/object-metadata/hooks/useFieldMetadataItemById'; import { useHasPermissionFlag } from '@/settings/roles/hooks/useHasPermissionFlag'; import { isNonEmptyString } from '@sniptt/guards'; -import { useParams } from 'react-router-dom'; import { PermissionFlagType } from '~/generated-metadata/graphql'; -export const useCanAddSelectOption = (fieldName: string) => { - const { objectNamePlural } = useParams(); +export const useCanAddSelectOption = (fieldMetadataId: string) => { + const { fieldMetadataItem, objectMetadataItem } = + useFieldMetadataItemById(fieldMetadataId); const userHasPermissionToEditDataModel = useHasPermissionFlag( PermissionFlagType.DATA_MODEL, @@ -12,8 +13,8 @@ export const useCanAddSelectOption = (fieldName: string) => { const canAddSelectOption = userHasPermissionToEditDataModel && - isNonEmptyString(fieldName) && - isNonEmptyString(objectNamePlural); + isNonEmptyString(fieldMetadataItem?.name) && + isNonEmptyString(objectMetadataItem?.namePlural); return { canAddSelectOption }; }; diff --git a/packages/twenty-front/src/modules/object-record/record-field/ui/meta-types/input/components/MultiSelectFieldInput.tsx b/packages/twenty-front/src/modules/object-record/record-field/ui/meta-types/input/components/MultiSelectFieldInput.tsx index 2ebd83940a..4b229656cf 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/ui/meta-types/input/components/MultiSelectFieldInput.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/ui/meta-types/input/components/MultiSelectFieldInput.tsx @@ -13,10 +13,10 @@ import { useContext } from 'react'; export const MultiSelectFieldInput = () => { const { fieldDefinition, draftValue, setDraftValue } = useMultiSelectField(); const { addSelectOption } = useAddSelectOption( - fieldDefinition?.metadata?.fieldName, + fieldDefinition.fieldMetadataId, ); const { canAddSelectOption } = useCanAddSelectOption( - fieldDefinition?.metadata?.fieldName, + fieldDefinition.fieldMetadataId, ); const { onSubmit } = useContext(FieldInputEventContext); diff --git a/packages/twenty-front/src/modules/object-record/record-field/ui/meta-types/input/components/SelectFieldInput.tsx b/packages/twenty-front/src/modules/object-record/record-field/ui/meta-types/input/components/SelectFieldInput.tsx index 1571a8a104..0384de6a9a 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/ui/meta-types/input/components/SelectFieldInput.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/ui/meta-types/input/components/SelectFieldInput.tsx @@ -19,10 +19,10 @@ import { type SelectOption } from 'twenty-ui/input'; export const SelectFieldInput = () => { const { fieldDefinition, fieldValue } = useSelectField(); const { addSelectOption } = useAddSelectOption( - fieldDefinition?.metadata?.fieldName, + fieldDefinition.fieldMetadataId, ); const { canAddSelectOption } = useCanAddSelectOption( - fieldDefinition?.metadata?.fieldName, + fieldDefinition.fieldMetadataId, ); const { onCancel, onSubmit } = useContext(FieldInputEventContext);