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:
@@ -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) {
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user