import useDownloads, { useDownloadsProps } from '~/hooks/useDownloads' import HorizontalBarChart from './HorizontalBarChart' import { extractFileName } from '~/lib/util' import StyledSectionHeader from './StyledSectionHeader' import { IconAlertTriangle, IconX } from '@tabler/icons-react' import api from '~/lib/api' interface ActiveDownloadProps { filetype?: useDownloadsProps['filetype'] withHeader?: boolean } const ActiveDownloads = ({ filetype, withHeader = false }: ActiveDownloadProps) => { const { data: downloads, invalidate } = useDownloads({ filetype }) const handleDismiss = async (jobId: string) => { await api.removeDownloadJob(jobId) invalidate() } return ( <> {withHeader && }
{downloads && downloads.length > 0 ? ( downloads.map((download) => (
{download.status === 'failed' ? (

{extractFileName(download.filepath) || download.url}

Download failed{download.failedReason ? `: ${download.failedReason}` : ''}

) : ( )}
)) ) : (

No active downloads

)}
) } export default ActiveDownloads