Fix Bug Tasks Page not switching tab

This commit is contained in:
Charles Bochet
2024-01-09 23:06:13 +01:00
parent a9ac14439f
commit 11bf03bbea
7 changed files with 29 additions and 16 deletions

View File

@ -1,15 +1,16 @@
import styled from '@emotion/styled'; import styled from '@emotion/styled';
import { useRecoilValue } from 'recoil';
import { useOpenCreateActivityDrawer } from '@/activities/hooks/useOpenCreateActivityDrawer'; import { useOpenCreateActivityDrawer } from '@/activities/hooks/useOpenCreateActivityDrawer';
import { TASKS_TAB_LIST_COMPONENT_ID } from '@/activities/tasks/constants/tasksTabListComponentId';
import { useTasks } from '@/activities/tasks/hooks/useTasks'; import { useTasks } from '@/activities/tasks/hooks/useTasks';
import { ActivityTargetableObject } from '@/activities/types/ActivityTargetableEntity'; import { ActivityTargetableObject } from '@/activities/types/ActivityTargetableEntity';
import { IconPlus } from '@/ui/display/icon'; import { IconPlus } from '@/ui/display/icon';
import { Button } from '@/ui/input/button/components/Button'; import { Button } from '@/ui/input/button/components/Button';
import { useTabList } from '@/ui/layout/tab/hooks/useTabList';
import { AddTaskButton } from './AddTaskButton'; import { AddTaskButton } from './AddTaskButton';
import { TaskList } from './TaskList'; import { TaskList } from './TaskList';
import { useTabList } from '@/ui/layout/tab/hooks/useTabList';
import { useRecoilValue } from 'recoil';
const StyledTaskGroupEmptyContainer = styled.div` const StyledTaskGroupEmptyContainer = styled.div`
align-items: center; align-items: center;
@ -68,7 +69,7 @@ export const TaskGroups = ({
const openCreateActivity = useOpenCreateActivityDrawer(); const openCreateActivity = useOpenCreateActivityDrawer();
const { activeTabIdState } = useTabList('task-groups-tab-list'); const { activeTabIdState } = useTabList(TASKS_TAB_LIST_COMPONENT_ID);
const activeTabId = useRecoilValue(activeTabIdState); const activeTabId = useRecoilValue(activeTabIdState);
if ( if (

View File

@ -0,0 +1 @@
export const TASKS_TAB_LIST_COMPONENT_ID = 'tasks-tab-list';

View File

@ -23,6 +23,8 @@ export const useTasks = ({
filterDropdownId, filterDropdownId,
}); });
const isTargettingObjectRecords = isNonEmptyArray(targetableObjects);
const targetableObjectsFilter = const targetableObjectsFilter =
targetableObjects.reduce<LeafObjectRecordFilter>( targetableObjects.reduce<LeafObjectRecordFilter>(
(aggregateFilter, targetableObject) => { (aggregateFilter, targetableObject) => {
@ -44,15 +46,20 @@ export const useTasks = ({
const { records: activityTargets } = useFindManyRecords({ const { records: activityTargets } = useFindManyRecords({
objectNameSingular: CoreObjectNameSingular.ActivityTarget, objectNameSingular: CoreObjectNameSingular.ActivityTarget,
filter: targetableObjectsFilter, filter: targetableObjectsFilter,
skip: !isTargettingObjectRecords,
}); });
const skipRequest = !isNonEmptyArray(activityTargets) && !selectedFilter; const skipRequest = !isNonEmptyArray(activityTargets) && !selectedFilter;
const idFilter = { const idFilter = isTargettingObjectRecords
id: { ? {
in: activityTargets.map((activityTarget) => activityTarget.activityId), id: {
}, in: activityTargets.map(
}; (activityTarget) => activityTarget.activityId,
),
},
}
: { id: {} };
const assigneeIdFilter = selectedFilter const assigneeIdFilter = selectedFilter
? { ? {

View File

@ -1,4 +1,5 @@
import styled from '@emotion/styled'; import styled from '@emotion/styled';
import { useRecoilValue } from 'recoil';
import { Threads } from '@/activities/emails/components/Threads'; import { Threads } from '@/activities/emails/components/Threads';
import { Attachments } from '@/activities/files/components/Attachments'; import { Attachments } from '@/activities/files/components/Attachments';
@ -15,12 +16,10 @@ import {
IconTimelineEvent, IconTimelineEvent,
} from '@/ui/display/icon'; } from '@/ui/display/icon';
import { TabList } from '@/ui/layout/tab/components/TabList'; import { TabList } from '@/ui/layout/tab/components/TabList';
import { useTabList } from '@/ui/layout/tab/hooks/useTabList';
import { useIsMobile } from '@/ui/utilities/responsive/hooks/useIsMobile'; import { useIsMobile } from '@/ui/utilities/responsive/hooks/useIsMobile';
import { useIsFeatureEnabled } from '@/workspace/hooks/useIsFeatureEnabled'; import { useIsFeatureEnabled } from '@/workspace/hooks/useIsFeatureEnabled';
import { useTabList } from '@/ui/layout/tab/hooks/useTabList';
import { useRecoilValue } from 'recoil';
const StyledShowPageRightContainer = styled.div` const StyledShowPageRightContainer = styled.div`
display: flex; display: flex;
flex: 1 0 0; flex: 1 0 0;

View File

@ -1,12 +1,12 @@
import * as React from 'react'; import * as React from 'react';
import styled from '@emotion/styled'; import styled from '@emotion/styled';
import { useRecoilValue } from 'recoil';
import { IconComponent } from '@/ui/display/icon/types/IconComponent'; import { IconComponent } from '@/ui/display/icon/types/IconComponent';
import { Tab } from './Tab';
import { useTabList } from '@/ui/layout/tab/hooks/useTabList'; import { useTabList } from '@/ui/layout/tab/hooks/useTabList';
import { TabListScope } from '@/ui/layout/tab/scopes/TabListScope'; import { TabListScope } from '@/ui/layout/tab/scopes/TabListScope';
import { useRecoilValue } from 'recoil';
import { Tab } from './Tab';
type SingleTabProps = { type SingleTabProps = {
title: string; title: string;

View File

@ -1,6 +1,7 @@
import { useTabListStates } from '@/ui/layout/tab/hooks/internal/useTabListStates';
import { useSetRecoilState } from 'recoil'; import { useSetRecoilState } from 'recoil';
import { useTabListStates } from '@/ui/layout/tab/hooks/internal/useTabListStates';
export const useTabList = (tabListId?: string) => { export const useTabList = (tabListId?: string) => {
const { activeTabIdState } = useTabListStates({ const { activeTabIdState } = useTabListStates({
tabListScopeId: `${tabListId}-scope`, tabListScopeId: `${tabListId}-scope`,

View File

@ -3,6 +3,7 @@ import styled from '@emotion/styled';
import { TasksRecoilScopeContext } from '@/activities/states/recoil-scope-contexts/TasksRecoilScopeContext'; import { TasksRecoilScopeContext } from '@/activities/states/recoil-scope-contexts/TasksRecoilScopeContext';
import { PageAddTaskButton } from '@/activities/tasks/components/PageAddTaskButton'; import { PageAddTaskButton } from '@/activities/tasks/components/PageAddTaskButton';
import { TaskGroups } from '@/activities/tasks/components/TaskGroups'; import { TaskGroups } from '@/activities/tasks/components/TaskGroups';
import { TASKS_TAB_LIST_COMPONENT_ID } from '@/activities/tasks/constants/tasksTabListComponentId';
import { ObjectFilterDropdownButton } from '@/object-record/object-filter-dropdown/components/ObjectFilterDropdownButton'; import { ObjectFilterDropdownButton } from '@/object-record/object-filter-dropdown/components/ObjectFilterDropdownButton';
import { RelationPickerHotkeyScope } from '@/object-record/relation-picker/types/RelationPickerHotkeyScope'; import { RelationPickerHotkeyScope } from '@/object-record/relation-picker/types/RelationPickerHotkeyScope';
import { IconArchive, IconCheck, IconCheckbox } from '@/ui/display/icon/index'; import { IconArchive, IconCheck, IconCheckbox } from '@/ui/display/icon/index';
@ -58,7 +59,10 @@ export const Tasks = () => {
<TopBar <TopBar
leftComponent={ leftComponent={
<StyledTabListContainer> <StyledTabListContainer>
<TabList tabListId="tasks-tab-list" tabs={TASK_TABS} /> <TabList
tabListId={TASKS_TAB_LIST_COMPONENT_ID}
tabs={TASK_TABS}
/>
</StyledTabListContainer> </StyledTabListContainer>
} }
rightComponent={ rightComponent={