import React, { useEffect } from 'react'; import { Modal, Button, List, Progress, Typography, message, Flex } from 'antd'; import { CopyOutlined, CheckCircleFilled, CloseCircleFilled } from '@ant-design/icons'; import type { UploadFile } from '../../hooks/useUploader'; interface UploadModalProps { visible: boolean; files: UploadFile[]; onClose: () => void; onStartUpload: () => void; } const UploadModal: React.FC = ({ visible, files, onClose, onStartUpload }) => { const allSuccess = files.every(f => f.status === 'success'); useEffect(() => { if (visible && files.length > 0 && files.every(f => f.status === 'pending')) { onStartUpload(); } }, [visible, files, onStartUpload]); const handleCopy = (text: string) => { navigator.clipboard.writeText(text); message.success('链接已复制到剪贴板'); }; const renderStatus = (file: UploadFile) => { switch (file.status) { case 'uploading': return ; case 'success': return ( 上传成功 , ]} > ( { e.currentTarget.style.backgroundColor = 'var(--ant-color-fill-tertiary, #f0f0f0)'; }} onMouseLeave={(e) => { e.currentTarget.style.backgroundColor = 'transparent'; }} > {file.file.name}
{renderStatus(file)}
)} /> ); }; export default UploadModal;