import React from 'react'; import { Chip, Icon, IconButton, Icons, Text, color } from 'folds'; import { UploadCard, UploadCardError, UploadCardProgress } from './UploadCard'; import { TUploadAtom, UploadStatus, useBindUploadAtom } from '../../state/upload'; import { useMatrixClient } from '../../hooks/useMatrixClient'; import { TUploadContent } from '../../utils/matrix'; import { getFileTypeIcon } from '../../utils/common'; type UploadCardRendererProps = { file: TUploadContent; isEncrypted?: boolean; uploadAtom: TUploadAtom; onRemove: (file: TUploadContent) => void; }; export function UploadCardRenderer({ file, isEncrypted, uploadAtom, onRemove, }: UploadCardRendererProps) { const mx = useMatrixClient(); const { upload, startUpload, cancelUpload } = useBindUploadAtom( mx, file, uploadAtom, isEncrypted ); if (upload.status === UploadStatus.Idle) startUpload(); const removeUpload = () => { cancelUpload(); onRemove(file); }; return ( } after={ <> {upload.status === UploadStatus.Error && ( Retry )} } bottom={ <> {upload.status === UploadStatus.Idle && ( )} {upload.status === UploadStatus.Loading && ( )} {upload.status === UploadStatus.Error && ( {upload.error.message} )} } > {file.name} {upload.status === UploadStatus.Success && ( )} ); }