refactor: userpreferences are now in the DB
This commit is contained in:
@@ -1,52 +0,0 @@
|
||||
import { useState, useEffect } from 'react';
|
||||
import { TaskStatus } from '@/lib/types';
|
||||
import { userPreferencesService } from '@/services/user-preferences';
|
||||
import { getAllStatuses } from '@/lib/status-config';
|
||||
|
||||
export function useColumnVisibility() {
|
||||
const [hiddenStatuses, setHiddenStatuses] = useState<Set<TaskStatus>>(new Set());
|
||||
|
||||
// Charger les préférences au montage
|
||||
useEffect(() => {
|
||||
const saved = userPreferencesService.getColumnVisibility();
|
||||
setHiddenStatuses(new Set(saved.hiddenStatuses));
|
||||
}, []);
|
||||
|
||||
const toggleStatusVisibility = (status: TaskStatus) => {
|
||||
setHiddenStatuses(prev => {
|
||||
const newSet = new Set(prev);
|
||||
if (newSet.has(status)) {
|
||||
newSet.delete(status);
|
||||
} else {
|
||||
newSet.add(status);
|
||||
}
|
||||
|
||||
// Sauvegarder dans localStorage
|
||||
userPreferencesService.saveColumnVisibility({
|
||||
hiddenStatuses: Array.from(newSet)
|
||||
});
|
||||
|
||||
return newSet;
|
||||
});
|
||||
};
|
||||
|
||||
const getVisibleStatuses = <T extends { id: TaskStatus }>(statuses: T[]): T[] => {
|
||||
return statuses.filter(status => !hiddenStatuses.has(status.id));
|
||||
};
|
||||
|
||||
const isStatusVisible = (status: TaskStatus): boolean => {
|
||||
return !hiddenStatuses.has(status);
|
||||
};
|
||||
|
||||
const getAllAvailableStatuses = () => {
|
||||
return getAllStatuses();
|
||||
};
|
||||
|
||||
return {
|
||||
hiddenStatuses,
|
||||
toggleStatusVisibility,
|
||||
getVisibleStatuses,
|
||||
isStatusVisible,
|
||||
getAllAvailableStatuses
|
||||
};
|
||||
}
|
||||
28
hooks/useDragAndDrop.ts
Normal file
28
hooks/useDragAndDrop.ts
Normal file
@@ -0,0 +1,28 @@
|
||||
import { useState, useEffect } from 'react';
|
||||
import { useSensors, useSensor, PointerSensor } from '@dnd-kit/core';
|
||||
|
||||
/**
|
||||
* Hook pour gérer le drag & drop de manière safe avec SSR
|
||||
* Désactive le DnD jusqu'à l'hydratation pour éviter les erreurs d'hydratation
|
||||
*/
|
||||
export function useDragAndDrop() {
|
||||
const [isMounted, setIsMounted] = useState(false);
|
||||
|
||||
useEffect(() => {
|
||||
// Activer le drag & drop après l'hydratation
|
||||
setIsMounted(true);
|
||||
}, []);
|
||||
|
||||
const sensors = useSensors(
|
||||
useSensor(PointerSensor, {
|
||||
activationConstraint: {
|
||||
distance: 8,
|
||||
},
|
||||
})
|
||||
);
|
||||
|
||||
return {
|
||||
isMounted,
|
||||
sensors
|
||||
};
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
import { useState, useEffect } from 'react';
|
||||
|
||||
const STORAGE_KEY = 'towercontrol_objectives_collapsed';
|
||||
|
||||
export function useObjectivesCollapse() {
|
||||
const [isCollapsed, setIsCollapsed] = useState(false);
|
||||
|
||||
// Charger l'état au montage
|
||||
useEffect(() => {
|
||||
try {
|
||||
const saved = localStorage.getItem(STORAGE_KEY);
|
||||
if (saved !== null) {
|
||||
setIsCollapsed(JSON.parse(saved));
|
||||
}
|
||||
} catch (error) {
|
||||
console.warn('Erreur lors du chargement de l\'état de collapse des objectifs:', error);
|
||||
}
|
||||
}, []);
|
||||
|
||||
const toggleCollapse = () => {
|
||||
setIsCollapsed(prev => {
|
||||
const newValue = !prev;
|
||||
|
||||
// Sauvegarder dans localStorage
|
||||
try {
|
||||
localStorage.setItem(STORAGE_KEY, JSON.stringify(newValue));
|
||||
} catch (error) {
|
||||
console.warn('Erreur lors de la sauvegarde de l\'état de collapse des objectifs:', error);
|
||||
}
|
||||
|
||||
return newValue;
|
||||
});
|
||||
};
|
||||
|
||||
return {
|
||||
isCollapsed,
|
||||
toggleCollapse
|
||||
};
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
import { useState, useEffect } from 'react';
|
||||
import { userPreferencesService } from '@/services/user-preferences';
|
||||
|
||||
export function useObjectivesVisibility() {
|
||||
const [showObjectives, setShowObjectives] = useState(true);
|
||||
|
||||
// Charger les préférences au montage
|
||||
useEffect(() => {
|
||||
const saved = userPreferencesService.getViewPreferences();
|
||||
setShowObjectives(saved.showObjectives);
|
||||
}, []);
|
||||
|
||||
const toggleObjectivesVisibility = () => {
|
||||
setShowObjectives(prev => {
|
||||
const newValue = !prev;
|
||||
|
||||
// Sauvegarder dans localStorage
|
||||
userPreferencesService.updateViewPreferences({
|
||||
showObjectives: newValue
|
||||
});
|
||||
|
||||
return newValue;
|
||||
});
|
||||
};
|
||||
|
||||
return {
|
||||
showObjectives,
|
||||
toggleObjectivesVisibility
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user