// /hooks/useMapComponentState.js // POI -> Kontextmenü -> POI bearbeiten -> Dropdown Geräteauswahl import { useState, useEffect } from "react"; import { useSelector } from "react-redux"; export const useMapComponentState = () => { const [poiTypData, setPoiTypData] = useState([]); const [isPoiTypLoaded, setIsPoiTypLoaded] = useState(false); const [deviceName, setDeviceName] = useState(""); const [locationDeviceData, setLocationDeviceData] = useState([]); const [priorityConfig, setPriorityConfig] = useState([]); const [menuItemAdded, setMenuItemAdded] = useState(false); // ✅ Redux: Zustand der Sichtbarkeit des POI-Layers const poiLayerVisible = useSelector((state) => state.poiLayerVisible.visible); useEffect(() => { const fetchPoiTypData = async () => { if (process.env.NEXT_PUBLIC_USE_MOCK_API === "true") { console.log("⚠️ Mock-API: POI Typen geladen (Mock)"); const mockData = [ { idPoiTyp: 1, name: "Mock Zähleranschlusskasten", icon: 4, onlySystemTyp: 0 }, { idPoiTyp: 2, name: "Mock Geräteschrank", icon: 2, onlySystemTyp: 0 }, { idPoiTyp: 4, name: "Mock Parkplatz", icon: 3, onlySystemTyp: 0 }, { idPoiTyp: 6, name: "Mock Zufahrt", icon: 4, onlySystemTyp: 0 }, { idPoiTyp: 20, name: "Mock Zählgerät", icon: 5, onlySystemTyp: 110 }, { idPoiTyp: 21, name: "Mock Messschleife", icon: 6, onlySystemTyp: 110 }, { idPoiTyp: 25, name: "Mock Sonstige", icon: 0, onlySystemTyp: 0 }, { idPoiTyp: 33, name: "Mock Autobahnauffahrt", icon: 4, onlySystemTyp: null }, ]; setPoiTypData(mockData); setIsPoiTypLoaded(true); return; } try { const response = await fetch("/api/talas_v5_DB/poiTyp/readPoiTyp"); const data = await response.json(); setPoiTypData(data); setIsPoiTypLoaded(true); } catch (error) { console.error("❌ Fehler beim Abrufen der POI-Typen:", error); setPoiTypData([]); setIsPoiTypLoaded(true); } }; const fetchDeviceData = async () => { try { const protocol = window.location.protocol; const host = window.location.hostname; const apiBaseUrl = `${protocol}//${host}/talas5/ClientData/WebServiceMap.asmx`; const params = new URLSearchParams(window.location.search); const idMap = params.get("m"); const url = `${apiBaseUrl}/GisStationsStatic?idMap=${idMap}`; console.log("🌐 Geräte-API:", url); const response = await fetch(url); const data = await response.json(); setLocationDeviceData(data.Points || []); if (data.Points && data.Points.length > 0) { setDeviceName(data.Points[0].LD_Name); } } catch (error) { console.error("❌ Fehler beim Abrufen der Gerätedaten:", error); } }; fetchPoiTypData(); fetchDeviceData(); }, []); return { poiTypData, isPoiTypLoaded, deviceName, setDeviceName, locationDeviceData, setLocationDeviceData, priorityConfig, setPriorityConfig, menuItemAdded, setMenuItemAdded, poiLayerVisible, }; };