diff --git a/apps/files/src/services/DropService.ts b/apps/files/src/services/DropService.ts index 03905d72d01d8..39fc92cf9eafb 100644 --- a/apps/files/src/services/DropService.ts +++ b/apps/files/src/services/DropService.ts @@ -9,9 +9,7 @@ import type { RootDirectory } from './DropServiceUtils.ts' import { showError, showInfo, showSuccess, showWarning } from '@nextcloud/dialogs' import { NodeStatus } from '@nextcloud/files' -import { getRootPath } from '@nextcloud/files/dav' import { translate as t } from '@nextcloud/l10n' -import { joinPaths } from '@nextcloud/paths' import { getUploader, hasConflict } from '@nextcloud/upload' import { join } from 'path' import Vue from 'vue' @@ -126,14 +124,13 @@ export async function onDropExternalFiles(root: RootDirectory, destination: Fold // If the file is a directory, we need to create it first // then browse its tree and upload its contents. if (file instanceof Directory) { - const absolutePath = joinPaths(getRootPath(), destination.path, relativePath) try { logger.debug('Processing directory', { relativePath }) - await createDirectoryIfNotExists(absolutePath) + await createDirectoryIfNotExists(relativePath) await uploadDirectoryContents(file, relativePath) } catch (error) { showError(t('files', 'Unable to create the directory {directory}', { directory: file.name })) - logger.error('', { error, absolutePath, directory: file }) + logger.error('Unable to create the directory', { error, relativePath, directory: file }) } continue } diff --git a/apps/files/src/services/DropServiceUtils.ts b/apps/files/src/services/DropServiceUtils.ts index 5c41a08aaea49..e92cf46bba0fd 100644 --- a/apps/files/src/services/DropServiceUtils.ts +++ b/apps/files/src/services/DropServiceUtils.ts @@ -7,8 +7,9 @@ import type { FileStat, ResponseDataDetailed } from 'webdav' import { showInfo, showWarning } from '@nextcloud/dialogs' import { emit } from '@nextcloud/event-bus' -import { getClient, getDefaultPropfind, resultToNode } from '@nextcloud/files/dav' +import { defaultRemoteURL, defaultRootPath, getClient, getDefaultPropfind, resultToNode } from '@nextcloud/files/dav' import { translate as t } from '@nextcloud/l10n' +import { join } from '@nextcloud/paths' import { openConflictPicker } from '@nextcloud/upload' import logger from '../logger.ts' @@ -131,17 +132,17 @@ function readDirectory(directory: FileSystemDirectoryEntry): Promise - emit('files:node:created', resultToNode(stat.data)) + logger.debug('Directory does not exist, creating it', { path }) + await davClient.createDirectory(path, { recursive: true }) + const stat = await davClient.stat(path, { details: true, data: getDefaultPropfind() }) as ResponseDataDetailed + emit('files:node:created', resultToNode(stat.data, defaultRootPath, davUrl)) } }