refactor(task-drawer): enhance task deletion handling and update imports

- Updated task deletion logic to ensure consistency across task management slices, including clearing selections and updating the board state.
- Refactored imports to streamline task management functionality and improve code clarity.
- Added new Ant Design icon import for enhanced UI options.
This commit is contained in:
chamikaJ
2025-07-09 12:22:37 +05:30
parent 6dba080ade
commit 29a09ec500
2 changed files with 14 additions and 11 deletions

View File

@@ -15,10 +15,10 @@ import { useSocket } from '@/socket/socketContext';
import { SocketEvents } from '@/shared/socket-events'; import { SocketEvents } from '@/shared/socket-events';
import useTaskDrawerUrlSync from '@/hooks/useTaskDrawerUrlSync'; import useTaskDrawerUrlSync from '@/hooks/useTaskDrawerUrlSync';
import { deleteTask } from '@/features/tasks/tasks.slice'; import { deleteTask } from '@/features/tasks/tasks.slice';
import { deleteBoardTask, updateTaskName } from '@/features/board/board-slice'; import { deleteTask as deleteTaskFromManagement } from '@/features/task-management/task-management.slice';
import { updateEnhancedKanbanTaskName } from '@/features/enhanced-kanban/enhanced-kanban.slice'; import { deselectTask } from '@/features/task-management/selection.slice';
import { deleteBoardTask } from '@/features/board/board-slice';
import useTabSearchParam from '@/hooks/useTabSearchParam'; import useTabSearchParam from '@/hooks/useTabSearchParam';
import { IProjectTask } from '@/types/project/projectTasksViewModel.types';
import { ITaskViewModel } from '@/types/tasks/task.types'; import { ITaskViewModel } from '@/types/tasks/task.types';
type TaskDrawerHeaderProps = { type TaskDrawerHeaderProps = {
@@ -30,7 +30,6 @@ const TaskDrawerHeader = ({ inputRef, t }: TaskDrawerHeaderProps) => {
const dispatch = useAppDispatch(); const dispatch = useAppDispatch();
const { socket, connected } = useSocket(); const { socket, connected } = useSocket();
const { clearTaskFromUrl } = useTaskDrawerUrlSync(); const { clearTaskFromUrl } = useTaskDrawerUrlSync();
const { tab } = useTabSearchParam();
const isDeleting = useRef(false); const isDeleting = useRef(false);
const [isEditing, setIsEditing] = useState(false); const [isEditing, setIsEditing] = useState(false);
@@ -54,16 +53,19 @@ const TaskDrawerHeader = ({ inputRef, t }: TaskDrawerHeaderProps) => {
const res = await tasksApiService.deleteTask(selectedTaskId); const res = await tasksApiService.deleteTask(selectedTaskId);
if (res.done) { if (res.done) {
// Explicitly clear the task parameter from URL // Update all relevant slices to ensure task is removed everywhere
clearTaskFromUrl(); dispatch(deleteTask({ taskId: selectedTaskId })); // Old tasks slice
dispatch(deleteTaskFromManagement(selectedTaskId)); // Task management slice (TaskListV2)
dispatch(deselectTask(selectedTaskId)); // Remove from selection if selected
dispatch(deleteBoardTask({ sectionId: '', taskId: selectedTaskId })); // Board slice
dispatch(setShowTaskDrawer(false)); // Clear the task drawer state and URL
dispatch(setSelectedTaskId(null)); dispatch(setSelectedTaskId(null));
dispatch(deleteTask({ taskId: selectedTaskId })); dispatch(setShowTaskDrawer(false));
dispatch(deleteBoardTask({ sectionId: '', taskId: selectedTaskId }));
// Clear the URL parameter last to avoid race conditions
// Reset the flag after a short delay
setTimeout(() => { setTimeout(() => {
clearTaskFromUrl();
isDeleting.current = false; isDeleting.current = false;
}, 100); }, 100);
if (taskFormViewModel?.task?.parent_task_id) { if (taskFormViewModel?.task?.parent_task_id) {

View File

@@ -101,6 +101,7 @@ export {
DoubleRightOutlined, DoubleRightOutlined,
UserAddOutlined, UserAddOutlined,
ArrowsAltOutlined, ArrowsAltOutlined,
EllipsisOutlined
} from '@ant-design/icons'; } from '@ant-design/icons';
// Re-export all components with React // Re-export all components with React