refactor(task-filters, project-view-header): streamline imports and optimize task fetching
- Removed unused imports and optimized the import structure in ImprovedTaskFilters for better readability and performance. - Updated ProjectViewHeader to include a call to fetchTasksV3, ensuring enhanced task data is refreshed appropriately. - Adjusted task creation request type to Partial for improved type safety.
This commit is contained in:
@@ -14,37 +14,18 @@ import {
|
|||||||
EyeOutlined,
|
EyeOutlined,
|
||||||
InboxOutlined,
|
InboxOutlined,
|
||||||
CheckOutlined,
|
CheckOutlined,
|
||||||
SettingOutlined,
|
|
||||||
MoreOutlined,
|
|
||||||
} from './antd-imports';
|
} from './antd-imports';
|
||||||
import { RootState } from '@/app/store';
|
import { RootState } from '@/app/store';
|
||||||
import { AppDispatch } from '@/app/store';
|
|
||||||
import { useAppSelector } from '@/hooks/useAppSelector';
|
import { useAppSelector } from '@/hooks/useAppSelector';
|
||||||
import { useAppDispatch } from '@/hooks/useAppDispatch';
|
import { useAppDispatch } from '@/hooks/useAppDispatch';
|
||||||
import useTabSearchParam from '@/hooks/useTabSearchParam';
|
import useTabSearchParam from '@/hooks/useTabSearchParam';
|
||||||
import { useSocket } from '@/socket/socketContext';
|
|
||||||
import { SocketEvents } from '@/shared/socket-events';
|
|
||||||
import { colors } from '@/styles/colors';
|
|
||||||
import SingleAvatar from '@components/common/single-avatar/single-avatar';
|
|
||||||
import { useFilterDataLoader } from '@/hooks/useFilterDataLoader';
|
import { useFilterDataLoader } from '@/hooks/useFilterDataLoader';
|
||||||
import {
|
import { toggleField } from '@/features/task-management/taskListFields.slice';
|
||||||
Dropdown,
|
|
||||||
Checkbox,
|
|
||||||
Button,
|
|
||||||
Space,
|
|
||||||
taskManagementAntdConfig
|
|
||||||
} from './antd-imports';
|
|
||||||
import { toggleField, TaskListField } from '@/features/task-management/taskListFields.slice';
|
|
||||||
|
|
||||||
// Import Redux actions
|
// Import Redux actions
|
||||||
import { fetchTasksV3, setSelectedPriorities } from '@/features/task-management/task-management.slice';
|
import { fetchTasksV3, setSelectedPriorities } from '@/features/task-management/task-management.slice';
|
||||||
import { setCurrentGrouping, selectCurrentGrouping } from '@/features/task-management/grouping.slice';
|
import { setCurrentGrouping, selectCurrentGrouping } from '@/features/task-management/grouping.slice';
|
||||||
import { fetchPriorities } from '@/features/taskAttributes/taskPrioritySlice';
|
import { setMembers, setLabels } from '@/features/tasks/tasks.slice';
|
||||||
import { fetchLabelsByProject, fetchTaskAssignees, setMembers, setLabels } from '@/features/tasks/tasks.slice';
|
|
||||||
import { getTeamMembers } from '@/features/team-members/team-members.slice';
|
|
||||||
import { ITaskPriority } from '@/types/tasks/taskPriority.types';
|
|
||||||
import { ITaskListColumn } from '@/types/tasks/taskList.types';
|
|
||||||
import { IGroupBy } from '@/features/tasks/tasks.slice';
|
|
||||||
|
|
||||||
// Optimized selectors with proper transformation logic
|
// Optimized selectors with proper transformation logic
|
||||||
const selectFilterData = createSelector(
|
const selectFilterData = createSelector(
|
||||||
@@ -610,13 +591,10 @@ const ImprovedTaskFilters: React.FC<ImprovedTaskFiltersProps> = ({
|
|||||||
}) => {
|
}) => {
|
||||||
const { t } = useTranslation('task-list-filters');
|
const { t } = useTranslation('task-list-filters');
|
||||||
const dispatch = useAppDispatch();
|
const dispatch = useAppDispatch();
|
||||||
const { socket, connected } = useSocket();
|
|
||||||
|
|
||||||
// Get current state values for filter updates
|
// Get current state values for filter updates
|
||||||
const currentTaskAssignees = useAppSelector(state => state.taskReducer.taskAssignees);
|
const currentTaskAssignees = useAppSelector(state => state.taskReducer.taskAssignees);
|
||||||
const currentBoardAssignees = useAppSelector(state => state.boardReducer.taskAssignees);
|
|
||||||
const currentTaskLabels = useAppSelector(state => state.taskReducer.labels);
|
const currentTaskLabels = useAppSelector(state => state.taskReducer.labels);
|
||||||
const currentBoardLabels = useAppSelector(state => state.boardReducer.labels);
|
|
||||||
|
|
||||||
// Use the filter data loader hook
|
// Use the filter data loader hook
|
||||||
useFilterDataLoader();
|
useFilterDataLoader();
|
||||||
@@ -649,7 +627,6 @@ const ImprovedTaskFilters: React.FC<ImprovedTaskFiltersProps> = ({
|
|||||||
const isDarkMode = useAppSelector(state => state.themeReducer?.mode === 'dark');
|
const isDarkMode = useAppSelector(state => state.themeReducer?.mode === 'dark');
|
||||||
const { projectId } = useAppSelector(state => state.projectReducer);
|
const { projectId } = useAppSelector(state => state.projectReducer);
|
||||||
const { projectView } = useTabSearchParam();
|
const { projectView } = useTabSearchParam();
|
||||||
const { columns } = useAppSelector(state => state.taskReducer);
|
|
||||||
|
|
||||||
// Theme-aware class names - memoize to prevent unnecessary re-renders
|
// Theme-aware class names - memoize to prevent unnecessary re-renders
|
||||||
const themeClasses = useMemo(() => ({
|
const themeClasses = useMemo(() => ({
|
||||||
@@ -761,12 +738,7 @@ const ImprovedTaskFilters: React.FC<ImprovedTaskFiltersProps> = ({
|
|||||||
console.log('Toggle archived:', !showArchived);
|
console.log('Toggle archived:', !showArchived);
|
||||||
}, [showArchived]);
|
}, [showArchived]);
|
||||||
|
|
||||||
// Show fields dropdown functionality
|
|
||||||
const handleColumnVisibilityChange = useCallback(async (col: ITaskListColumn) => {
|
|
||||||
if (!projectId) return;
|
|
||||||
console.log('Column visibility change:', col);
|
|
||||||
// TODO: Implement column visibility change
|
|
||||||
}, [projectId]);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={`${themeClasses.containerBg} border ${themeClasses.containerBorder} rounded-md p-3 shadow-sm ${className}`}>
|
<div className={`${themeClasses.containerBg} border ${themeClasses.containerBorder} rounded-md p-3 shadow-sm ${className}`}>
|
||||||
|
|||||||
@@ -54,6 +54,7 @@ import useTabSearchParam from '@/hooks/useTabSearchParam';
|
|||||||
import { addTaskCardToTheTop, fetchBoardTaskGroups } from '@/features/board/board-slice';
|
import { addTaskCardToTheTop, fetchBoardTaskGroups } from '@/features/board/board-slice';
|
||||||
import { fetchPhasesByProjectId } from '@/features/projects/singleProject/phase/phases.slice';
|
import { fetchPhasesByProjectId } from '@/features/projects/singleProject/phase/phases.slice';
|
||||||
import { fetchEnhancedKanbanGroups } from '@/features/enhanced-kanban/enhanced-kanban.slice';
|
import { fetchEnhancedKanbanGroups } from '@/features/enhanced-kanban/enhanced-kanban.slice';
|
||||||
|
import { fetchTasksV3 } from '@/features/task-management/task-management.slice';
|
||||||
|
|
||||||
const ProjectViewHeader = () => {
|
const ProjectViewHeader = () => {
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
@@ -83,6 +84,8 @@ const ProjectViewHeader = () => {
|
|||||||
dispatch(fetchTaskListColumns(projectId));
|
dispatch(fetchTaskListColumns(projectId));
|
||||||
dispatch(fetchPhasesByProjectId(projectId))
|
dispatch(fetchPhasesByProjectId(projectId))
|
||||||
dispatch(fetchTaskGroups(projectId));
|
dispatch(fetchTaskGroups(projectId));
|
||||||
|
// Also refresh the enhanced tasks data
|
||||||
|
dispatch(fetchTasksV3(projectId));
|
||||||
break;
|
break;
|
||||||
case 'board':
|
case 'board':
|
||||||
// dispatch(fetchBoardTaskGroups(projectId));
|
// dispatch(fetchBoardTaskGroups(projectId));
|
||||||
@@ -166,7 +169,7 @@ const ProjectViewHeader = () => {
|
|||||||
try {
|
try {
|
||||||
setCreatingTask(true);
|
setCreatingTask(true);
|
||||||
|
|
||||||
const body: ITaskCreateRequest = {
|
const body: Partial<ITaskCreateRequest> = {
|
||||||
name: DEFAULT_TASK_NAME,
|
name: DEFAULT_TASK_NAME,
|
||||||
project_id: selectedProject?.id,
|
project_id: selectedProject?.id,
|
||||||
reporter_id: currentSession?.id,
|
reporter_id: currentSession?.id,
|
||||||
|
|||||||
Reference in New Issue
Block a user