#6094 Prevent creating a custom field with an existing name (#6100)

Fixes #6094 
Description: Added logic inside SettingsObjectNewFieldStep2.tsx to
prevent form submission
Current Behaviours:
<img width="947" alt="Screenshot 2024-07-03 at 1 45 31 PM"
src="https://github.com/twentyhq/twenty/assets/95612797/bef54bc4-fc83-48f3-894a-34445ec64723">

---------

Co-authored-by: Marie Stoppa <marie.stoppa@essec.edu>
This commit is contained in:
Deval Minocha
2024-07-17 15:13:57 +05:30
committed by GitHub
parent 37ae99390e
commit 94c2358c89
11 changed files with 212 additions and 151 deletions

View File

@ -38,7 +38,7 @@ import { FieldMetadataType } from '~/generated-metadata/graphql';
import { isDefined } from '~/utils/isDefined';
type SettingsDataModelFieldEditFormValues = z.infer<
typeof settingsFieldFormSchema
ReturnType<typeof settingsFieldFormSchema>
>;
const StyledSettingsObjectFieldTypeSelect = styled(
@ -93,7 +93,7 @@ export const SettingsObjectFieldEdit = () => {
const formConfig = useForm<SettingsDataModelFieldEditFormValues>({
mode: 'onTouched',
resolver: zodResolver(settingsFieldFormSchema),
resolver: zodResolver(settingsFieldFormSchema()),
});
useEffect(() => {

View File

@ -36,7 +36,7 @@ import { isDefined } from '~/utils/isDefined';
import { isUndefinedOrNull } from '~/utils/isUndefinedOrNull';
type SettingsDataModelNewFieldFormValues = z.infer<
typeof settingsFieldFormSchema
ReturnType<typeof settingsFieldFormSchema>
>;
const StyledSettingsObjectFieldTypeSelect = styled(
@ -59,7 +59,11 @@ export const SettingsObjectNewFieldStep2 = () => {
const formConfig = useForm<SettingsDataModelNewFieldFormValues>({
mode: 'onTouched',
resolver: zodResolver(settingsFieldFormSchema),
resolver: zodResolver(
settingsFieldFormSchema(
activeObjectMetadataItem?.fields.map((value) => value.name),
),
),
});
useEffect(() => {
@ -169,8 +173,9 @@ export const SettingsObjectNewFieldStep2 = () => {
return (
<RecordFieldValueSelectorContextProvider>
{/* eslint-disable-next-line react/jsx-props-no-spreading */}
<FormProvider {...formConfig}>
<FormProvider // eslint-disable-next-line react/jsx-props-no-spreading
{...formConfig}
>
<SubMenuTopBarContainer Icon={IconSettings} title="Settings">
<SettingsPageContainer>
<SettingsHeaderContainer>