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