Exclude workflows from relation field object dropdown when inactive (#12033)
closes #11996 - Switched the “Object destination” select in SettingsDataModelFieldRelationForm to use activeObjectMetadataItems.filter(...) so workflows, system, and remote objects are excluded - Updated useRelationSettingsFormInitialValues to fall back on the same filtered activeObjectMetadataItems list for its initial value This ensures workflows (and any unwanted system/remote objects) no longer show up in the dropdown or as the default.
This commit is contained in:
@ -15,9 +15,9 @@ import { IconPicker } from '@/ui/input/components/IconPicker';
|
||||
import { Select } from '@/ui/input/components/Select';
|
||||
import { TextInput } from '@/ui/input/components/TextInput';
|
||||
import { useIsMobile } from '@/ui/utilities/responsive/hooks/useIsMobile';
|
||||
import { RelationDefinitionType } from '~/generated-metadata/graphql';
|
||||
import { useLingui } from '@lingui/react/macro';
|
||||
import { useIcons } from 'twenty-ui/display';
|
||||
import { RelationDefinitionType } from '~/generated-metadata/graphql';
|
||||
|
||||
export const settingsDataModelFieldRelationFormSchema = z.object({
|
||||
relation: z.object({
|
||||
@ -98,7 +98,7 @@ export const SettingsDataModelFieldRelationForm = ({
|
||||
const { control, watch: watchFormValue } =
|
||||
useFormContext<SettingsDataModelFieldRelationFormValues>();
|
||||
const { getIcon } = useIcons();
|
||||
const { objectMetadataItems, findObjectMetadataItemById } =
|
||||
const { activeObjectMetadataItems, findObjectMetadataItemById } =
|
||||
useFilteredObjectMetadataItems();
|
||||
|
||||
const {
|
||||
@ -156,7 +156,7 @@ export const SettingsDataModelFieldRelationForm = ({
|
||||
fullWidth
|
||||
disabled={disableRelationEdition}
|
||||
value={value}
|
||||
options={objectMetadataItems
|
||||
options={activeObjectMetadataItems
|
||||
.filter(isObjectMetadataAvailableForRelation)
|
||||
.map((objectMetadataItem) => ({
|
||||
label: objectMetadataItem.labelPlural,
|
||||
|
||||
@ -5,6 +5,7 @@ import { useGetRelationMetadata } from '@/object-metadata/hooks/useGetRelationMe
|
||||
import { FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem';
|
||||
import { isObjectMetadataAvailableForRelation } from '@/object-metadata/utils/isObjectMetadataAvailableForRelation';
|
||||
import { SettingsDataModelFieldPreviewCardProps } from '@/settings/data-model/fields/preview/components/SettingsDataModelFieldPreviewCard';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
import { RelationDefinitionType } from '~/generated-metadata/graphql';
|
||||
|
||||
export const useRelationSettingsFormInitialValues = ({
|
||||
@ -14,7 +15,7 @@ export const useRelationSettingsFormInitialValues = ({
|
||||
fieldMetadataItem?: Pick<FieldMetadataItem, 'type' | 'relationDefinition'>;
|
||||
objectMetadataItem?: SettingsDataModelFieldPreviewCardProps['objectMetadataItem'];
|
||||
}) => {
|
||||
const { objectMetadataItems } = useFilteredObjectMetadataItems();
|
||||
const { activeObjectMetadataItems } = useFilteredObjectMetadataItems();
|
||||
|
||||
const getRelationMetadata = useGetRelationMetadata();
|
||||
const {
|
||||
@ -27,17 +28,25 @@ export const useRelationSettingsFormInitialValues = ({
|
||||
[fieldMetadataItem, getRelationMetadata],
|
||||
) ?? {};
|
||||
|
||||
const initialRelationObjectMetadataItem = useMemo(
|
||||
() =>
|
||||
const initialRelationObjectMetadataItem = useMemo(() => {
|
||||
const availableItems = activeObjectMetadataItems.filter(
|
||||
isObjectMetadataAvailableForRelation,
|
||||
);
|
||||
const initialObjectCandidate =
|
||||
relationObjectMetadataItemFromFieldMetadata ??
|
||||
objectMetadataItem ??
|
||||
objectMetadataItems.filter(isObjectMetadataAvailableForRelation)[0],
|
||||
[
|
||||
objectMetadataItem,
|
||||
objectMetadataItems,
|
||||
relationObjectMetadataItemFromFieldMetadata,
|
||||
],
|
||||
);
|
||||
availableItems[0];
|
||||
if (!isDefined(initialObjectCandidate)) {
|
||||
throw new Error(
|
||||
'Relation Form initialization error: invariant violated – no valid object available for relation (this should never happen).',
|
||||
);
|
||||
}
|
||||
return initialObjectCandidate;
|
||||
}, [
|
||||
objectMetadataItem,
|
||||
activeObjectMetadataItems,
|
||||
relationObjectMetadataItemFromFieldMetadata,
|
||||
]);
|
||||
|
||||
const initialRelationType =
|
||||
relationTypeFromFieldMetadata ?? RelationDefinitionType.ONE_TO_MANY;
|
||||
|
||||
Reference in New Issue
Block a user