Files
twenty/packages/twenty-front/src/pages/tasks/TasksEffect.tsx
Charles Bochet cfb0cce9b8 Refactor Views by cleaning the code, relying on apolloCache and improving performances (#4516)
* Wip refactoring view

* Post merge conflicts

* Fix review

* Add create view capability

* Fix create object missing view

* Fix tests
2024-03-20 14:21:58 +01:00

52 lines
1.6 KiB
TypeScript

import { useEffect } from 'react';
import { useRecoilValue } from 'recoil';
import { currentWorkspaceMemberState } from '@/auth/states/currentWorkspaceMemberState';
import { useFilterDropdown } from '@/object-record/object-filter-dropdown/hooks/useFilterDropdown';
import { ViewFilterOperand } from '@/views/types/ViewFilterOperand';
import { isDefined } from '~/utils/isDefined';
import { tasksFilterDefinitions } from './tasks-filter-definitions';
type TasksEffectProps = {
filterDropdownId: string;
};
export const TasksEffect = ({ filterDropdownId }: TasksEffectProps) => {
const currentWorkspaceMember = useRecoilValue(currentWorkspaceMemberState);
const {
setSelectedFilter,
setAvailableFilterDefinitions,
setObjectFilterDropdownSelectedRecordIds,
} = useFilterDropdown({
filterDropdownId: filterDropdownId,
});
useEffect(() => {
setAvailableFilterDefinitions(tasksFilterDefinitions);
}, [setAvailableFilterDefinitions]);
useEffect(() => {
if (isDefined(currentWorkspaceMember)) {
setSelectedFilter({
fieldMetadataId: 'assigneeId',
value: JSON.stringify(currentWorkspaceMember.id),
operand: ViewFilterOperand.Is,
displayValue:
currentWorkspaceMember.name?.firstName +
' ' +
currentWorkspaceMember.name?.lastName,
displayAvatarUrl: currentWorkspaceMember.avatarUrl ?? undefined,
definition: tasksFilterDefinitions[0],
});
setObjectFilterDropdownSelectedRecordIds([currentWorkspaceMember.id]);
}
}, [
currentWorkspaceMember,
setSelectedFilter,
setObjectFilterDropdownSelectedRecordIds,
]);
return <></>;
};