diff --git a/src/contexts/UserPreferencesContext.tsx b/src/contexts/UserPreferencesContext.tsx index d706e73..b79346c 100644 --- a/src/contexts/UserPreferencesContext.tsx +++ b/src/contexts/UserPreferencesContext.tsx @@ -183,9 +183,36 @@ export function UserPreferencesProvider({ children, initialPreferences }: UserPr const toggleColumnVisibility = useCallback((status: TaskStatus) => { startTransition(async () => { - await toggleColumnVisibilityAction(status); + const originalVisibility = preferences.columnVisibility; + const hiddenStatuses = [...preferences.columnVisibility.hiddenStatuses]; + + // Optimistic update + if (hiddenStatuses.includes(status)) { + // Remove from hidden + const index = hiddenStatuses.indexOf(status); + hiddenStatuses.splice(index, 1); + } else { + // Add to hidden + hiddenStatuses.push(status); + } + + setPreferences(prev => ({ + ...prev, + columnVisibility: { ...prev.columnVisibility, hiddenStatuses } + })); + + try { + const result = await toggleColumnVisibilityAction(status); + if (!result.success) { + console.error('Erreur server action:', result.error); + setPreferences(prev => ({ ...prev, columnVisibility: originalVisibility })); + } + } catch (error) { + console.error('Erreur lors du toggle de la visibilité des colonnes:', error); + setPreferences(prev => ({ ...prev, columnVisibility: originalVisibility })); + } }); - }, []); + }, [preferences.columnVisibility]); const isColumnVisible = useCallback((status: TaskStatus) => { return !preferences.columnVisibility.hiddenStatuses.includes(status);