diff --git a/packages/shared/components/inputs/Dropzone.svelte b/packages/shared/components/inputs/Dropzone.svelte index aff32bd31aa..042fa497a0e 100644 --- a/packages/shared/components/inputs/Dropzone.svelte +++ b/packages/shared/components/inputs/Dropzone.svelte @@ -2,37 +2,38 @@ import { Text, Button } from 'shared/components' export let locale = undefined - export let onDrop = () => {} + export let onDrop = (buffer?, name?, path?) => {} export let extentionsLabel = '' - export let allowedExtensions = '*' + export let allowedExtensions let dropping = false let fileName = null - // TODO: allow drop only allowedExtensions const onFile = (e) => { e.preventDefault() dropping = false const file = e.dataTransfer ? e.dataTransfer.files[0] : e.target.files[0] - fileName = file.name - // TODO: should we limit by size? - if (!file || file.size > 100000) { + if (!file) { fileName = null - return onDrop(false) + return onDrop() } - const filePath = file.path + if (allowedExtensions && allowedExtensions.length > 0) { + const ext = /\.([0-9a-z]+)$/i.exec(file.name) + if (!ext || !allowedExtensions.includes(ext[1])) { + fileName = null + return onDrop() + } + } + + fileName = file.name const reader = new FileReader() - reader.fileName = fileName - reader.filePath = filePath reader.onload = (e) => { - const buffer = e.target.result - const name = e.target.fileName - onDrop(buffer, name, filePath) + onDrop(e.target.result, file.name, file.path) } reader.readAsArrayBuffer(file) @@ -88,7 +89,11 @@ 17.6445L25 32C25 33.1045 25.8954 34 27 34L38 34C44.6274 34 50 28.6274 50 22C50 15.658 45.0802 10.4651 38.8489 10.0296C36.4827 4.15025 30.726 0 24 0C15.1634 0 8 7.16344 8 16L8.00009 16.0549C3.5001 16.5523 0 20.3674 0 25Z" /> - + `.${e}`).join(',') : '*'} /> {locale('actions.dragDrop')} {extentionsLabel} diff --git a/packages/shared/routes/setup/import/views/FileImport.svelte b/packages/shared/routes/setup/import/views/FileImport.svelte index c3109b4b966..6f3f830af55 100644 --- a/packages/shared/routes/setup/import/views/FileImport.svelte +++ b/packages/shared/routes/setup/import/views/FileImport.svelte @@ -43,7 +43,7 @@ {onDrop} {locale} extentionsLabel={locale('actions.importExtentions')} - allowedExtensions=".kdbx,.stronghold" /> + allowedExtensions={["kdbx", "stronghold"]} />