66 lines
2.0 KiB
JavaScript
66 lines
2.0 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 (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,
|
|
};
|
|
};
|