Die ursprüngliche Logik für die Abhängigkeit und Synchronisation der Checkboxen (TALAS/Kabelstrecken) mit localStorage, Redux und lokalem State wurde wiederhergestellt.

This commit is contained in:
ISA
2025-08-21 10:03:47 +02:00
parent d179c152c0
commit da21cba186
6 changed files with 38 additions and 8 deletions

View File

@@ -16,7 +16,7 @@ import { incrementZoomTrigger } from "@/redux/slices/zoomTriggerSlice";
function MapLayersControlPanel() {
const [editMode, setEditMode] = useState(false); // Zustand für editMode
const [localStorageLoaded, setLocalStorageLoaded] = useState(false); // Tracking ob localStorage geladen wurde
const kabelstreckenVisible = useSelector(selectPolylineVisible); // Nur noch Redux
const [kabelstreckenVisible, setKabelstreckenVisible] = useState(false); // Lokaler State für Kabelstrecken
const poiVisible = useSelector(state => state.poiLayerVisible.visible);
const setPoiVisible = value => dispatch(setVisible(value));
const dispatch = useDispatch();
@@ -40,12 +40,18 @@ function MapLayersControlPanel() {
const handlePolylineCheckboxChange = event => {
const checked = event.target.checked;
setKabelstreckenVisible(checked);
localStorage.setItem("kabelstreckenVisible", checked.toString());
localStorage.setItem("polylineVisible", checked.toString());
dispatch(setPolylineVisible(checked));
setTimeout(() => {
const event = new Event("polylineVisibilityChanged");
window.dispatchEvent(event);
}, 100);
// Wenn aktiviert, TALAS aktivieren
if (checked) {
const talasKey = "system-1";
dispatch(setLayerVisibility({ layer: talasKey, visibility: true }));
// Optional: mapLayersVisibility im localStorage aktualisieren, aber nicht mehr für Sichtbarkeit nutzen
const mapId = localStorage.getItem("currentMapId");
const userId = localStorage.getItem("currentUserId");
const mapStorageKey =
@@ -56,12 +62,36 @@ function MapLayersControlPanel() {
};
useEffect(() => {
// LocalStorage Werte beim ersten Laden der Komponente wiederherstellen (nur für POI und mapLayersVisibility, nicht mehr für Kabelstrecken)
// LocalStorage Werte beim ersten Laden der Komponente wiederherstellen
const storedPoiVisible = localStorage.getItem("poiVisible");
if (storedPoiVisible !== null) {
setPoiVisible(storedPoiVisible === "true");
}
// Neue Variable für Kabelstrecken mit Fallback auf die alte Variable
let storedKabelstreckenVisible = localStorage.getItem("kabelstreckenVisible");
const storedPolylineVisible = localStorage.getItem("polylineVisible");
// Falls kabelstreckenVisible nicht existiert, aber polylineVisible schon, übernehmen wir den Wert
if (storedKabelstreckenVisible === null && storedPolylineVisible !== null) {
storedKabelstreckenVisible = storedPolylineVisible;
localStorage.setItem("kabelstreckenVisible", storedPolylineVisible);
}
if (storedKabelstreckenVisible !== null) {
const shouldBeVisible = storedKabelstreckenVisible === "true";
setKabelstreckenVisible(shouldBeVisible);
// Beide localStorage-Variablen synchronisieren
localStorage.setItem("polylineVisible", shouldBeVisible.toString());
// Redux für Konsistenz setzen
dispatch(setPolylineVisible(shouldBeVisible));
// Event auslösen nach dem Laden
setTimeout(() => {
const event = new Event("polylineVisibilityChanged");
window.dispatchEvent(event);
}, 200);
}
// Kartenspezifischer localStorage-Key verwenden
const mapId = localStorage.getItem("currentMapId");
const userId = localStorage.getItem("currentUserId");