// /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 { // Prüfe globales Nutzer-Flag if (typeof window !== "undefined" && window.userToggledPolyline) { console.log( "[Redux] Initialisierung abgebrochen: Nutzer hat Polyline bereits manuell geändert." ); return; } 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 if (typeof window !== "undefined" && window.userToggledPolyline) { console.log( "[Redux] Initialisierung im Reducer abgebrochen: Nutzer hat Polyline bereits manuell geändert." ); return; } 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;