From 6154a7109f30e277fdd28ce34c9e716990f3d021 Mon Sep 17 00:00:00 2001 From: sourabpramanik Date: Sat, 30 Dec 2023 18:16:42 +0530 Subject: [PATCH 1/5] fix: file extension validation --- src/lib/elements/forms/inputFile.svelte | 1 + 1 file changed, 1 insertion(+) diff --git a/src/lib/elements/forms/inputFile.svelte b/src/lib/elements/forms/inputFile.svelte index 013e73f878..64864d2ec9 100644 --- a/src/lib/elements/forms/inputFile.svelte +++ b/src/lib/elements/forms/inputFile.svelte @@ -28,6 +28,7 @@ }); if (hasInvalidExt) { error = 'Invalid file extension'; + input.value = null; return; } From deee62175fbe180c096884c7bd1bad4dc8f4bbf6 Mon Sep 17 00:00:00 2001 From: sourabpramanik Date: Wed, 3 Jan 2024 06:49:50 +0530 Subject: [PATCH 2/5] fix(input): updated file validation --- src/lib/elements/forms/inputFile.svelte | 26 +++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/src/lib/elements/forms/inputFile.svelte b/src/lib/elements/forms/inputFile.svelte index 64864d2ec9..792da658cd 100644 --- a/src/lib/elements/forms/inputFile.svelte +++ b/src/lib/elements/forms/inputFile.svelte @@ -20,18 +20,6 @@ function setFiles(value: FileList) { if (!value) return; - const hasInvalidExt = Array.from(value).some((file) => { - const fileExtension = file.name.split('.').pop(); - return allowedFileExtensions?.length - ? !allowedFileExtensions.includes(fileExtension) - : false; - }); - if (hasInvalidExt) { - error = 'Invalid file extension'; - input.value = null; - return; - } - files = value; input.files = value; } @@ -79,6 +67,20 @@ const handleChange = (event: Event) => { const target = event.currentTarget as HTMLInputElement; + + const isValidFiles = Array.from(target.files).every((file) => { + const fileExtension = file.name.split('.').pop(); + return allowedFileExtensions?.length + ? allowedFileExtensions.includes(fileExtension) + : true; + }); + + if (!isValidFiles) { + error = 'Invalid file extension'; + target.value = ''; + return; + } + setFiles(target.files); }; From a3a60308b2c1001bd113f316209158ba7bdc0e1c Mon Sep 17 00:00:00 2001 From: sourabpramanik Date: Mon, 11 Mar 2024 20:31:38 +0530 Subject: [PATCH 3/5] fix(input): add missing file extension check in dnd --- src/lib/elements/forms/inputFile.svelte | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/lib/elements/forms/inputFile.svelte b/src/lib/elements/forms/inputFile.svelte index ab3101d642..3cd63f1c2a 100644 --- a/src/lib/elements/forms/inputFile.svelte +++ b/src/lib/elements/forms/inputFile.svelte @@ -36,6 +36,11 @@ hovering = false; if (!ev.dataTransfer.items) return; for (let i = 0; i < ev.dataTransfer.items.length; i++) { + const fileExtension = ev.dataTransfer.items[i].getAsFile().name.split('.')[1]; + if (!allowedFileExtensions.includes(fileExtension)) { + error = 'Invalid file extension'; + return; + } if (ev.dataTransfer.items[i].kind === 'file') { const dataTransfer = new DataTransfer(); dataTransfer.items.add(ev.dataTransfer.items[i].getAsFile()); From 370e65fc289042f63aaea967c3e1a3356b20fbf8 Mon Sep 17 00:00:00 2001 From: sourabpramanik Date: Tue, 9 Apr 2024 20:42:41 +0530 Subject: [PATCH 4/5] ref: create function to check file extensions --- src/lib/elements/forms/inputFile.svelte | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/lib/elements/forms/inputFile.svelte b/src/lib/elements/forms/inputFile.svelte index 3cd63f1c2a..e595c2507f 100644 --- a/src/lib/elements/forms/inputFile.svelte +++ b/src/lib/elements/forms/inputFile.svelte @@ -31,13 +31,19 @@ setFiles(new DataTransfer().files); } + function isFileExtensionAllowed(fileExtension: string){ + if (allowedFileExtensions.length && !allowedFileExtensions.includes(fileExtension)) { + return false + } + return true + } function dropHandler(ev: DragEvent) { ev.dataTransfer.dropEffect = 'move'; hovering = false; if (!ev.dataTransfer.items) return; for (let i = 0; i < ev.dataTransfer.items.length; i++) { const fileExtension = ev.dataTransfer.items[i].getAsFile().name.split('.')[1]; - if (!allowedFileExtensions.includes(fileExtension)) { + if (!isFileExtensionAllowed(fileExtension)) { error = 'Invalid file extension'; return; } @@ -78,9 +84,7 @@ const isValidFiles = Array.from(target.files).every((file) => { const fileExtension = file.name.split('.').pop(); - return allowedFileExtensions?.length - ? allowedFileExtensions.includes(fileExtension) - : true; + return isFileExtensionAllowed(fileExtension) }); if (!isValidFiles) { From 6dc705b76e32918d376f2447542a0581e4065198 Mon Sep 17 00:00:00 2001 From: sourabpramanik Date: Tue, 9 Apr 2024 20:45:21 +0530 Subject: [PATCH 5/5] chore: fmt --- src/lib/elements/forms/inputFile.svelte | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/lib/elements/forms/inputFile.svelte b/src/lib/elements/forms/inputFile.svelte index e595c2507f..3ecb279597 100644 --- a/src/lib/elements/forms/inputFile.svelte +++ b/src/lib/elements/forms/inputFile.svelte @@ -31,11 +31,11 @@ setFiles(new DataTransfer().files); } - function isFileExtensionAllowed(fileExtension: string){ + function isFileExtensionAllowed(fileExtension: string) { if (allowedFileExtensions.length && !allowedFileExtensions.includes(fileExtension)) { - return false + return false; } - return true + return true; } function dropHandler(ev: DragEvent) { ev.dataTransfer.dropEffect = 'move'; @@ -84,7 +84,7 @@ const isValidFiles = Array.from(target.files).every((file) => { const fileExtension = file.name.split('.').pop(); - return isFileExtensionAllowed(fileExtension) + return isFileExtensionAllowed(fileExtension); }); if (!isValidFiles) {