80 lines
2.8 KiB
JavaScript
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;
|