From f51cf40f6e8f0862486e3c9ed548770346d962e1 Mon Sep 17 00:00:00 2001 From: CANCI0 Date: Tue, 5 Mar 2024 16:15:22 +0100 Subject: [PATCH] =?UTF-8?q?Se=20ha=20a=C3=B1adido=20timeout=20a=20la=20b?= =?UTF-8?q?=C3=BAsqueda=20de=20usuarios=20para=20no=20sobrecargar=20al=20m?= =?UTF-8?q?icroservicio?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- webapp/src/pages/Stats/Stats.js | 179 +++++++++++++++++++------------- 1 file changed, 107 insertions(+), 72 deletions(-) diff --git a/webapp/src/pages/Stats/Stats.js b/webapp/src/pages/Stats/Stats.js index 7ee9da5b..f9e5117c 100644 --- a/webapp/src/pages/Stats/Stats.js +++ b/webapp/src/pages/Stats/Stats.js @@ -1,9 +1,8 @@ -import React, { useState, useEffect } from 'react'; -import axios from 'axios'; -import Nav from '../../components/Nav/Nav.js'; -import Footer from '../../components/Footer/Footer.js'; -import './Stats.css'; - +import React, { useState, useEffect } from "react"; +import axios from "axios"; +import Nav from "../../components/Nav/Nav.js"; +import Footer from "../../components/Footer/Footer.js"; +import "./Stats.css"; const Stats = () => { const [username, setUsername] = useState(localStorage.username); @@ -11,7 +10,6 @@ const Stats = () => { const [isLoading, setIsLoading] = useState(true); const [error, setError] = useState(null); - const fetchStats = () => { setIsLoading(true); fetch(`http://localhost:8001/getstats?user=${username}`) @@ -21,97 +19,134 @@ const Stats = () => { setIsLoading(false); }) .catch((error) => { - console.error('Error al obtener las preguntas:', error); - setError(error.message || 'Ha ocurrido un error al obtener las estadísticas'); + console.error("Error al obtener las preguntas:", error); + setError( + error.message || "Ha ocurrido un error al obtener las estadísticas" + ); setIsLoading(false); }); }; useEffect(() => { - fetch(`http://localhost:8001/getstats?user=${username}`) - .then((response) => response.json()) - .then((data) => { - setStats(data); - setIsLoading(false); - }) - .catch((error) => { - console.error('Error al obtener las preguntas:', error); - setIsLoading(false); - }); + const delayDebounceFn = setTimeout(() => { + fetch(`http://localhost:8001/getstats?user=${username}`) + .then((response) => response.json()) + .then((data) => { + setStats(data); + setIsLoading(false); + }) + .catch((error) => { + console.error("Error al obtener las preguntas:", error); + setIsLoading(false); + }); + }, 2000); + return () => clearTimeout(delayDebounceFn); }, [username]); const handleUsernameChange = (event) => { setUsername(event.target.value); }; - - const handleSearch = () => { - if (username.trim() !== '') { - fetchStats(); - } - }; if (isLoading) { - return
-

Cargando ...

-

Se está consultando su búsqueda, espere unos instantes.

-
+ return ( +
+

Cargando ...

+

Se está consultando su búsqueda, espere unos instantes.

+
+ ); } if (error) { - return <> + return ( + <>