import { useGlobal } from '@/providers/GlobalProvider' import prettyBytes from 'pretty-bytes' import ProgressBar from '@/components/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 { notifyUser } from '@/lib/notifications' import { getCurrentWindow, UserAttentionType } from '@tauri-apps/api/window' export default function DownloadsPopup () { const { downloadProgress, setDownloadProgress, downloadQueue, setDownloadQueue, notificationsAllowed, versionsList, modsList, versions, serverVersionList } = useGlobal() return ( <>

Downloads

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

{v.type == 1 ? 'Mod loader for ' : v.type == 2 ? 'Mod for ' : null}{' '} { serverVersionList?.versions.find(vf => vf.id == v.version) ?.displayName }

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