From d10e4f7b6e4bbddb2596c73c31027686f7c018a4 Mon Sep 17 00:00:00 2001 From: Moritz Stueckler <moritz.stueckler@gmail.com> Date: Fri, 30 Apr 2021 19:12:50 +0200 Subject: [PATCH] feat: validate files in form --- src/components/Form/AddPoiForm.tsx | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/components/Form/AddPoiForm.tsx b/src/components/Form/AddPoiForm.tsx index 79798c4..78edfce 100644 --- a/src/components/Form/AddPoiForm.tsx +++ b/src/components/Form/AddPoiForm.tsx @@ -35,8 +35,26 @@ const AddPoiForm: React.FC<Props> = () => { setFormData({ ...formData, [e.target.name]: e.target.value }); }; + const validateFile = (file: File, allowedSize = 5000000, allowedExtensions = ['jpg', 'png']) => { + const { name: fileName, size: fileSize } = file; + + const fileExtension = fileName.split('.').pop(); + if (fileExtension && !allowedExtensions.includes(fileExtension)) { + return false; + } else if (fileSize > allowedSize) { + return false; + } + return true; + }; + const handleFileChange = (e: React.ChangeEvent<HTMLInputElement>) => { - if (e?.target?.files?.length) setFormData({ ...formData, [e.target.name]: e?.target?.files[0] }); + if (e?.target?.files?.length) { + const isFileValid = validateFile(e?.target?.files[0]); + console.log('File valid?', isFileValid); + if (isFileValid) { + setFormData({ ...formData, [e.target.name]: e?.target?.files[0] }); + } + } }; const handleSubmit = async (e: React.SyntheticEvent) => { -- GitLab