import React, { ReactNode, useEffect, useRef, useState } from 'react'; import { Box, Chip, Icon, IconButton, Icons, Input, Switch, Text, color, config, toRem, } from 'folds'; import { UploadCard, UploadCardError, UploadCardProgress } from './UploadCard'; import { UploadStatus, UploadSuccess, useBindUploadAtom } from '../../state/upload'; import { useMatrixClient } from '../../hooks/useMatrixClient'; import { TUploadContent, tryDeleteMxcContent } from '../../utils/matrix'; import { bytesToSize, getFileTypeIcon } from '../../utils/common'; import { roomUploadAtomFamily, TUploadItem, TUploadMetadata, } from '../../state/room/roomInputDrafts'; import { useObjectURL } from '../../hooks/useObjectURL'; import { useMediaConfig } from '../../hooks/useMediaConfig'; import { compressImage, formatFileSize, isCompressible } from '../../utils/imageCompression'; type PreviewImageProps = { fileItem: TUploadItem; }; function PreviewImage({ fileItem }: PreviewImageProps) { const { originalFile, metadata } = fileItem; const fileUrl = useObjectURL(originalFile); return ( {(originalFile ); } type PreviewVideoProps = { fileItem: TUploadItem; }; function PreviewVideo({ fileItem }: PreviewVideoProps) { const { originalFile, metadata } = fileItem; const fileUrl = useObjectURL(originalFile); return (