From 55ee02688bc9cb2e37a156a78cc0549911a307f4 Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Fri, 20 May 2022 08:55:07 +0200 Subject: [PATCH 1/2] Fix webDavPath construction for space image and readme Needs to be a prefix match since the URL has the spaceId as nodeId in the URL (uniform 3-part id syntax) but the space id we maintain internally is 2-part. --- .../src/views/spaces/Project.vue | 20 ++++++++++++++----- .../src/views/spaces/Projects.vue | 8 ++++++-- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/packages/web-app-files/src/views/spaces/Project.vue b/packages/web-app-files/src/views/spaces/Project.vue index 3b1e3988ba5..63f6d08ffaa 100644 --- a/packages/web-app-files/src/views/spaces/Project.vue +++ b/packages/web-app-files/src/views/spaces/Project.vue @@ -259,14 +259,20 @@ export default defineComponent({ }, 'space.spaceImageData': { handler: function (val) { - if (!val) return + if (!val) { + return + } const webDavPathComponents = this.space.spaceImageData.webDavUrl.split('/') + const idComponent = webDavPathComponents.find((c) => c.startsWith(this.space.id)) + if (!idComponent) { + return + } const path = webDavPathComponents - .slice(webDavPathComponents.indexOf(this.space.id) + 1) + .slice(webDavPathComponents.indexOf(idComponent) + 1) .join('/') this.$client.files - .fileInfo(buildWebDavSpacesPath(this.space.id, decodeURIComponent(path))) + .fileInfo(buildWebDavSpacesPath(idComponent, decodeURIComponent(path))) .then((data) => { const resource = buildResource(data) loadPreview({ @@ -289,12 +295,16 @@ export default defineComponent({ return } const webDavPathComponents = this.space.spaceReadmeData.webDavUrl.split('/') + const idComponent = webDavPathComponents.find((c) => c.startsWith(this.space.id)) + if (!idComponent) { + return + } const path = webDavPathComponents - .slice(webDavPathComponents.indexOf(this.space.id) + 1) + .slice(webDavPathComponents.indexOf(idComponent) + 1) .join('/') this.$client.files - .getFileContents(buildWebDavSpacesPath(this.space.id, decodeURIComponent(path))) + .getFileContents(buildWebDavSpacesPath(idComponent, decodeURIComponent(path))) .then((fileContents) => { if (this.markdownResizeObserver && this.$refs.markdownContainer) { this.markdownResizeObserver.unobserve(this.$refs.markdownContainer) diff --git a/packages/web-app-files/src/views/spaces/Projects.vue b/packages/web-app-files/src/views/spaces/Projects.vue index f9d3f8ea451..ab4d5919850 100644 --- a/packages/web-app-files/src/views/spaces/Projects.vue +++ b/packages/web-app-files/src/views/spaces/Projects.vue @@ -207,12 +207,16 @@ export default defineComponent({ } const webDavPathComponents = space.spaceImageData.webDavUrl.split('/') + const idComponent = webDavPathComponents.find((c) => c.startsWith(space.id)) + if (!idComponent) { + return + } const path = webDavPathComponents - .slice(webDavPathComponents.indexOf(space.id) + 1) + .slice(webDavPathComponents.indexOf(idComponent) + 1) .join('/') this.$client.files - .fileInfo(buildWebDavSpacesPath(space.id, decodeURIComponent(path))) + .fileInfo(buildWebDavSpacesPath(idComponent, decodeURIComponent(path))) .then((fileInfo) => { const resource = buildResource(fileInfo) loadPreview({ From dda9a1dd063ff9ff981d566908bc375313ffe3ce Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Fri, 20 May 2022 09:15:25 +0200 Subject: [PATCH 2/2] Fix unit tests and add changelog for space image and readme url fix --- changelog/unreleased/bugfix-space-special-files | 5 +++++ .../web-app-files/tests/unit/views/spaces/Project.spec.js | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 changelog/unreleased/bugfix-space-special-files diff --git a/changelog/unreleased/bugfix-space-special-files b/changelog/unreleased/bugfix-space-special-files new file mode 100644 index 00000000000..b88d2e48084 --- /dev/null +++ b/changelog/unreleased/bugfix-space-special-files @@ -0,0 +1,5 @@ +Bugfix: Cover image and readme in spaces + +The URL construction for cover image and readme of a space was wrong and led to both not being shown. This has been fixed by making the URL construction more reliable regarding different ID formats. + +https://github.com/owncloud/web/pull/7017 diff --git a/packages/web-app-files/tests/unit/views/spaces/Project.spec.js b/packages/web-app-files/tests/unit/views/spaces/Project.spec.js index d8191fd9db9..3212866a9b6 100644 --- a/packages/web-app-files/tests/unit/views/spaces/Project.spec.js +++ b/packages/web-app-files/tests/unit/views/spaces/Project.spec.js @@ -64,12 +64,12 @@ const spaceMocks = { special: [ { specialFolder: { name: 'readme' }, - webDavUrl: '/', + webDavUrl: 'https://owncloud.test/dav/spaces/1/readme.md', file: { mimeType: 'text/plain' } }, { specialFolder: { name: 'image' }, - webDavUrl: '/', + webDavUrl: 'https://owncloud.test/dav/spaces/1/image.png', file: { mimeType: 'image/png' } } ]