Remove overlay-scroll-bar (#11258)
## What - Deprecate overlayscrollbars as we decided to follow the native behavior - rework on performances (avoid calling recoil states too much at field level which is quite expensive) - Also implements: https://github.com/twentyhq/core-team-issues/issues/569 --------- Co-authored-by: Lucas Bordeau <bordeau.lucas@gmail.com>
This commit is contained in:
@ -0,0 +1,75 @@
|
||||
import { ActivityTargetWithTargetRecord } from '@/activities/types/ActivityTargetObject';
|
||||
import { Note } from '@/activities/types/Note';
|
||||
import { NoteTarget } from '@/activities/types/NoteTarget';
|
||||
import { Task } from '@/activities/types/Task';
|
||||
import { TaskTarget } from '@/activities/types/TaskTarget';
|
||||
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
|
||||
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
||||
import { ObjectRecord } from '@/object-record/types/ObjectRecord';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
type GetActivityTargetObjectRecordsProps = {
|
||||
activityRecord: Note | Task;
|
||||
objectMetadataItems: ObjectMetadataItem[];
|
||||
activityTargets?: NoteTarget[] | TaskTarget[];
|
||||
};
|
||||
|
||||
export const getActivityTargetObjectRecords = ({
|
||||
activityRecord,
|
||||
objectMetadataItems,
|
||||
activityTargets,
|
||||
}: GetActivityTargetObjectRecordsProps) => {
|
||||
if (!isDefined(activityRecord) && !isDefined(activityTargets)) {
|
||||
return [];
|
||||
}
|
||||
|
||||
const targets = activityTargets
|
||||
? activityTargets
|
||||
: activityRecord &&
|
||||
'noteTargets' in activityRecord &&
|
||||
activityRecord.noteTargets
|
||||
? activityRecord.noteTargets
|
||||
: activityRecord &&
|
||||
'taskTargets' in activityRecord &&
|
||||
activityRecord.taskTargets
|
||||
? activityRecord.taskTargets
|
||||
: [];
|
||||
|
||||
const activityTargetObjectRecords = targets
|
||||
.map<ActivityTargetWithTargetRecord | undefined>((activityTarget) => {
|
||||
if (!isDefined(activityTarget)) {
|
||||
throw new Error(`Cannot find activity target`);
|
||||
}
|
||||
|
||||
const correspondingObjectMetadataItem = objectMetadataItems.find(
|
||||
(objectMetadataItem) =>
|
||||
isDefined(activityTarget[objectMetadataItem.nameSingular]) &&
|
||||
![CoreObjectNameSingular.Note, CoreObjectNameSingular.Task].includes(
|
||||
objectMetadataItem.nameSingular as CoreObjectNameSingular,
|
||||
),
|
||||
);
|
||||
|
||||
if (!correspondingObjectMetadataItem) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
const targetObjectRecord = activityTarget[
|
||||
correspondingObjectMetadataItem.nameSingular
|
||||
] as ObjectRecord | undefined;
|
||||
|
||||
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.`,
|
||||
);
|
||||
}
|
||||
|
||||
return {
|
||||
activityTarget,
|
||||
targetObject: targetObjectRecord,
|
||||
targetObjectMetadataItem: correspondingObjectMetadataItem,
|
||||
};
|
||||
})
|
||||
.filter(isDefined);
|
||||
|
||||
return activityTargetObjectRecords;
|
||||
};
|
||||
Reference in New Issue
Block a user