Files
twenty_crm/front/src/modules/people/hooks/useCreateActivityForPeople.ts
2023-10-29 23:50:59 +01:00

47 lines
1.6 KiB
TypeScript

import { useRecoilCallback } from 'recoil';
import { useOpenCreateActivityDrawerForSelectedRowIds } from '@/activities/hooks/useOpenCreateActivityDrawerForSelectedRowIds';
import {
ActivityTargetableEntity,
ActivityTargetableEntityType,
} from '@/activities/types/ActivityTargetableEntity';
import { selectedRowIdsSelector } from '@/ui/data/data-table/states/selectors/selectedRowIdsSelector';
import { entityFieldsFamilyState } from '@/ui/data/field/states/entityFieldsFamilyState';
import { ActivityType, Person } from '~/generated/graphql';
export const useCreateActivityForPeople = () => {
const openCreateActivityRightDrawer =
useOpenCreateActivityDrawerForSelectedRowIds();
return useRecoilCallback(
({ snapshot }) =>
(type: ActivityType) => {
const relatedEntites: ActivityTargetableEntity[] = [];
const selectedRowIds = Object.keys(
snapshot.getLoadable(selectedRowIdsSelector).getValue(),
);
for (const id of selectedRowIds) {
const person = snapshot
.getLoadable(entityFieldsFamilyState(id))
.getValue() as Person;
if (
person?.company?.id &&
!relatedEntites.find((x) => x.id === person?.company?.id)
) {
relatedEntites.push({
id: person.company.id,
type: ActivityTargetableEntityType.Company,
});
}
}
openCreateActivityRightDrawer(
type,
ActivityTargetableEntityType.Person,
relatedEntites,
);
},
[openCreateActivityRightDrawer],
);
};