diff options
author | Louis Chemineau <louis@chmn.me> | 2025-01-13 14:54:18 +0100 |
---|---|---|
committer | Louis Chemineau <louis@chmn.me> | 2025-01-15 11:20:01 +0100 |
commit | b1bc79394067ca3914ea3970e5d242f2e2bf405c (patch) | |
tree | 253b4b14962d35bacb19e75ebda46139c7eb2bd9 /apps/files/src | |
parent | 0f2dcfd0f184e05387e66515d697b54e708da887 (diff) | |
download | nextcloud-server-b1bc79394067ca3914ea3970e5d242f2e2bf405c.tar.gz nextcloud-server-b1bc79394067ca3914ea3970e5d242f2e2bf405c.zip |
fix: Remove duplicate propfind call
This also was an XHR call which is not going through the end to end encryption proxy
Signed-off-by: Louis Chemineau <louis@chmn.me>
Diffstat (limited to 'apps/files/src')
-rw-r--r-- | apps/files/src/services/FileInfo.js | 30 | ||||
-rw-r--r-- | apps/files/src/services/FileInfo.ts | 35 | ||||
-rw-r--r-- | apps/files/src/views/Sidebar.vue | 4 |
3 files changed, 37 insertions, 32 deletions
diff --git a/apps/files/src/services/FileInfo.js b/apps/files/src/services/FileInfo.js deleted file mode 100644 index e576b426450..00000000000 --- a/apps/files/src/services/FileInfo.js +++ /dev/null @@ -1,30 +0,0 @@ -/** - * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -import axios from '@nextcloud/axios' -import { davGetDefaultPropfind } from '@nextcloud/files' - -/** - * @param {any} url - - */ -export default async function(url) { - const response = await axios({ - method: 'PROPFIND', - url, - data: davGetDefaultPropfind(), - }) - - // TODO: create new parser or use cdav-lib when available - const file = OC.Files.getClient()._client.parseMultiStatus(response.data) - // TODO: create new parser or use cdav-lib when available - const fileInfo = OC.Files.getClient()._parseFileInfo(file[0]) - - // TODO remove when no more legacy backbone is used - fileInfo.get = (key) => fileInfo[key] - fileInfo.isDirectory = () => fileInfo.mimetype === 'httpd/unix-directory' - fileInfo.canEdit = () => Boolean(fileInfo.permissions & OC.PERMISSION_UPDATE) - - return fileInfo -} diff --git a/apps/files/src/services/FileInfo.ts b/apps/files/src/services/FileInfo.ts new file mode 100644 index 00000000000..d4c587794f9 --- /dev/null +++ b/apps/files/src/services/FileInfo.ts @@ -0,0 +1,35 @@ +/** + * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +/* eslint-disable jsdoc/require-jsdoc */ + +import type { Node } from '@nextcloud/files' + +export default function(node: Node) { + const fileInfo = new OC.Files.FileInfo({ + id: node.fileid, + path: node.dirname, + name: node.basename, + mtime: node.mtime?.getTime(), + etag: node.attributes.etag, + size: node.size, + hasPreview: node.attributes.hasPreview, + isEncrypted: node.attributes.isEncrypted === 1, + isFavourited: node.attributes.favorite === 1, + mimetype: node.mime, + permissions: node.permissions, + mountType: node.attributes['mount-type'], + sharePermissions: node.attributes['share-permissions'], + shareAttributes: JSON.parse(node.attributes['share-attributes']), + type: node.type === 'file' ? 'file' : 'dir', + }) + + // TODO remove when no more legacy backbone is used + fileInfo.get = (key) => fileInfo[key] + fileInfo.isDirectory = () => fileInfo.mimetype === 'httpd/unix-directory' + fileInfo.canEdit = () => Boolean(fileInfo.permissions & OC.PERMISSION_UPDATE) + + return fileInfo +} diff --git a/apps/files/src/views/Sidebar.vue b/apps/files/src/views/Sidebar.vue index 1a1cd0cbc41..196d64990a6 100644 --- a/apps/files/src/views/Sidebar.vue +++ b/apps/files/src/views/Sidebar.vue @@ -487,10 +487,10 @@ export default { this.loading = true try { - this.fileInfo = await FileInfo(this.davPath) + this.node = await fetchNode({ path: this.file }) + this.fileInfo = FileInfo(this.node) // adding this as fallback because other apps expect it this.fileInfo.dir = this.file.split('/').slice(0, -1).join('/') - this.node = await fetchNode({ path: (this.fileInfo.path + '/' + this.fileInfo.name).replace('//', '/') }) // DEPRECATED legacy views // TODO: remove |