Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
File size: 2,018 Bytes
81e0b0c |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
import { useState, useRef, useEffect } from "react";
// Simulation time in milliseconds for pre-calculated documents
const SIMULATION_DURATION = 120000; // 2 minutes
// 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) => {
const [startingMessageIndex, setStartingMessageIndex] = useState(0);
const [evaluationComplete, setEvaluationComplete] = useState(false);
const simulationTimeoutRef = useRef(null);
const startingMessageIntervalRef = useRef(null);
useEffect(() => {
// Configure automatic interval for message changes
startingMessageIntervalRef.current = setInterval(() => {
setStartingMessageIndex((prev) => {
if (prev < STARTING_MESSAGES.length - 1) {
return prev + 1;
}
return prev;
});
}, SIMULATION_DURATION / STARTING_MESSAGES.length);
// Complete after simulation duration
simulationTimeoutRef.current = setTimeout(() => {
setEvaluationComplete(true);
if (startingMessageIntervalRef.current) {
clearInterval(startingMessageIntervalRef.current);
}
setStartingMessageIndex(STARTING_MESSAGES.length - 1);
if (onComplete) {
onComplete();
}
}, SIMULATION_DURATION);
return () => {
if (simulationTimeoutRef.current) {
clearTimeout(simulationTimeoutRef.current);
}
if (startingMessageIntervalRef.current) {
clearInterval(startingMessageIntervalRef.current);
}
};
}, [onComplete]);
return {
startingMessageIndex,
evaluationComplete,
currentMessage: STARTING_MESSAGES[startingMessageIndex],
};
};
|