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) => {
|
const handleArchiveTask = async (checkboxId: string) => {
|
||||||
try {
|
try {
|
||||||
await dailyClient.archiveCheckbox(checkboxId);
|
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) {
|
} catch (error) {
|
||||||
console.error('Erreur lors de l\'archivage:', 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
|
// Gérer la suppression d'une tâche
|
||||||
const handleDeleteTask = async (checkboxId: string) => {
|
const handleDeleteTask = async (checkboxId: string) => {
|
||||||
|
try {
|
||||||
await onDeleteCheckbox(checkboxId);
|
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
|
// Gérer le déplacement d'une tâche à aujourd'hui
|
||||||
@@ -94,12 +104,15 @@ export function PendingTasksSection({
|
|||||||
const result = await moveCheckboxToToday(checkboxId);
|
const result = await moveCheckboxToToday(checkboxId);
|
||||||
|
|
||||||
if (result.success) {
|
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) {
|
if (onRefreshDaily) {
|
||||||
await onRefreshDaily(); // Rafraîchir la vue daily principale
|
await onRefreshDaily(); // Rafraîchir la vue daily principale
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
console.error('Erreur lors du déplacement vers aujourd\'hui:', result.error);
|
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