Spaces:
Paused
Paused
'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<FileObject[]>([]); | |
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 }; | |
} | |