feat(enhanced-kanban): integrate status categories fetching and improve task card behavior

- Added fetching of status categories in EnhancedKanbanBoard to ensure data availability.
- Enhanced task creation flow in EnhancedKanbanCreateTaskCard by resetting input state and managing focus more effectively.
- Improved cleanup in useEffect hooks to prevent memory leaks and ensure proper resource management.
- Streamlined imports and updated logic in DeleteStatusDrawer for better task group fetching and error handling.
This commit is contained in:
shancds
2025-06-26 12:02:21 +05:30
parent 1e15630708
commit efbfe77deb
3 changed files with 46 additions and 18 deletions

View File

@@ -38,9 +38,11 @@ const EnhancedKanbanCreateTaskCard: React.FC<EnhancedKanbanCreateTaskCardProps>
const groupBy = useAppSelector(state => state.enhancedKanbanReducer.groupBy);
useEffect(() => {
setTimeout(() => {
const timer = setTimeout(() => {
inputRef.current?.focus();
}, 100);
return () => clearTimeout(timer);
}, []);
const createRequestBody = (): ITaskCreateRequest | null => {
@@ -66,18 +68,30 @@ const EnhancedKanbanCreateTaskCard: React.FC<EnhancedKanbanCreateTaskCardProps>
}, 100);
};
const resetForNextTask = () => {
setNewTaskName('');
setCreatingTask(false);
// Keep the card visible for creating the next task
setTimeout(() => {
inputRef.current?.focus();
}, 100);
};
const handleAddTask = async () => {
if (creatingTask || !projectId || !currentSession || newTaskName.trim() === '') return;
setCreatingTask(true);
const body = createRequestBody();
if (!body) return;
if (!body) {
setCreatingTask(true);
setShowNewCard(true);
return;
}
// Real-time socket event handler
const eventHandler = (task: IProjectTask) => {
setCreatingTask(false);
dispatch(addTaskToGroup({ sectionId, task: { ...task, id: task.id || nanoid(), name: task.name || newTaskName.trim() } }));
socket?.off(SocketEvents.QUICK_TASK.toString(), eventHandler);
resetForm();
resetForNextTask();
};
socket?.once(SocketEvents.QUICK_TASK.toString(), eventHandler);
socket?.emit(SocketEvents.QUICK_TASK.toString(), JSON.stringify(body));
@@ -89,6 +103,13 @@ const EnhancedKanbanCreateTaskCard: React.FC<EnhancedKanbanCreateTaskCardProps>
setCreatingTask(false);
};
const handleBlur = () => {
if (newTaskName.trim() === '') {
setCreatingTask(false);
setShowNewCard(false);
}
};
return (
<Flex
ref={cardRef}
@@ -111,9 +132,11 @@ const EnhancedKanbanCreateTaskCard: React.FC<EnhancedKanbanCreateTaskCardProps>
>
<Input
ref={inputRef}
autoFocus
value={newTaskName}
onChange={e => setNewTaskName(e.target.value)}
onPressEnter={handleAddTask}
onBlur={handleBlur}
placeholder={t('newTaskNamePlaceholder')}
style={{
width: '100%',