import React, { useState, useEffect } from 'react'; import { useDownloadStore } from '../store/useDownloadStore'; import { AlertTriangle } from 'lucide-react'; export const DeleteConfirmationModal: React.FC = () => { const { deleteModalState, closeDeleteModal, removeDownload } = useDownloadStore(); const [errorMessage, setErrorMessage] = useState(''); const [isRemoving, setIsRemoving] = useState(false); useEffect(() => { if (deleteModalState.isOpen) { setIsRemoving(false); setErrorMessage(''); } }, [deleteModalState.isOpen]); if (!deleteModalState.isOpen) return null; const handleCancel = () => { closeDeleteModal(); }; const removeMany = async (deleteFile: boolean) => { const ids = deleteModalState.downloadIds ?? []; if (ids.length === 0) { closeDeleteModal(); return; } setIsRemoving(true); setErrorMessage(''); let succeeded = 0; const failures: string[] = []; for (const id of ids) { try { await removeDownload(id, deleteFile); succeeded += 1; } catch (error) { failures.push(String(error)); } } if (failures.length > 0) { setErrorMessage(`${succeeded} removed, ${failures.length} failed: ${failures[0]}`); setIsRemoving(false); return; } setIsRemoving(false); closeDeleteModal(); }; const handleRemoveFromList = () => removeMany(false); const handleDeleteFile = () => removeMany(true); return (
e.stopPropagation()} >

Remove Download

{`Are you sure you want to remove ${deleteModalState.downloadIds?.length && deleteModalState.downloadIds.length > 1 ? 'these ' + deleteModalState.downloadIds.length + ' items' : 'this item'} from the list? You can also choose to delete the underlying file from your hard drive.`} {errorMessage &&
{errorMessage}
}
); };