Fix new Frontend 10

This commit is contained in:
Urtzi Alfaro
2025-08-04 13:28:43 +02:00
parent e052a72161
commit d13b8657df
3 changed files with 124 additions and 24 deletions

View File

@@ -13,7 +13,13 @@ import type {
SingleProductTrainingRequest,
} from '../types';
export const useTraining = () => {
interface UseTrainingOptions {
disablePolling?: boolean; // New option to disable HTTP status polling
}
export const useTraining = (options: UseTrainingOptions = {}) => {
const { disablePolling = false } = options;
const [jobs, setJobs] = useState<TrainingJobResponse[]>([]);
const [currentJob, setCurrentJob] = useState<TrainingJobResponse | null>(null);
const [models, setModels] = useState<ModelInfo[]>([]);
@@ -186,12 +192,19 @@ export const useTraining = () => {
}
}, []);
// Auto-refresh job status for running jobs
useEffect(() => {
// Skip polling if disabled or no running jobs
if (disablePolling) {
console.log('🚫 HTTP status polling disabled - using WebSocket instead');
return;
}
const runningJobs = jobs.filter(job => job.status === 'running' || job.status === 'pending');
if (runningJobs.length === 0) return;
console.log('🔄 Starting HTTP status polling for', runningJobs.length, 'jobs');
const interval = setInterval(async () => {
for (const job of runningJobs) {
try {
@@ -203,8 +216,12 @@ export const useTraining = () => {
}
}, 5000); // Refresh every 5 seconds
return () => clearInterval(interval);
}, [jobs, getTrainingJobStatus]);
return () => {
console.log('🛑 Stopping HTTP status polling');
clearInterval(interval);
};
}, [jobs, getTrainingJobStatus, disablePolling]);
return {
jobs,