diff --git a/src/api/datastage.js b/src/api/datastage.js index 06419a2..7670a8e 100644 --- a/src/api/datastage.js +++ b/src/api/datastage.js @@ -10,14 +10,12 @@ import.meta.env; import { getWithAuth, postWithAuth, patchWithAuth, deleteWithAuth } from '../fetchWithAuth'; const API_BASE = `${import.meta.env.VITE_EFC_API_URL}/datastage/datastages/`; -export async function fetchDatastages() { - const res = await getWithAuth(API_BASE); +export async function fetchDatastages(page = 1, page_size = 10) { + const url = `${API_BASE}?page=${page}&page_size=${page_size}`; + const res = await getWithAuth(url); if (!res.ok) throw new Error('Error al obtener datastages'); const data = await res.json(); - // Si la respuesta es paginada, devolver results - if (data && Array.isArray(data.results)) return data.results; - // Si la respuesta no es un array, devolver array vacío - if (!Array.isArray(data)) return []; + // Si la respuesta es paginada, devolver el objeto completo return data; } diff --git a/src/pages/Datastage.jsx b/src/pages/Datastage.jsx index 5591767..7914c58 100644 --- a/src/pages/Datastage.jsx +++ b/src/pages/Datastage.jsx @@ -116,7 +116,8 @@ function downloadDatastageFile(id, filename) { export default function Datastage() { const focusKeeperRef = useRef(null); - const [datastages, setDatastages] = useState([]); + // datastages will hold the full API response object (with .results and .count) + const [datastages, setDatastages] = useState({ results: [], count: 0 }); const [currentPage, setCurrentPage] = useState(1); const [itemsPerPage, setItemsPerPage] = useState(10); const [selected, setSelected] = useState(null); @@ -150,9 +151,17 @@ export default function Datastage() { setError(null); try { const data = await fetchDatastages(); - setDatastages(data); + // Defensive: if data is not the expected object, fallback to empty + if (data && Array.isArray(data.results)) { + setDatastages(data); + } else if (Array.isArray(data)) { + setDatastages({ results: data, count: data.length }); + } else { + setDatastages({ results: [], count: 0 }); + } } catch (e) { setError(e.message); + setDatastages({ results: [], count: 0 }); } setLoading(false); }; @@ -280,7 +289,7 @@ export default function Datastage() {
Gestiona y visualiza la información de Datastage.