diff --git a/src/components/metadata-remover/HeroSection.tsx b/src/components/metadata-remover/HeroSection.tsx index 5ec6e0d6d..1874ce1f2 100644 --- a/src/components/metadata-remover/HeroSection.tsx +++ b/src/components/metadata-remover/HeroSection.tsx @@ -4,7 +4,7 @@ import { Transition } from '@headlessui/react'; import { CheckCircle } from '@phosphor-icons/react'; import Image from 'next/legacy/image'; import { MetadataRemoverText } from '@/assets/types/metadata-remover'; -import { removeMetadata as removeFileMetadata } from '@/lib/metadataRemover'; +import { removeMetadata as removeFileMetadata, SUPPORTED_TYPES } from '@/lib/metadataRemover'; interface HeroSectionProps { textContent: MetadataRemoverText['HeroSection']; @@ -16,9 +16,10 @@ const HeroSection = ({ textContent }: HeroSectionProps): JSX.Element => { const [isProcessing, setIsProcessing] = useState(false); const [isError, setIsError] = useState(false); const [isProcessFinished, setIsProcessFinished] = useState(false); - const [setProcessResult] = useState(null); + const [processResult, setProcessResult] = useState(null); const [dragEnter, setDragEnter] = useState(false); const [fileSizeLimitReached, setFileSizeLimitReached] = useState(false); + const [isUnsupportedType, setIsUnsupportedType] = useState(false); const [downloadUrl, setDownloadUrl] = useState(null); const uploadFileRef = createRef(); const [file, setFile] = useState(null); @@ -93,11 +94,13 @@ const HeroSection = ({ textContent }: HeroSectionProps): JSX.Element => { setIsProcessing(false); setIsProcessFinished(false); setIsError(false); + setIsUnsupportedType(false); setFile(null); }; const handleCancelProcess = () => { setIsSelectedFile(false); + setIsUnsupportedType(false); }; const handleConfirmProcess = () => { @@ -110,11 +113,15 @@ const HeroSection = ({ textContent }: HeroSectionProps): JSX.Element => { if (fileInput?.files) { setDragEnter(false); setFileSizeLimitReached(false); + setIsUnsupportedType(false); setIsSelectedFile(true); - if (fileInput.files[0] && fileInput.files[0].size >= maxFileSize) { + const selectedFile = fileInput.files[0]; + if (selectedFile && !SUPPORTED_TYPES.includes(selectedFile.type)) { + setIsUnsupportedType(true); + } else if (selectedFile && selectedFile.size >= maxFileSize) { setFileSizeLimitReached(true); } else { - setFile(fileInput.files[0]); + setFile(selectedFile); } } else { console.error('No files to process'); @@ -303,7 +310,35 @@ const HeroSection = ({ textContent }: HeroSectionProps): JSX.Element => { ) : ( <> - {fileSizeLimitReached ? ( + {isUnsupportedType ? ( + <> +
+ +
+
+

{textContent.error.title}

+

File type not supported

+
+ +
+
+
+ + ) : fileSizeLimitReached ? ( <>