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.
This commit is contained in:
Julien Froidefond
2025-10-03 08:45:46 +02:00
parent 1a670cb392
commit 7900ba3b73

View File

@@ -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) => {
try {
await onDeleteCheckbox(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 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();
}
});
};