diff --git a/packages/twenty-front/src/modules/activities/inline-cell/components/ActivityTargetInlineCellEditMode.tsx b/packages/twenty-front/src/modules/activities/inline-cell/components/ActivityTargetInlineCellEditMode.tsx index 4ed47174a..5b9d62b6c 100644 --- a/packages/twenty-front/src/modules/activities/inline-cell/components/ActivityTargetInlineCellEditMode.tsx +++ b/packages/twenty-front/src/modules/activities/inline-cell/components/ActivityTargetInlineCellEditMode.tsx @@ -185,10 +185,18 @@ export const ActivityTargetInlineCellEditMode = ({ activityObjectNameSingular === CoreObjectNameSingular.Task ? activity.id : null, + task: + activityObjectNameSingular === CoreObjectNameSingular.Task + ? activity + : null, noteId: activityObjectNameSingular === CoreObjectNameSingular.Note ? activity.id : null, + note: + activityObjectNameSingular === CoreObjectNameSingular.Note + ? activity + : null, createdAt: new Date().toISOString(), updatedAt: new Date().toISOString(), [fieldName]: record.record, diff --git a/packages/twenty-front/src/modules/favorites/hooks/useFavorites.ts b/packages/twenty-front/src/modules/favorites/hooks/useFavorites.ts index cd665de32..d2beb115d 100644 --- a/packages/twenty-front/src/modules/favorites/hooks/useFavorites.ts +++ b/packages/twenty-front/src/modules/favorites/hooks/useFavorites.ts @@ -98,6 +98,7 @@ export const useFavorites = () => { ) => { createOneFavorite({ [targetObjectNameSingular]: targetRecord, + [`${targetObjectNameSingular}Id`]: targetRecord.id, position: favorites.length + 1, workspaceMemberId: currentWorkspaceMember?.id, }); diff --git a/packages/twenty-front/src/modules/object-record/utils/prefillRecord.ts b/packages/twenty-front/src/modules/object-record/utils/prefillRecord.ts index 2ec83214d..e3128edcf 100644 --- a/packages/twenty-front/src/modules/object-record/utils/prefillRecord.ts +++ b/packages/twenty-front/src/modules/object-record/utils/prefillRecord.ts @@ -1,8 +1,10 @@ import { isUndefined } from '@sniptt/guards'; +import { FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; import { ObjectRecord } from '@/object-record/types/ObjectRecord'; import { generateDefaultFieldValue } from '@/object-record/utils/generateDefaultFieldValue'; +import { FieldMetadataType, RelationDefinitionType } from '~/generated/graphql'; import { isDefined } from '~/utils/isDefined'; export const prefillRecord = ({ @@ -16,6 +18,13 @@ export const prefillRecord = ({ objectMetadataItem.fields .map((fieldMetadataItem) => { const inputValue = input[fieldMetadataItem.name]; + if ( + fieldMetadataItem.type === FieldMetadataType.Relation && + fieldMetadataItem.relationDefinition?.direction === + RelationDefinitionType.ManyToOne + ) { + throwIfInputRelationDataIsInconsistent(input, fieldMetadataItem); + } return [ fieldMetadataItem.name, @@ -27,3 +36,16 @@ export const prefillRecord = ({ .filter(isDefined), ) as T; }; + +const throwIfInputRelationDataIsInconsistent = ( + input: Record, + fieldMetadataItem: FieldMetadataItem, +) => { + const inputValue = input[fieldMetadataItem.name]; + const relationIdFieldName = `${fieldMetadataItem.name}Id`; + if (isDefined(inputValue) && !isDefined(input[relationIdFieldName])) { + throw new Error( + `Inconsistent input: ${fieldMetadataItem.name} is specified but ${relationIdFieldName} is missing`, + ); + } +};