[Fix] Various typeError fixes (#17508)

Fixes
[sentry](https://twenty-v7.sentry.io/issues/6539621673/?environment=prod&environment=prod-eu&project=4507072563183616&query=is%3Aunresolved%20issue.priority%3A%5Bhigh%2C%20medium%5D%20timesSeen%3A%3E3%20TypeError&referrer=issue-stream&sort=date):
fieldValue.map on potentially null fieldValue

Fixes
[sentry](https://twenty-v7.sentry.io/issues/6996079360/?environment=prod&environment=prod-eu&project=4507072563183616&query=is%3Aunresolved%20issue.priority%3A%5Bhigh%2C%20medium%5D%20timesSeen%3A%3E3%20TypeError&referrer=issue-stream&sort=date):
note.id on potentially null note due to recent useActivities change

Fixes sentry
([1](https://twenty-v7.sentry.io/issues/6707703562/?environment=prod&environment=prod-eu&project=4507072563183616&query=is%3Aunresolved%20issue.priority%3A%5Bhigh%2C%20medium%5D%20timesSeen%3A%3E3%20TypeError&referrer=issue-stream&sort=date),
[2](https://twenty-v7.sentry.io/issues/6707703563/?environment=prod&environment=prod-eu&project=4507072563183616&query=is%3Aunresolved%20issue.priority%3A%5Bhigh%2C%20medium%5D%20timesSeen%3A%3E3%20TypeError&referrer=issue-stream&sort=date)
- same issue): selectableListHotKey issue

Fixes
[sentry](https://twenty-v7.sentry.io/issues/7087281049/?environment=prod&environment=prod-eu&project=4507072563183616&query=is%3Aunresolved%20issue.priority%3A%5Bhigh%2C%20medium%5D%20timesSeen%3A%3E3%20TypeError&referrer=issue-stream&sort=date):
issue when reordering fields (putting field in last position)
This commit is contained in:
Marie
2026-01-29 11:50:28 +01:00
committed by GitHub
parent 3ad7a9ac94
commit 06e803d18b
4 changed files with 35 additions and 19 deletions
@@ -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 = <T extends Task | Note>({
@@ -50,9 +50,11 @@ export const useActivities = <T extends Task | Note>({
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 = <T extends Task | Note>({
updateActivitiesInStore(activityTargets);
return activityTargets.map((activityTarget) => {
return activityTarget[objectNameSingular];
}) as T[];
return activityTargets
.map((activityTarget) => {
return activityTarget[objectNameSingular];
})
.filter(isDefined) as T[];
};
return {
@@ -40,14 +40,15 @@ export const useOpenRelationFromManyFieldInput = () => {
prefix,
});
const fieldValue = snapshot
.getLoadable<FieldRelationValue<FieldRelationFromManyValue>>(
recordStoreFamilySelector({
recordId,
fieldName,
}),
)
.getValue();
const fieldValue =
snapshot
.getLoadable<FieldRelationValue<FieldRelationFromManyValue>>(
recordStoreFamilySelector({
recordId,
fieldName,
}),
)
.getValue() ?? [];
const objectMetadataItems = snapshot
.getLoadable(objectMetadataItemsState)
@@ -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;
@@ -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;