[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:
@@ -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 {
|
||||
|
||||
+9
-8
@@ -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)
|
||||
|
||||
+8
@@ -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;
|
||||
|
||||
+7
-4
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user