feat(kanban-board): add subtasks localization and enhance task drawer functionality

- Added new localization keys for subtasks in the kanban board JSON file to improve user experience.
- Updated the SubTaskTable component to dispatch enhanced kanban subtask updates upon deletion.
- Enhanced the TaskDrawerHeader to handle deletion of subtasks with appropriate state updates in the kanban context.
This commit is contained in:
shancds
2025-07-09 16:27:48 +05:30
parent 04f622a7f0
commit 71f168f8fa
3 changed files with 23 additions and 7 deletions

View File

@@ -26,5 +26,8 @@
"noDueDate": "No due date",
"save": "Save",
"clear": "Clear",
"nextWeek": "Next week"
"nextWeek": "Next week",
"noSubtasks": "No subtasks",
"showSubtasks": "Show subtasks",
"hideSubtasks": "Hide subtasks"
}

View File

@@ -30,6 +30,7 @@ import {
fetchTask,
} from '@/features/task-drawer/task-drawer.slice';
import { updateSubtask } from '@/features/board/board-slice';
import { updateEnhancedKanbanSubtask } from '@/features/enhanced-kanban/enhanced-kanban.slice';
type SubTaskTableProps = {
subTasks: ISubTask[];
@@ -111,6 +112,13 @@ const SubTaskTable = ({ subTasks, loadingSubTasks, refreshSubTasks, t }: SubTask
try {
await tasksApiService.deleteTask(taskId);
dispatch(
updateEnhancedKanbanSubtask({
sectionId: '',
subtask: { id: taskId, parent_task_id: selectedTaskId || '', manual_progress: false },
mode: 'delete',
})
);
dispatch(
updateSubtask({
sectionId: '',
@@ -118,10 +126,7 @@ const SubTaskTable = ({ subTasks, loadingSubTasks, refreshSubTasks, t }: SubTask
mode: 'delete',
})
);
// Note: Enhanced kanban updates are now handled by the global socket handler
// No need to dispatch here as it will be handled by useTaskSocketHandlers
refreshSubTasks();
} catch (error) {
logger.error('Error deleting subtask:', error);

View File

@@ -16,7 +16,7 @@ import { SocketEvents } from '@/shared/socket-events';
import useTaskDrawerUrlSync from '@/hooks/useTaskDrawerUrlSync';
import { deleteTask } from '@/features/tasks/tasks.slice';
import { deleteBoardTask, updateTaskName } from '@/features/board/board-slice';
import { updateEnhancedKanbanTaskName } from '@/features/enhanced-kanban/enhanced-kanban.slice';
import { updateEnhancedKanbanTaskName, deleteTask as deleteKanbanTask, updateEnhancedKanbanSubtask } from '@/features/enhanced-kanban/enhanced-kanban.slice';
import useTabSearchParam from '@/hooks/useTabSearchParam';
import { IProjectTask } from '@/types/project/projectTasksViewModel.types';
@@ -60,7 +60,15 @@ const TaskDrawerHeader = ({ inputRef, t }: TaskDrawerHeaderProps) => {
dispatch(setSelectedTaskId(null));
dispatch(deleteTask({ taskId: selectedTaskId }));
dispatch(deleteBoardTask({ sectionId: '', taskId: selectedTaskId }));
if (taskFormViewModel?.task?.is_sub_task) {
dispatch(updateEnhancedKanbanSubtask({
sectionId: '',
subtask: { id: selectedTaskId, parent_task_id: taskFormViewModel?.task?.parent_task_id || '', manual_progress: false },
mode: 'delete',
}));
} else {
dispatch(deleteKanbanTask(selectedTaskId)); // <-- Add this line
}
// Reset the flag after a short delay
setTimeout(() => {
isDeleting.current = false;