diff --git a/questionservice/question-service.js b/questionservice/question-service.js index 4ecc5df4..93d208d3 100644 --- a/questionservice/question-service.js +++ b/questionservice/question-service.js @@ -7,6 +7,7 @@ const GeneratorChooser = require("./questionGen/GeneratorChooser"); const app = express(); const port = 8003; +let generadoresCargados = false; const gen = new GeneratorChooser(); const MAX_QUESTIONS = 10000; @@ -16,6 +17,13 @@ app.use(bodyParser.json()); app.use(cors()); +app.use((req, res, next) => { + if (!generadoresCargados) { + return res.status(500).json({ error: "Los generadores de preguntas aún no se han cargado. Por favor, inténtalo de nuevo más tarde." }); + } + next(); +}); + app.set("json spaces", 40); app.get("/questions", async (req, res) => { @@ -39,6 +47,7 @@ const server = app.listen(port, async () => { gen.loadGenerators() .then(() => { console.log("Generators loaded successfully!"); + generadoresCargados = true; }) .catch((error) => { console.error("Error al cargar los generadores de preguntas:", error); diff --git a/webapp/src/pages/Bateria/Bateria.js b/webapp/src/pages/Bateria/Bateria.js index 7a1d0bb3..27dd0f49 100644 --- a/webapp/src/pages/Bateria/Bateria.js +++ b/webapp/src/pages/Bateria/Bateria.js @@ -2,7 +2,6 @@ import React, { useState, useEffect } from "react"; import "./Bateria.css"; import Nav from "../../components/Nav/Nav.js"; import Footer from "../../components/Footer/Footer.js"; -import Preguntas from "./prueba"; import { Link, useNavigate } from "react-router-dom"; const JuegoPreguntas = () => { @@ -17,7 +16,12 @@ const JuegoPreguntas = () => { useEffect(() => { fetch("http://localhost:8003/questions?tematica=all&n=10000") - .then((response) => response.json()) + .then((response) => { + if (!response.ok) { + navigate("/home"); + } + response.json(); + }) .then((data) => { setPreguntas(data); setPreguntaActual(data[0]); @@ -25,16 +29,15 @@ const JuegoPreguntas = () => { }) .catch((error) => { console.error("Error al obtener las preguntas:", error); - alert("Hubo un error al cargar las preguntas"); navigate("/home"); }); }, []); useEffect(() => { - if(isLoading){ - return + if (isLoading) { + return; } - if (tiempoRestante === 0 || indicePregunta === Preguntas.length) { + if (tiempoRestante === 0 || indicePregunta === preguntas.length) { setJuegoTerminado(true); } const timer = setInterval(() => { @@ -47,7 +50,7 @@ const JuegoPreguntas = () => { if (respuesta === preguntaActual.correcta) { setPuntuacion(puntuacion + 1); } - if (indicePregunta + 1 < Preguntas.length) { + if (indicePregunta + 1 < preguntas.length) { setIndicePregunta(indicePregunta + 1); } else { setJuegoTerminado(true); diff --git a/webapp/src/pages/Clasico/Clasico.js b/webapp/src/pages/Clasico/Clasico.js index 7258e0a3..2081c534 100644 --- a/webapp/src/pages/Clasico/Clasico.js +++ b/webapp/src/pages/Clasico/Clasico.js @@ -25,7 +25,12 @@ const JuegoPreguntas = () => { useEffect(() => { fetch("http://localhost:8003/questions?tematica=all&n=10") - .then((response) => response.json()) + .then((response) => { + if (!response.ok) { + navigate("/home"); + } + response.json(); + }) .then((data) => { setPreguntas(data); setPreguntaActual(data[0]); @@ -33,7 +38,6 @@ const JuegoPreguntas = () => { }) .catch((error) => { console.error("Error al obtener las preguntas:", error); - alert("Hubo un error al cargar las preguntas"); navigate("/home"); }); }, []);