From e49512896ff4b17a9355432f631d94f29c3c2c12 Mon Sep 17 00:00:00 2001 From: TomixUG <46199769+TomixUG@users.noreply.github.com> Date: Mon, 8 Apr 2024 18:19:58 +0200 Subject: [PATCH] feat(web): paste photo from clipboard (#8475) * feat(web): paste photo from clipboard * listen on svelte:window instead of a div * refactor: move logic to drag overlay --------- Co-authored-by: Jason Rasmussen --- .../drag-and-drop-upload-overlay.svelte | 46 +++++++++++++++---- web/src/routes/(user)/+layout.svelte | 27 +---------- web/src/routes/+layout.svelte | 3 +- 3 files changed, 39 insertions(+), 37 deletions(-) diff --git a/web/src/lib/components/shared-components/drag-and-drop-upload-overlay.svelte b/web/src/lib/components/shared-components/drag-and-drop-upload-overlay.svelte index 234448d66..224f00572 100644 --- a/web/src/lib/components/shared-components/drag-and-drop-upload-overlay.svelte +++ b/web/src/lib/components/shared-components/drag-and-drop-upload-overlay.svelte @@ -1,28 +1,54 @@ - { + const onDragLeave = (e: DragEvent) => { if (dragStartTarget === e.target) { dragStartTarget = null; } - }} - on:drop|stopPropagation|preventDefault={(e) => { + }; + + const onDrop = async (e: DragEvent) => { dragStartTarget = null; - dropHandler(e); - }} + await handleFiles(e.dataTransfer?.files); + }; + + const onPaste = ({ clipboardData }: ClipboardEvent) => handleFiles(clipboardData?.files); + + const handleFiles = async (files?: FileList) => { + if (!files) { + return; + } + + const filesArray: File[] = Array.from(files); + if (isShare) { + dragAndDropFilesStore.set({ isDragging: true, files: filesArray }); + } else { + await fileUploadHandler(filesArray, albumId); + } + }; + + + + + {#if dragStartTarget} diff --git a/web/src/routes/(user)/+layout.svelte b/web/src/routes/(user)/+layout.svelte index c0e957d3b..53c2514c8 100644 --- a/web/src/routes/(user)/+layout.svelte +++ b/web/src/routes/(user)/+layout.svelte @@ -1,29 +1,6 @@ - - - + + diff --git a/web/src/routes/+layout.svelte b/web/src/routes/+layout.svelte index dd85730a2..8925ee340 100644 --- a/web/src/routes/+layout.svelte +++ b/web/src/routes/+layout.svelte @@ -19,7 +19,6 @@ import '../app.css'; let showNavigationLoadingBar = false; - let albumId: string | undefined; const isSharedLinkRoute = (route: string | null) => route?.startsWith('/(user)/share/[key]'); @@ -111,7 +110,7 @@ - + {#if showNavigationLoadingBar}