fix: Duplizierte Kontextmenü-Einträge verhindert und Cleanup hinzugefügt

- Kontextmenü wird jetzt nur einmal hinzugefügt, wenn es noch nicht existiert.
- Vor dem Hinzufügen wird geprüft, ob bereits Einträge existieren, um Duplikate zu vermeiden.
- Kontextmenü wird entfernt, wenn außerhalb geklickt wird, um Speicherlecks zu verhindern.
- Nutzung eines `Set()` für Menü-IDs, um doppelte Einträge sicher zu verhindern.
This commit is contained in:
ISA
2025-03-11 16:19:11 +01:00
parent b8e3385fff
commit 449d19a728
10 changed files with 279 additions and 141 deletions

View File

@@ -0,0 +1,14 @@
// redux/slices/selectedDeviceSlice.js
import { createSlice } from "@reduxjs/toolkit";
export const selectedDeviceSlice = createSlice({
name: "selectedDevice",
initialState: null,
reducers: {
setSelectedDevice: (state, action) => action.payload, // Speichert Device-Daten
clearSelectedDevice: () => null, // Entfernt das Gerät aus dem State
},
});
export const { setSelectedDevice, clearSelectedDevice } = selectedDeviceSlice.actions;
export default selectedDeviceSlice.reducer;

View File

@@ -1,8 +1,14 @@
// redux/slices/selectedPoiSlice.js
//Ist gedacht um ausgewählte Poi Informationen zu speichern und zu PoiUpdateModal.js zu übergeben
import { atom } from "recoil";
import { createSlice } from "@reduxjs/toolkit";
export const selectedPoiState = atom({
key: "poiState", // Einzigartiger Key (mit der gesamten Anwendung)
default: null, // Standardwert
export const selectedPoiSlice = createSlice({
name: "selectedPoi",
initialState: null,
reducers: {
setSelectedPoi: (state, action) => action.payload, // Speichert POI-Daten
clearSelectedPoi: () => null, // Entfernt POI aus dem State
},
});
export const { setSelectedPoi, clearSelectedPoi } = selectedPoiSlice.actions;
export default selectedPoiSlice.reducer;

View File

@@ -12,6 +12,8 @@ import gisStationsStaticReducer from "./slices/webService/gisStationsStaticSlice
import poiTypesReducer from "./slices/db/poiTypesSlice";
import addPoiOnPolylineReducer from "./slices/addPoiOnPolylineSlice";
import polylineContextMenuReducer from "./slices/polylineContextMenuSlice";
import selectedPoiReducer from "./slices/selectedPoiSlice";
import selectedDeviceReducer from "./slices/selectedDeviceSlice";
export const store = configureStore({
reducer: {
@@ -27,5 +29,7 @@ export const store = configureStore({
poiTypes: poiTypesReducer,
addPoiOnPolyline: addPoiOnPolylineReducer,
polylineContextMenu: polylineContextMenuReducer,
selectedPoi: selectedPoiReducer,
selectedDevice: selectedDeviceReducer,
},
});