From 7900ba3b737f87ef81f3cee33b7423ff3edb3635 Mon Sep 17 00:00:00 2001 From: Julien Froidefond Date: Fri, 3 Oct 2025 08:45:46 +0200 Subject: [PATCH] feat: optimize task handling in PendingTasksSection - Implemented optimistic UI updates for task archiving and deletion to enhance user experience. - Added error handling to reload pending tasks in case of failures during task operations. - Streamlined task state management by filtering out archived or deleted tasks immediately. --- src/components/daily/PendingTasksSection.tsx | 21 ++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/components/daily/PendingTasksSection.tsx b/src/components/daily/PendingTasksSection.tsx index 5a06842..25363f6 100644 --- a/src/components/daily/PendingTasksSection.tsx +++ b/src/components/daily/PendingTasksSection.tsx @@ -70,9 +70,12 @@ export function PendingTasksSection({ const handleArchiveTask = async (checkboxId: string) => { try { await dailyClient.archiveCheckbox(checkboxId); - await loadPendingTasks(); // Recharger la liste + // Mise à jour optimiste de l'état local + setPendingTasks(prev => prev.filter(task => task.id !== checkboxId)); } catch (error) { console.error('Erreur lors de l\'archivage:', error); + // En cas d'erreur, recharger pour être sûr + await loadPendingTasks(); } }; @@ -84,8 +87,15 @@ export function PendingTasksSection({ // Gérer la suppression d'une tâche const handleDeleteTask = async (checkboxId: string) => { - await onDeleteCheckbox(checkboxId); - await loadPendingTasks(); // Recharger la liste + try { + await onDeleteCheckbox(checkboxId); + // Mise à jour optimiste de l'état local + setPendingTasks(prev => prev.filter(task => task.id !== checkboxId)); + } catch (error) { + console.error('Erreur lors de la suppression:', error); + // En cas d'erreur, recharger pour être sûr + await loadPendingTasks(); + } }; // Gérer le déplacement d'une tâche à aujourd'hui @@ -94,12 +104,15 @@ export function PendingTasksSection({ const result = await moveCheckboxToToday(checkboxId); if (result.success) { - await loadPendingTasks(); // Recharger la liste des tâches en attente + // Mise à jour optimiste de l'état local + setPendingTasks(prev => prev.filter(task => task.id !== checkboxId)); if (onRefreshDaily) { await onRefreshDaily(); // Rafraîchir la vue daily principale } } else { console.error('Erreur lors du déplacement vers aujourd\'hui:', result.error); + // En cas d'erreur, recharger pour être sûr + await loadPendingTasks(); } }); };