Added checkpoint downloader

This commit is contained in:
Jaret Burkett
2025-02-22 16:48:15 -07:00
parent 6e19e7449e
commit a280f78c69
7 changed files with 303 additions and 2 deletions

View File

@@ -0,0 +1,52 @@
'use client';
import { useEffect, useState, useRef } from 'react';
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);
fetch(`/api/jobs/${jobID}/files`)
.then(res => res.json())
.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 };
}

View File

@@ -1,7 +1,6 @@
'use client';
import { useEffect, useState } from 'react';
import { Job } from '@prisma/client';
export default function useSampleImages(jobID: string, reloadInterval: null | number = null) {
const [sampleImages, setSampleImages] = useState<string[]>([]);