- fetch-Aufrufe entfernt und durch Redux-Selektoren ersetzt - poiTypData über poiTypSlice + fetchPoiTypThunk geladen - locationDeviceData über gisStationsStaticDistrictThunk - priorityConfig über Redux mit fetchPriorityConfigThunk integriert - poiLayerVisible direkt aus Redux-State gelesen - Version auf 1.1.173 erhöht
68 lines
2.2 KiB
JavaScript
68 lines
2.2 KiB
JavaScript
// /hooks/useMapComponentState.js
|
||
|
||
import { useEffect, useState } from "react";
|
||
import { useDispatch, useSelector } from "react-redux";
|
||
|
||
// Redux: POI-Typen
|
||
import { fetchPoiTypThunk } from "../redux/thunks/database/pois/fetchPoiTypThunk";
|
||
import { selectPoiTypData, selectPoiTypStatus } from "../redux/slices/database/pois/poiTypSlice";
|
||
|
||
// Redux: GIS Geräte
|
||
import { fetchGisStationsStaticDistrictThunk } from "../redux/thunks/webservice/fetchGisStationsStaticDistrictThunk";
|
||
import { selectGisStationsStaticDistrict } from "../redux/slices/webservice/gisStationsStaticDistrictSlice";
|
||
|
||
// Redux: priorityConfig
|
||
import { fetchPriorityConfigThunk } from "../redux/thunks/database/fetchPriorityConfigThunk";
|
||
import { selectPriorityConfig } from "../redux/slices/database/priorityConfigSlice";
|
||
|
||
export const useMapComponentState = () => {
|
||
const dispatch = useDispatch();
|
||
|
||
// Redux: Sichtbarkeit des POI-Layers
|
||
const poiLayerVisible = useSelector((state) => state.poiLayerVisible.visible);
|
||
|
||
// Redux: POI-Typen
|
||
const poiTypData = useSelector(selectPoiTypData);
|
||
const poiTypStatus = useSelector(selectPoiTypStatus);
|
||
|
||
// Redux: Geräte
|
||
const locationDeviceData = useSelector(selectGisStationsStaticDistrict);
|
||
const deviceName = locationDeviceData?.Points?.[0]?.LD_Name || "";
|
||
|
||
// Redux: Prioritätskonfiguration
|
||
const priorityConfig = useSelector(selectPriorityConfig);
|
||
|
||
// UI-interner Zustand
|
||
const [menuItemAdded, setMenuItemAdded] = useState(false);
|
||
|
||
// POI-Typen laden
|
||
useEffect(() => {
|
||
if (process.env.NEXT_PUBLIC_USE_MOCK_API === "true") {
|
||
console.warn("⚠️ POI-Typen im Mock-Modus – Redux-Thunk wird nicht ausgeführt.");
|
||
} else if (poiTypStatus === "idle") {
|
||
dispatch(fetchPoiTypThunk());
|
||
}
|
||
}, [dispatch, poiTypStatus]);
|
||
|
||
// GIS Geräte laden
|
||
useEffect(() => {
|
||
dispatch(fetchGisStationsStaticDistrictThunk());
|
||
}, [dispatch]);
|
||
|
||
// PriorityConfig laden
|
||
useEffect(() => {
|
||
dispatch(fetchPriorityConfigThunk());
|
||
}, [dispatch]);
|
||
|
||
return {
|
||
poiTypData,
|
||
isPoiTypLoaded: poiTypStatus === "succeeded",
|
||
deviceName,
|
||
locationDeviceData,
|
||
priorityConfig,
|
||
menuItemAdded,
|
||
setMenuItemAdded,
|
||
poiLayerVisible,
|
||
};
|
||
};
|