import React from 'react' import DownloadHandler from '../../../utils/download' import Tr from '../../../utils/language' import './ProgressBar.css' interface IProps { downloadManager: DownloadHandler withStats?: boolean } interface IState { average: number files: number extracting: number total: number speed: string } /** * This component differes because it averages all downloads together */ export default class ProgressBar extends React.Component { constructor(props: IProps) { super(props) const { average, files, extracting, totalSize } = this.props.downloadManager.getTotalAverage() this.state = { average, files, extracting, total: totalSize, speed: '0 B/s', } } componentDidMount() { // Periodically check the progress of passed file path setInterval(() => { const prog = this.props.downloadManager.getTotalAverage() this.setState({ average: prog?.average || 0, files: prog?.files, extracting: prog?.extracting, total: prog?.totalSize || 0, speed: prog?.speed || '0 B/s', }) }, 200) } render() { return (
{ // Handles no files downloading if (this.state.files === 0 || this.state.average >= 100) { return '100' } if (this.state.total <= 0) { return '0' } return this.state.average })()}%`, }} >
{(this.props.withStats === undefined || this.props.withStats) && (
{this.state.files} ({this.state.speed})
{this.state.extracting}
)}
) } }