import CardContainer from "@/components/layout/CardContainer"; import LoadingIcon from "@/components/LoadingIcon"; import { useConfig } from "@/hooks/useConfig"; import { useDataContext } from "@/hooks/useDataContext"; import { DataProvider } from "@/context/DataContext"; import { useEffect, useState } from "react"; import PropTypes from "prop-types"; const Groups = () => { const { config, configLoading } = useConfig(); if (configLoading || !config) return

; const replacedEndpoint = config.appConfig.endpoints.GET_GROUPS; const reqConfig = { baseUrl: `${config.appConfig.endpoints.DATA_URL}${replacedEndpoint}`, devicesUrl: `${config.appConfig.endpoints.DATA_URL}${config.appConfig.endpoints.GET_GROUP_DEVICES}`, }; return ( ); } const GroupsContent = ({ config }) => { const { data, dataLoading, dataError, getData } = useDataContext(); const [devices, setDevices] = useState({}); useEffect(() => { if (!data || data.length === 0) return; const fetchDevices = async () => { const results = {}; await Promise.all(data.map(async group => { const endpoint = config.devicesUrl .replace(':groupId', group.groupId); try { const res = await getData(endpoint); results[group.groupId] = res; } catch (err) { console.error(`Error al obtener dispositivos de ${group.groupId}:`, err); } })); setDevices(results); }; fetchDevices(); }, [config.devicesUrl, data, getData]); if (dataLoading) return

; if (dataError) return

Error al cargar datos: {dataError}

; return ( { const groupDevices = devices[group.groupId]?.data; const deviceCount = groupDevices?.length; return { title: group.groupName, status: `ID: ${group.groupId}`, to: `/groups/${group.groupId}`, styleMode: "override", content: deviceCount != null ? (deviceCount === 1 ? "1 dispositivo" : `${deviceCount} dispositivos`) : "Cargando dispositivos...", className: "col-12 col-md-6 col-lg-4", }; })} /> ); } GroupsContent.propTypes = { config: PropTypes.shape({ devicesUrl: PropTypes.string.isRequired, }).isRequired, }; export default Groups;