tfrere's picture
update intro | fix evaluation
a86c1f9
raw
history blame
2.17 kB
import { useState, useRef, useEffect } from "react";
// Simulation time in milliseconds for pre-calculated documents
const SIMULATION_DURATION = 8000; // 8 secondes au total
const STEP_DURATION = SIMULATION_DURATION / 5; // Durée de chaque étape
// Starting messages with their timing
const STARTING_MESSAGES = [
{ message: "Initializing evaluation environment", step: 1, totalSteps: 5 },
{ message: "Finding available model providers", step: 2, totalSteps: 5 },
{ message: "Starting evaluation process", step: 3, totalSteps: 5 },
{ message: "Evaluating models", step: 4, totalSteps: 5 },
{ message: "Storing evaluation results", step: 5, totalSteps: 5 },
];
export const useSimulation = (onComplete, shouldStart = false) => {
const [startingMessageIndex, setStartingMessageIndex] = useState(0);
const [evaluationComplete, setEvaluationComplete] = useState(false);
const timeoutsRef = useRef([]);
const hasInitializedRef = useRef(false);
// Effet pour démarrer la simulation si shouldStart est true
useEffect(() => {
if (!shouldStart || hasInitializedRef.current) return;
// Marquer comme initialisé
hasInitializedRef.current = true;
console.log("Simulation starting with shouldStart =", shouldStart);
// Programmer des timeouts séquentiels pour chaque étape
for (let i = 1; i < STARTING_MESSAGES.length; i++) {
const timeout = setTimeout(() => {
console.log(`Setting message index to ${i}`);
setStartingMessageIndex(i);
}, i * STEP_DURATION);
timeoutsRef.current.push(timeout);
}
// Programmer la fin de la simulation
const completeTimeout = setTimeout(() => {
console.log("Completing simulation");
setEvaluationComplete(true);
if (onComplete) {
onComplete();
}
}, SIMULATION_DURATION);
timeoutsRef.current.push(completeTimeout);
return () => {
// Nettoyer tous les timeouts lors du démontage
timeoutsRef.current.forEach(clearTimeout);
};
}, [shouldStart, onComplete]);
return {
startingMessageIndex,
evaluationComplete,
currentMessage: STARTING_MESSAGES[startingMessageIndex],
};
};