import styled from '@emotion/styled'; import { AnimatedPlaceholder, AnimatedPlaceholderEmptyContainer, AnimatedPlaceholderEmptySubTitle, AnimatedPlaceholderEmptyTextContainer, AnimatedPlaceholderEmptyTitle, Button, EMPTY_PLACEHOLDER_TRANSITION_PROPS, IconPlus, } from 'twenty-ui'; import { SkeletonLoader } from '@/activities/components/SkeletonLoader'; import { useOpenCreateActivityDrawer } from '@/activities/hooks/useOpenCreateActivityDrawer'; import { useTasks } from '@/activities/tasks/hooks/useTasks'; import { ActivityTargetableObject } from '@/activities/types/ActivityTargetableEntity'; import { Task } from '@/activities/types/Task'; import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; import { useHasObjectReadOnlyPermission } from '@/settings/roles/hooks/useHasObjectReadOnlyPermission'; import { activeTabIdComponentState } from '@/ui/layout/tab/states/activeTabIdComponentState'; import { useRecoilComponentValueV2 } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValueV2'; import groupBy from 'lodash.groupby'; import { AddTaskButton } from './AddTaskButton'; import { TaskList } from './TaskList'; const StyledContainer = styled.div` display: flex; flex-direction: column; width: 100%; `; type TaskGroupsProps = { filterDropdownId?: string; targetableObjects?: ActivityTargetableObject[]; }; export const TaskGroups = ({ targetableObjects }: TaskGroupsProps) => { const { tasks, tasksLoading } = useTasks({ targetableObjects: targetableObjects ?? [], }); const hasObjectReadOnlyPermission = useHasObjectReadOnlyPermission(); const openCreateActivity = useOpenCreateActivityDrawer({ activityObjectNameSingular: CoreObjectNameSingular.Task, }); const activeTabId = useRecoilComponentValueV2(activeTabIdComponentState); const isLoading = (activeTabId !== 'done' && tasksLoading) || (activeTabId === 'done' && tasksLoading); const isTasksEmpty = (activeTabId !== 'done' && tasks?.length === 0) || (activeTabId === 'done' && tasks?.length === 0); if (isLoading && isTasksEmpty) { return ; } if (isTasksEmpty) { return ( Mission accomplished! All tasks addressed. Maintain the momentum. {!hasObjectReadOnlyPermission && (