diff --git a/components/files/file-browser.tsx b/components/files/file-browser.tsx index e62042f8..ef62d814 100644 --- a/components/files/file-browser.tsx +++ b/components/files/file-browser.tsx @@ -21,6 +21,7 @@ import { loadFilesSettings } from "@/components/files/files-settings-dialog"; import type { FolderLayout } from "@/components/files/files-settings-dialog"; import { FolderTreeSidebar } from "@/components/files/folder-tree-sidebar"; import { ResizeHandle } from "@/components/layout/resize-handle"; +import { getDroppedFilesAndFolders } from "@/lib/webdav/drop-utils"; import type { FileResource } from "@/stores/file-store"; type SortKey = "name" | "size" | "modified"; @@ -624,16 +625,20 @@ export function FileBrowser({ e.stopPropagation(); setIsDraggingOver(false); - const files = Array.from(e.dataTransfer.files); - if (files.length > 0) { - setIsUploading(true); - try { - await onUploadFiles(files); - } finally { - setIsUploading(false); + setIsUploading(true); + try { + const { files, hasDirectories } = await getDroppedFilesAndFolders(e.dataTransfer); + if (files.length > 0) { + if (hasDirectories) { + await onUploadFolder(files); + } else { + await onUploadFiles(files); + } } + } finally { + setIsUploading(false); } - }, [onUploadFiles]); + }, [onUploadFiles, onUploadFolder]); const handleFileInputChange = async (e: React.ChangeEvent) => { const files = Array.from(e.target.files || []); @@ -945,6 +950,16 @@ export function FileBrowser({ > +