import React, {useEffect, useState} from 'react'; import IJob, {JobState, JobType} from "./interfaces/Jobs/IJob"; import '../styles/queuePopUp.css'; import '../styles/popup.css'; import Job from "./Job"; import DownloadSingleChapterJob from "./interfaces/Jobs/DownloadSingleChapterJob"; import { ItemDownloadSingleChapterJob } from "./interfaces/IManga"; export default function QueuePopUp({connectedToBackend, children, apiUri} : {connectedToBackend: boolean, children: JSX.Element[], apiUri: string}) { const [WaitingJobs, setWaitingJobs] = React.useState([]); const [RunningJobs, setRunningJobs] = React.useState([]); const [showQueuePopup, setShowQueuePopup] = useState(false); const [queueListInterval, setQueueListInterval] = React.useState(); useEffect(() => { if(!showQueuePopup) return; UpdateMonitoringJobsList(); }, [showQueuePopup]); useEffect(() => { if(connectedToBackend){ UpdateMonitoringJobsList(); setQueueListInterval(setInterval(() => { UpdateMonitoringJobsList(); }, 2000)); }else{ clearInterval(queueListInterval); setQueueListInterval(undefined); } }, [connectedToBackend]); function UpdateMonitoringJobsList(){ Job.GetJobsInState(apiUri, JobState.Waiting) .then((jobs: IJob[]) => { //console.log(jobs); return jobs; }) .then(setWaitingJobs); Job.GetJobsInState(apiUri, JobState.Running) .then((jobs: IJob[]) => { //console.log(jobs); return jobs; }) .then(setRunningJobs); } return (<>
setShowQueuePopup(true)}> {children}
{showQueuePopup ?

Queue Status

Close Search setShowQueuePopup(false)}/>
{RunningJobs.filter(j => j.jobType == JobType.DownloadSingleChapterJob).map(j => )}
{WaitingJobs.filter(j => j.jobType == JobType.DownloadSingleChapterJob).map(j => )}
: <> } ); }