import React, {ReactElement, useEffect, useState} from 'react'; import Job from './api/Job'; import '../styles/monitorMangaList.css'; import {JobType} from "./types/Jobs/IJob"; import '../styles/mangaCover.css' import IDownloadAvailableChaptersJob from "./types/Jobs/IDownloadAvailableChaptersJob"; import Manga from "./api/Manga"; import MangaItem from "./Elements/Manga"; export default function MonitorJobsList({onStartSearch, connectedToBackend, apiUri, checkConnectedInterval} : {onStartSearch() : void, connectedToBackend: boolean, apiUri: string, checkConnectedInterval: number}) { const [MonitoringJobs, setMonitoringJobs] = useState([]); const [joblistUpdateInterval, setJoblistUpdateInterval] = React.useState(undefined); useEffect(() => { if(connectedToBackend) { UpdateMonitoringJobsList(); if(joblistUpdateInterval === undefined){ setJoblistUpdateInterval(setInterval(() => { UpdateMonitoringJobsList(); }, checkConnectedInterval)); } }else{ clearInterval(joblistUpdateInterval); setJoblistUpdateInterval(undefined); } }, [connectedToBackend]); function UpdateMonitoringJobsList(){ if(!connectedToBackend) return; //console.debug("Updating MonitoringJobsList"); Job.GetJobsWithType(apiUri, JobType.DownloadAvailableChaptersJob) .then((jobs) => jobs as IDownloadAvailableChaptersJob[]) .then((jobs) => { if(jobs.length != MonitoringJobs.length || MonitoringJobs.filter(j => jobs.find(nj => nj.jobId == j.jobId)).length > 1 || jobs.filter(nj => MonitoringJobs.find(j => nj.jobId == j.jobId)).length > 1){ setMonitoringJobs(jobs); } }); } function StartSearchMangaEntry() : ReactElement { return (
Blahaj
Add new Manga
+
); } return (
{MonitoringJobs.map((MonitoringJob) => <> )}
); }