import { useGlobal } from '@/app/GlobalProvider' import prettyBytes from 'pretty-bytes' import ProgressBar from '../ProgressBar' import { formatEtaSmart } from '@/lib/Util' import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' import { faCancel, faPause, faPlay, faTrash } from '@fortawesome/free-solid-svg-icons' import { invoke } from '@tauri-apps/api/core' import { writeVersionsConfig } from '@/lib/BazookaManager' import { notifyUser } from '@/lib/Notifications' import { getCurrentWindow, UserAttentionType } from '@tauri-apps/api/window' export default function DownloadsPopup () { const { downloadProgress, getVersionInfo, setDownloadProgress, downloadQueue, setDownloadQueue, normalConfig, setDownloadedVersionsConfig } = useGlobal() return ( <>

Downloads

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

{v.type == 1 ? 'Mod Manager for ' : v.type == 2 ? 'Mod for ' : null}{' '} {getVersionInfo(v.version)?.displayName}

{v.failed || v.queued ? (
{v.failed ? 'Download failed' : queuePosition === 0 ? 'Starting soon...' : `Queued (Position ${queuePosition + 1})`}
) : v.hash_checking ? ( Verifying file integerty... ) : v.unzipping ? (
Unzipped {v.unzipped} / {v.unzipTotal} files
) : (
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)
)}
) })}
) }