import { useGlobal } from '@/app/GlobalProvider' import prettyBytes from 'pretty-bytes' import ProgressBar from '../ProgressBar' import { formatEtaSmart } from '@/lib/Util' export default function DownloadsPopup () { const { downloadProgress, getVersionInfo, setDownloadProgress, downloadQueue, setDownloadQueue } = useGlobal() return ( <>

Downloads

{downloadProgress.map((v, i) => { const queuePosition = downloadQueue.indexOf(v.version) return (

{getVersionInfo(v.version)?.displayName}

{v.failed || v.queued ? (
{v.failed ? 'Download failed' : queuePosition === 0 ? 'Starting soon...' : `Queued (Position ${queuePosition + 1})`}
) : v.hash_checking || v.finishing ? ( {v.hash_checking ? 'Verifying file integerty' : 'Finishing'} ... ) : (
Downloaded{' '} {prettyBytes(v.progressBytes, { minimumFractionDigits: 1, maximumFractionDigits: 1 })}{' '} of{' '} {prettyBytes(v.size, { minimumFractionDigits: 1, maximumFractionDigits: 1 })}{' '} (ETA: {formatEtaSmart(v.etaSecs)} • Speed:{' '} {prettyBytes(v.speed, { minimumFractionDigits: 1, maximumFractionDigits: 1 })} /s)
)}
) })}
) }