diff --git a/packages/twenty-front/src/modules/activities/hooks/useActivityTargetObjectRecords.ts b/packages/twenty-front/src/modules/activities/hooks/useActivityTargetObjectRecords.ts index 925af9801..519f735b9 100644 --- a/packages/twenty-front/src/modules/activities/hooks/useActivityTargetObjectRecords.ts +++ b/packages/twenty-front/src/modules/activities/hooks/useActivityTargetObjectRecords.ts @@ -1,5 +1,4 @@ import { useRecoilValue } from 'recoil'; -import { Nullable } from 'twenty-ui'; import { ActivityTargetWithTargetRecord } from '@/activities/types/ActivityTargetObject'; import { Note } from '@/activities/types/Note'; @@ -9,6 +8,7 @@ import { TaskTarget } from '@/activities/types/TaskTarget'; import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; import { recordStoreFamilyState } from '@/object-record/record-store/states/recordStoreFamilyState'; +import { ObjectRecord } from '@/object-record/types/ObjectRecord'; import { isDefined } from 'twenty-shared/utils'; export const useActivityTargetObjectRecords = ( @@ -34,7 +34,7 @@ export const useActivityTargetObjectRecords = ( : []; const activityTargetObjectRecords = targets - .map>((activityTarget) => { + .map((activityTarget) => { if (!isDefined(activityTarget)) { throw new Error(`Cannot find activity target`); } @@ -51,10 +51,11 @@ export const useActivityTargetObjectRecords = ( return undefined; } - const targetObjectRecord = - activityTarget[correspondingObjectMetadataItem.nameSingular]; + const targetObjectRecord = activityTarget[ + correspondingObjectMetadataItem.nameSingular + ] as ObjectRecord | undefined; - if (!targetObjectRecord) { + if (!isDefined(targetObjectRecord)) { throw new Error( `Cannot find target object record of type ${correspondingObjectMetadataItem.nameSingular}, make sure the request for activities eagerly loads for the target objects on activity target relation.`, ); @@ -62,7 +63,7 @@ export const useActivityTargetObjectRecords = ( return { activityTarget, - targetObject: targetObjectRecord ?? undefined, + targetObject: targetObjectRecord, targetObjectMetadataItem: correspondingObjectMetadataItem, }; }) diff --git a/packages/twenty-front/src/modules/object-metadata/utils/getLabelIdentifierFieldValue.ts b/packages/twenty-front/src/modules/object-metadata/utils/getLabelIdentifierFieldValue.ts index 3b7b89bd6..961bdff9c 100644 --- a/packages/twenty-front/src/modules/object-metadata/utils/getLabelIdentifierFieldValue.ts +++ b/packages/twenty-front/src/modules/object-metadata/utils/getLabelIdentifierFieldValue.ts @@ -1,8 +1,8 @@ import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; import { FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; import { ObjectRecord } from '@/object-record/types/ObjectRecord'; -import { FieldMetadataType } from '~/generated-metadata/graphql'; import { isDefined } from 'twenty-shared/utils'; +import { FieldMetadataType } from '~/generated-metadata/graphql'; export const getLabelIdentifierFieldValue = ( record: ObjectRecord, diff --git a/packages/twenty-front/src/modules/object-record/hooks/useRecordChipData.ts b/packages/twenty-front/src/modules/object-record/hooks/useRecordChipData.ts index d4d535c01..f1e844cec 100644 --- a/packages/twenty-front/src/modules/object-record/hooks/useRecordChipData.ts +++ b/packages/twenty-front/src/modules/object-record/hooks/useRecordChipData.ts @@ -22,6 +22,7 @@ export const useRecordChipData = ({ const identifierChipGenerator = identifierChipGeneratorPerObject[objectNameSingular]; + if (isDefined(identifierChipGenerator)) { return { recordChipData: identifierChipGenerator(record), diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/display/components/RelationFromManyFieldDisplay.tsx b/packages/twenty-front/src/modules/object-record/record-field/meta-types/display/components/RelationFromManyFieldDisplay.tsx index 6f70062c2..0dfefca8f 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/display/components/RelationFromManyFieldDisplay.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/display/components/RelationFromManyFieldDisplay.tsx @@ -48,13 +48,17 @@ export const RelationFromManyFieldDisplay = () => { return ( - {fieldValue.filter(isDefined).map((record) => ( - - ))} + {fieldValue + .map((record) => + isDefined(record) && isDefined(record[relationFieldName]) ? ( + + ) : undefined, + ) + .filter(isDefined)} ); } else if (isRelationFromActivityTargets) { diff --git a/packages/twenty-front/src/modules/ui/layout/dropdown/components/DropdownOnToggleEffect.tsx b/packages/twenty-front/src/modules/ui/layout/dropdown/components/DropdownOnToggleEffect.tsx index 9ffb63e3a..ecd5a8b61 100644 --- a/packages/twenty-front/src/modules/ui/layout/dropdown/components/DropdownOnToggleEffect.tsx +++ b/packages/twenty-front/src/modules/ui/layout/dropdown/components/DropdownOnToggleEffect.tsx @@ -1,4 +1,4 @@ -import { useEffect } from 'react'; +import { useEffect, useState } from 'react'; import { useDropdown } from '@/ui/layout/dropdown/hooks/useDropdown'; @@ -10,14 +10,20 @@ export const DropdownOnToggleEffect = ({ onDropdownOpen?: () => void; }) => { const { isDropdownOpen } = useDropdown(); + const [currentIsDropdownOpen, setCurrentIsDropdownOpen] = + useState(isDropdownOpen); useEffect(() => { - if (isDropdownOpen) { + if (isDropdownOpen && !currentIsDropdownOpen) { + setCurrentIsDropdownOpen(isDropdownOpen); onDropdownOpen?.(); - } else { + } + + if (!isDropdownOpen && currentIsDropdownOpen) { + setCurrentIsDropdownOpen(isDropdownOpen); onDropdownClose?.(); } - }, [isDropdownOpen, onDropdownClose, onDropdownOpen]); + }, [currentIsDropdownOpen, isDropdownOpen, onDropdownClose, onDropdownOpen]); return null; };