Spaces:
Build error
Build error
File size: 1,470 Bytes
d9494a5 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | import { FieldMetadataType } from 'twenty-shared/types';
import { isDefined } from 'twenty-shared/utils';
import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
type ValidateEnumValueCompatibilityArgs = {
workspaceMemberFieldMetadata: FlatFieldMetadata;
targetFieldMetadata: FlatFieldMetadata;
predicateValue: unknown;
};
export const validateEnumValueCompatibility = ({
workspaceMemberFieldMetadata,
targetFieldMetadata,
predicateValue,
}: ValidateEnumValueCompatibilityArgs): boolean => {
const isWorkspaceMemberFieldEnum =
workspaceMemberFieldMetadata.type === FieldMetadataType.SELECT ||
workspaceMemberFieldMetadata.type === FieldMetadataType.MULTI_SELECT;
const isTargetFieldEnum =
targetFieldMetadata.type === FieldMetadataType.SELECT ||
targetFieldMetadata.type === FieldMetadataType.MULTI_SELECT;
if (!isWorkspaceMemberFieldEnum || !isTargetFieldEnum) {
return true;
}
const targetFieldOptions = targetFieldMetadata.options || [];
const validTargetValues = new Set(
targetFieldOptions.map((option) => option.value),
);
if (validTargetValues.size === 0) {
return true;
}
const valuesToCheck = Array.isArray(predicateValue)
? predicateValue
: [predicateValue];
const allValuesAreValid = valuesToCheck.every(
(value) => isDefined(value) && validTargetValues.has(String(value)),
);
return allValuesAreValid;
};
|