refactor: improve Settings supported field types validation (#4496)

* refactor: improve Settings supported field types validation

Related to: #4084, #4295

* fix: fix wrong import
This commit is contained in:
Thaïs
2024-03-25 12:27:00 +01:00
committed by GitHub
parent a560746fcd
commit 1639b2ad0e
11 changed files with 95 additions and 40 deletions

View File

@ -3,7 +3,7 @@ import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
import { getLabelIdentifierFieldMetadataItem } from '@/object-metadata/utils/getLabelIdentifierFieldMetadataItem';
import { isLabelIdentifierField } from '@/object-metadata/utils/isLabelIdentifierField';
import { SettingsObjectFieldSelectFormValues } from '@/settings/data-model/components/SettingsObjectFieldSelectForm';
import { SETTINGS_FIELD_METADATA_TYPES } from '@/settings/data-model/constants/SettingsFieldMetadataTypes';
import { getSettingsFieldTypeConfig } from '@/settings/data-model/utils/getSettingsFieldTypeConfig';
import { FieldMetadataType } from '~/generated-metadata/graphql';
import { isDefined } from '~/utils/isDefined';
@ -39,12 +39,16 @@ export const getFieldDefaultPreviewValue = ({
if (!relationLabelIdentifierFieldMetadataItem) return null;
const { type: relationLabelIdentifierFieldType } =
relationLabelIdentifierFieldMetadataItem;
const relationFieldTypeConfig = getSettingsFieldTypeConfig(
relationLabelIdentifierFieldType,
);
const defaultRelationLabelIdentifierFieldValue =
relationLabelIdentifierFieldMetadataItem.type === FieldMetadataType.Text
relationLabelIdentifierFieldType === FieldMetadataType.Text
? relationObjectMetadataItem.labelSingular
: SETTINGS_FIELD_METADATA_TYPES[
relationLabelIdentifierFieldMetadataItem.type
]?.defaultValue;
: relationFieldTypeConfig?.defaultValue;
const defaultRelationRecord = {
[relationLabelIdentifierFieldMetadataItem.name]:
@ -54,6 +58,7 @@ export const getFieldDefaultPreviewValue = ({
return defaultRelationRecord;
}
// Other fields
const isLabelIdentifier =
!!fieldMetadataItem.id &&
!!fieldMetadataItem.name &&
@ -65,8 +70,9 @@ export const getFieldDefaultPreviewValue = ({
objectMetadataItem,
});
// Other fields
const fieldTypeConfig = getSettingsFieldTypeConfig(fieldMetadataItem.type);
return isLabelIdentifier && fieldMetadataItem.type === FieldMetadataType.Text
? objectMetadataItem.labelSingular
: SETTINGS_FIELD_METADATA_TYPES[fieldMetadataItem.type]?.defaultValue;
: fieldTypeConfig?.defaultValue;
};

View File

@ -0,0 +1,8 @@
import { SETTINGS_FIELD_TYPE_CONFIGS } from '@/settings/data-model/constants/SettingsFieldTypeConfigs';
import { isFieldTypeSupportedInSettings } from '@/settings/data-model/utils/isFieldTypeSupportedInSettings';
import { FieldMetadataType } from '~/generated-metadata/graphql';
export const getSettingsFieldTypeConfig = (fieldType: FieldMetadataType) =>
isFieldTypeSupportedInSettings(fieldType)
? SETTINGS_FIELD_TYPE_CONFIGS[fieldType]
: undefined;

View File

@ -0,0 +1,8 @@
import { SETTINGS_FIELD_TYPE_CONFIGS } from '@/settings/data-model/constants/SettingsFieldTypeConfigs';
import { SettingsSupportedFieldType } from '@/settings/data-model/types/SettingsSupportedFieldType';
import { FieldMetadataType } from '~/generated-metadata/graphql';
export const isFieldTypeSupportedInSettings = (
fieldType: FieldMetadataType,
): fieldType is SettingsSupportedFieldType =>
fieldType in SETTINGS_FIELD_TYPE_CONFIGS;