From 88c919b37973a4e349a845e683bb1b64d538bfb9 Mon Sep 17 00:00:00 2001 From: Nicola Krumschmidt Date: Tue, 22 Sep 2020 21:40:09 +0200 Subject: [PATCH] Only call dropzone event handlers if a file is dragged Fixes #314 --- app/src/views/private/private-view.vue | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/app/src/views/private/private-view.vue b/app/src/views/private/private-view.vue index d8d50bf749..3010effb5d 100644 --- a/app/src/views/private/private-view.vue +++ b/app/src/views/private/private-view.vue @@ -157,17 +157,15 @@ export default defineComponent({ } function onDragEnter(event: DragEvent) { + if (!event.dataTransfer) return; + if (event.dataTransfer?.types.indexOf('Files') === -1) return; + event.preventDefault(); dragCounter.value++; const isDropzone = event.target && (event.target as HTMLElement).getAttribute?.('data-dropzone') === ''; - if ( - dragCounter.value === 1 && - event.dataTransfer?.types.indexOf('Files') !== -1 && - showDropEffect.value === false && - isDropzone === false - ) { + if (dragCounter.value === 1 && showDropEffect.value === false && isDropzone === false) { enableDropEffect(); } @@ -178,10 +176,16 @@ export default defineComponent({ } function onDragOver(event: DragEvent) { + if (!event.dataTransfer) return; + if (event.dataTransfer?.types.indexOf('Files') === -1) return; + event.preventDefault(); } function onDragLeave(event: DragEvent) { + if (!event.dataTransfer) return; + if (event.dataTransfer?.types.indexOf('Files') === -1) return; + event.preventDefault(); dragCounter.value--; @@ -196,14 +200,14 @@ export default defineComponent({ } async function onDrop(event: DragEvent) { + if (!event.dataTransfer) return; + if (event.dataTransfer?.types.indexOf('Files') === -1) return; + event.preventDefault(); showDropEffect.value = false; dragCounter.value = 0; - if (!event.dataTransfer) return; - if (event.dataTransfer?.types.indexOf('Files') === -1) return; - if (dragNotificationID) { notificationsStore.remove(dragNotificationID); }