diff --git a/CHANGELOG.md b/CHANGELOG.md index 758df02f9..e84f456ac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,25 @@ Alle bedeutenden Änderungen an diesem Projekt werden in dieser Datei dokumentie --- +## [1.1.85] – 2025-05-21 + +### Changed + +- Recoil-Atom `readPoiMarkersStore` vollständig durch Redux-Slice ersetzt +- Betroffene Komponenten: + - `index.js` – verwendet `useSelector` und `dispatch(setPoiMarkers(...))` statt `useRecoilState` + - `AddPOIModal.js` – entfernt Recoil, nutzt jetzt Redux `setPoiMarkers(...)` (optional) +- Redux-Store aktualisiert: + - Slice `readPoiMarkersStoreSlice` eingebunden + +### Added + +- Redux-Slice `readPoiMarkersStoreSlice.js` mit Actions: + - `setPoiMarkers(data)` + - `clearPoiMarkers()` + +--- + ## [1.1.84] – 2025-05-20 ### Changed diff --git a/components/AddPOIModal.js b/components/AddPOIModal.js index cd9b96831..237e57865 100644 --- a/components/AddPOIModal.js +++ b/components/AddPOIModal.js @@ -1,9 +1,7 @@ // components/AddStationPopup.js import React, { useState, useEffect, use } from "react"; import ReactDOM from "react-dom"; -import { useRecoilValue, useRecoilState, useSetRecoilState } from "recoil"; -import { readPoiMarkersStore } from "../redux/slices/readPoiMarkersStoreSlice.js"; -import { poiReadFromDbTriggerAtom } from "../redux/slices/poiReadFromDbTriggerSlice.js"; +import { setPoiMarkers } from "../redux/slices/readPoiMarkersStoreSlice"; import { selectGisStationsStatic } from "../redux/slices/webService/gisStationsStaticSlice"; import { useDispatch, useSelector } from "react-redux"; import { fetchPoiTypes } from "../redux/slices/db/poiTypesSlice"; @@ -20,7 +18,7 @@ const ShowAddStationPopup = ({ onClose, map, latlng }) => { const [latitude] = useState(latlng.lat.toFixed(5)); const [longitude] = useState(latlng.lng.toFixed(5)); - const setLoadData = useSetRecoilState(readPoiMarkersStore); + dispatch(setPoiMarkers(data)); const [deviceName, setDeviceName] = useState(""); //----------------------------------------------------- @@ -85,10 +83,9 @@ const ShowAddStationPopup = ({ onClose, map, latlng }) => { }); if (response.ok) { - setTrigger((trigger) => { - dispatch(incrementTrigger()); - onClose(); - }); + dispatch(incrementTrigger()); + onClose(); + window.location.reload(); } else { console.error("Fehler beim Hinzufügen des POI"); } diff --git a/config/appVersion.js b/config/appVersion.js index 280d503ab..2b162b8cc 100644 --- a/config/appVersion.js +++ b/config/appVersion.js @@ -1,2 +1,2 @@ // /config/appVersion -export const APP_VERSION = "1.1.85"; +export const APP_VERSION = "1.1.86"; diff --git a/pages/index.js b/pages/index.js index 9c8bce363..091e3e9cc 100644 --- a/pages/index.js +++ b/pages/index.js @@ -2,15 +2,16 @@ import React, { useEffect, useState } from "react"; import dynamic from "next/dynamic"; import { useRecoilState, useRecoilValue } from "recoil"; -import { readPoiMarkersStore } from "../redux/slices/readPoiMarkersStoreSlice.js"; -import { useSelector } from "react-redux"; +import { setPoiMarkers } from "../redux/slices/readPoiMarkersStoreSlice.js"; +import { useSelector, useDispatch } from "react-redux"; const MapComponentWithNoSSR = dynamic(() => import("../components/mainComponent/MapComponent"), { ssr: false }); const TestScriptWithNoSSR = dynamic(() => import("../components/TestScript"), { ssr: false }); export default function Home() { const poiReadTrigger = useSelector((state) => state.poiReadFromDbTrigger.trigger); - const [locations, setLocations] = useRecoilState(readPoiMarkersStore); + const dispatch = useDispatch(); + const locations = useSelector((state) => state.readPoiMarkersStore.poiMarkers); const [mParam, setMParam] = useState(""); const [uParam, setUParam] = useState(""); @@ -22,7 +23,7 @@ export default function Home() { throw new Error("Fehler beim Laden der Standortdaten"); } const data = await response.json(); - setLocations(data); + dispatch(setPoiMarkers(data)); } catch (error) { console.error(error.message); } diff --git a/redux/slices/readPoiMarkersStoreSlice.js b/redux/slices/readPoiMarkersStoreSlice.js index 89d7d45cc..13631449c 100644 --- a/redux/slices/readPoiMarkersStoreSlice.js +++ b/redux/slices/readPoiMarkersStoreSlice.js @@ -1,17 +1,22 @@ -//redux/slices/readPoiMarkersStoreSlice.js -import { atom } from "recoil"; +// redux/slices/readPoiMarkersStoreSlice.js +import { createSlice } from "@reduxjs/toolkit"; -const storeKey = "readPoiMarkersStore"; +const initialState = { + poiMarkers: [], +}; -// Verhindert doppelte Registrierung bei HMR -export const readPoiMarkersStore = - globalThis.readPoiMarkersStore || - atom({ - key: storeKey, - default: [], - }); +const readPoiMarkersStoreSlice = createSlice({ + name: "readPoiMarkersStore", + initialState, + reducers: { + setPoiMarkers: (state, action) => { + state.poiMarkers = action.payload; + }, + clearPoiMarkers: (state) => { + state.poiMarkers = []; + }, + }, +}); -// Speichert das Atom im globalen Namespace (nur in Dev) -if (process.env.NODE_ENV !== "production") { - globalThis.readPoiMarkersStore = readPoiMarkersStore; -} +export const { setPoiMarkers, clearPoiMarkers } = readPoiMarkersStoreSlice.actions; +export default readPoiMarkersStoreSlice.reducer; diff --git a/redux/store.js b/redux/store.js index a03a348f4..4e42bd65c 100644 --- a/redux/store.js +++ b/redux/store.js @@ -18,6 +18,7 @@ import mapLayersReducer from "./slices/mapLayersSlice"; import poiLayerVisibleReducer from "./slices/poiLayerVisibleSlice"; import poiReadFromDbTriggerReducer from "./slices/poiReadFromDbTriggerSlice"; import polylineEventsDisabledReducer from "./slices/polylineEventsDisabledSlice"; +import readPoiMarkersStoreReducer from "./slices/readPoiMarkersStoreSlice"; export const store = configureStore({ reducer: { @@ -39,5 +40,6 @@ export const store = configureStore({ poiLayerVisible: poiLayerVisibleReducer, poiReadFromDbTrigger: poiReadFromDbTriggerReducer, polylineEventsDisabled: polylineEventsDisabledReducer, + readPoiMarkersStore: readPoiMarkersStoreReducer, }, });