Files
nodeMap/redux/slices/database/polylines/polylineLayerVisibleSlice.js
2025-08-22 09:46:31 +02:00

80 lines
2.8 KiB
JavaScript

// /redux/slices/database7polylines/polylineLayerVisibleSlice.js
import { createSlice } from "@reduxjs/toolkit";
// Thunk to initialize polyline visibility from localStorage using mapId/userId from URL
export const initializePolylineFromLocalStorageThunk = () => dispatch => {
try {
const params = new URLSearchParams(window.location.search);
const mapId = params.get("m");
const userId = params.get("u");
if (mapId && userId) {
const key = `polylineVisible_m${mapId}_u${userId}`;
const stored = localStorage.getItem(key);
const visible = stored === "true";
dispatch(initializePolylineFromLocalStorage(visible));
// Optional: log for debugging
console.log(
`Redux: Initialized polyline visibility from localStorage key '${key}':`,
visible
);
}
} catch (e) {
console.error("Error initializing polyline visibility from localStorage:", e);
}
};
const initialState = {
visible: false, // Standardwert - wird in der Komponente aus localStorage überschrieben
isInitialized: false, // Flag um zu verfolgen, ob der Wert aus localStorage geladen wurde
};
const polylineLayerVisibleSlice = createSlice({
name: "polylineLayerVisible",
initialState,
reducers: {
setPolylineVisible: (state, action) => {
state.visible = action.payload;
state.isInitialized = true;
// Save to localStorage using mapId/userId key
try {
const params = new URLSearchParams(window.location.search);
const mapId = params.get("m");
const userId = params.get("u");
if (mapId && userId) {
const key = `polylineVisible_m${mapId}_u${userId}`;
localStorage.setItem(key, action.payload.toString());
console.log(
"[Redux/setPolylineVisible] payload:",
action.payload,
"key:",
key,
"localStorage:",
localStorage.getItem(key)
);
}
} catch (e) {
// fallback: do nothing
}
console.log("💾 Redux: setPolylineVisible called with:", action.payload);
},
initializePolylineFromLocalStorage: (state, action) => {
// Diese Action wird nur beim Initialisieren aus localStorage verwendet
state.visible = action.payload;
state.isInitialized = true;
console.log(
"🔧 Redux: initializePolylineFromLocalStorage called with:",
action.payload,
"visible:",
state.visible
);
},
},
});
export const { setPolylineVisible, initializePolylineFromLocalStorage } =
polylineLayerVisibleSlice.actions;
export const selectPolylineVisible = state => state.polylineLayerVisible.visible;
export const selectPolylineInitialized = state => state.polylineLayerVisible.isInitialized;
export default polylineLayerVisibleSlice.reducer;