diff --git a/packages/twenty-front/src/modules/activities/hooks/useActivities.ts b/packages/twenty-front/src/modules/activities/hooks/useActivities.ts index a2a1bf4cfd..4e61d3b3ff 100644 --- a/packages/twenty-front/src/modules/activities/hooks/useActivities.ts +++ b/packages/twenty-front/src/modules/activities/hooks/useActivities.ts @@ -6,9 +6,9 @@ import { type Task } from '@/activities/types/Task'; import { type TaskTarget } from '@/activities/types/TaskTarget'; import { type CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; import { getRecordsFromRecordConnection } from '@/object-record/cache/utils/getRecordsFromRecordConnection'; -import { type RecordGqlOperationOrderBy } from 'twenty-shared/types'; import { recordStoreFamilyState } from '@/object-record/record-store/states/recordStoreFamilyState'; import { useRecoilCallback } from 'recoil'; +import { type RecordGqlOperationOrderBy } from 'twenty-shared/types'; import { isDefined } from 'twenty-shared/utils'; export const useActivities = ({ @@ -50,9 +50,11 @@ export const useActivities = ({ limit, }); - const activities = activityTargets.map((activityTarget) => { - return activityTarget[objectNameSingular]; - }) as T[]; + const activities = activityTargets + .map((activityTarget) => { + return activityTarget[objectNameSingular]; + }) + .filter(isDefined) as T[]; const fetchMoreActivities = async () => { const result = await fetchMoreActivityTargets(); @@ -69,9 +71,11 @@ export const useActivities = ({ updateActivitiesInStore(activityTargets); - return activityTargets.map((activityTarget) => { - return activityTarget[objectNameSingular]; - }) as T[]; + return activityTargets + .map((activityTarget) => { + return activityTarget[objectNameSingular]; + }) + .filter(isDefined) as T[]; }; return { diff --git a/packages/twenty-front/src/modules/object-record/record-field/ui/meta-types/input/hooks/useOpenRelationFromManyFieldInput.tsx b/packages/twenty-front/src/modules/object-record/record-field/ui/meta-types/input/hooks/useOpenRelationFromManyFieldInput.tsx index 8154b63770..540390e64e 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/ui/meta-types/input/hooks/useOpenRelationFromManyFieldInput.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/ui/meta-types/input/hooks/useOpenRelationFromManyFieldInput.tsx @@ -40,14 +40,15 @@ export const useOpenRelationFromManyFieldInput = () => { prefix, }); - const fieldValue = snapshot - .getLoadable>( - recordStoreFamilySelector({ - recordId, - fieldName, - }), - ) - .getValue(); + const fieldValue = + snapshot + .getLoadable>( + recordStoreFamilySelector({ + recordId, + fieldName, + }), + ) + .getValue() ?? []; const objectMetadataItems = snapshot .getLoadable(objectMetadataItemsState) diff --git a/packages/twenty-front/src/modules/object-record/utils/computeNewPositionOfDraggedRecord.ts b/packages/twenty-front/src/modules/object-record/utils/computeNewPositionOfDraggedRecord.ts index 716ab612a7..155f68ceeb 100644 --- a/packages/twenty-front/src/modules/object-record/utils/computeNewPositionOfDraggedRecord.ts +++ b/packages/twenty-front/src/modules/object-record/utils/computeNewPositionOfDraggedRecord.ts @@ -71,6 +71,10 @@ export const computeNewPositionOfDraggedRecord = ({ const itemAfterTargetItem = sortedRecordsByAscendingPosition[indexOfTargetItem + 1]; + if (!isDefined(itemAfterTargetItem)) { + return targetItem.position + 1; + } + const intermediaryPosition = targetItem.position + (itemAfterTargetItem.position - targetItem.position) / 2; @@ -80,6 +84,10 @@ export const computeNewPositionOfDraggedRecord = ({ const itemBeforeTargetItem = sortedRecordsByAscendingPosition[indexOfTargetItem - 1]; + if (!isDefined(itemBeforeTargetItem)) { + return targetItem.position - 1; + } + const intermediaryPosition = targetItem.position - (targetItem.position - itemBeforeTargetItem.position) / 2; diff --git a/packages/twenty-front/src/modules/ui/layout/selectable-list/hooks/internal/useSelectableListHotKeys.ts b/packages/twenty-front/src/modules/ui/layout/selectable-list/hooks/internal/useSelectableListHotKeys.ts index 0fc3f1edcd..f96a415931 100644 --- a/packages/twenty-front/src/modules/ui/layout/selectable-list/hooks/internal/useSelectableListHotKeys.ts +++ b/packages/twenty-front/src/modules/ui/layout/selectable-list/hooks/internal/useSelectableListHotKeys.ts @@ -50,16 +50,19 @@ export const useSelectableListHotKeys = ( const currentPosition = findPosition(selectableItemIds, selectedItemId); const computeNextId = (direction: Direction) => { + if ( + selectableItemIds.length === 0 || + selectableItemIds[0]?.length === 0 + ) { + return; + } + if (!selectedItemId || !currentPosition) { return selectableItemIds[0][0]; } const { row: currentRow, col: currentCol } = currentPosition; - if (selectableItemIds.length === 0) { - return; - } - const isSingleRow = selectableItemIds.length === 1; let nextRow: number;