'use client'; import { useEffect, useState, useRef } from 'react'; import { apiClient } from '@/utils/api'; interface FileObject { path: string; size: number; } export default function useFilesList(jobID: string, reloadInterval: null | number = null) { const [files, setFiles] = useState([]); const didInitialLoadRef = useRef(false); const [status, setStatus] = useState<'idle' | 'loading' | 'success' | 'error' | 'refreshing'>('idle'); const refreshFiles = () => { let loadStatus: 'loading' | 'refreshing' = 'loading'; if (didInitialLoadRef.current) { loadStatus = 'refreshing'; } setStatus(loadStatus); apiClient .get(`/api/jobs/${jobID}/files`) .then(res => res.data) .then(data => { console.log('Fetched files:', data); if (data.files) { setFiles(data.files); } setStatus('success'); didInitialLoadRef.current = true; }) .catch(error => { console.error('Error fetching datasets:', error); setStatus('error'); }); }; useEffect(() => { refreshFiles(); if (reloadInterval) { const interval = setInterval(() => { refreshFiles(); }, reloadInterval); return () => { clearInterval(interval); }; } }, [jobID]); return { files, setFiles, status, refreshFiles }; }