|
'use client'; |
|
|
|
import { useEffect, useState } from 'react'; |
|
import { Job } from '@prisma/client'; |
|
import { apiClient } from '@/utils/api'; |
|
|
|
export default function useJobsList(onlyActive = false) { |
|
const [jobs, setJobs] = useState<Job[]>([]); |
|
const [status, setStatus] = useState<'idle' | 'loading' | 'success' | 'error'>('idle'); |
|
|
|
const refreshJobs = () => { |
|
setStatus('loading'); |
|
apiClient |
|
.get('/api/jobs') |
|
.then(res => res.data) |
|
.then(data => { |
|
console.log('Jobs:', data); |
|
if (data.error) { |
|
console.log('Error fetching jobs:', data.error); |
|
setStatus('error'); |
|
} else { |
|
if (onlyActive) { |
|
data.jobs = data.jobs.filter((job: Job) => job.status === 'running'); |
|
} |
|
setJobs(data.jobs); |
|
setStatus('success'); |
|
} |
|
}) |
|
.catch(error => { |
|
console.error('Error fetching datasets:', error); |
|
setStatus('error'); |
|
}); |
|
}; |
|
useEffect(() => { |
|
refreshJobs(); |
|
}, []); |
|
|
|
return { jobs, setJobs, status, refreshJobs }; |
|
} |
|
|