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:
chamiakJ
2025-06-25 23:33:32 +05:30
parent 44527f68cf
commit f22caea1e5
2 changed files with 7 additions and 32 deletions

View File

@@ -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}`}>

View File

@@ -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,