From a140d9f2617bb05e0b683cb43b2366e8b3076f63 Mon Sep 17 00:00:00 2001 From: Ferdinand Thiessen Date: Tue, 25 Mar 2025 21:20:50 +0100 Subject: [PATCH 1/2] fix(files_versions): correctly show version author also for shared files The users endpoint is not available for other users if the current user has no admin privileges, so instead use the displaynames endpoint. Signed-off-by: Ferdinand Thiessen --- .../files_versions/src/components/Version.vue | 56 +++++++++++-------- apps/files_versions/src/views/VersionTab.vue | 41 +++++++------- .../e2e/files_versions/version_creation.cy.ts | 14 +++++ .../e2e/files_versions/version_sharing.cy.ts | 46 +++++++++++++++ 4 files changed, 113 insertions(+), 44 deletions(-) create mode 100644 cypress/e2e/files_versions/version_sharing.cy.ts diff --git a/apps/files_versions/src/components/Version.vue b/apps/files_versions/src/components/Version.vue index 7c3bb4758de34..91bcee4a7fa57 100644 --- a/apps/files_versions/src/components/Version.vue +++ b/apps/files_versions/src/components/Version.vue @@ -30,16 +30,19 @@
{{ versionLabel }}
-
+
{{ versionAuthor }}
@@ -52,7 +55,7 @@ - + {{ humanReadableSize }}
@@ -114,6 +117,17 @@ import type { PropType } from 'vue' import type { Version } from '../utils/versions' +import { getCurrentUser } from '@nextcloud/auth' +import { Permission, formatFileSize } from '@nextcloud/files' +import { loadState } from '@nextcloud/initial-state' +import { t } from '@nextcloud/l10n' +import { joinPaths } from '@nextcloud/paths' +import { getRootUrl, generateUrl } from '@nextcloud/router' +import { defineComponent } from 'vue' + +import axios from '@nextcloud/axios' +import logger from '../utils/logger' + import BackupRestore from 'vue-material-design-icons/BackupRestore.vue' import Delete from 'vue-material-design-icons/Delete.vue' import Download from 'vue-material-design-icons/Download.vue' @@ -128,15 +142,6 @@ import NcDateTime from '@nextcloud/vue/dist/Components/NcDateTime.js' import NcListItem from '@nextcloud/vue/dist/Components/NcListItem.js' import Tooltip from '@nextcloud/vue/dist/Directives/Tooltip.js' -import { getRootUrl, generateOcsUrl } from '@nextcloud/router' -import { joinPaths } from '@nextcloud/paths' -import { loadState } from '@nextcloud/initial-state' -import { Permission, formatFileSize } from '@nextcloud/files' -import { translate as t } from '@nextcloud/l10n' -import { defineComponent } from 'vue' - -import axios from '@nextcloud/axios' - const hasPermission = (permissions: number, permission: number): boolean => (permissions & permission) !== 0 export default defineComponent({ @@ -198,7 +203,7 @@ export default defineComponent({ previewLoaded: false, previewErrored: false, capabilities: loadState('core', 'capabilities', { files: { version_labeling: false, version_deletion: false } }), - versionAuthor: '', + versionAuthor: '' as string|null, } }, @@ -290,21 +295,26 @@ export default defineComponent({ }, async fetchDisplayName() { - // check to make sure that we have a valid author - in case database did not migrate, null author, etc. - if (this.version.author) { + this.versionAuthor = null + if (!this.version.author) { + return + } + + if (this.version.author === getCurrentUser()?.uid) { + this.versionAuthor = t('files_versions', 'You') + } else { try { - const { data } = await axios.get(generateOcsUrl(`/cloud/users/${this.version.author}`)) - this.versionAuthor = data.ocs.data.displayname - } catch (e) { - // Promise got rejected - default to null author to not try to load author profile - this.versionAuthor = null + const { data } = await axios.post(generateUrl('/displaynames'), { users: [this.version.author] }) + this.versionAuthor = data.users[this.version.author] + } catch (error) { + logger.warn('Could not load user display name', { error }) } } }, click() { if (!this.canView) { - window.location = this.downloadURL + window.location.href = this.downloadURL return } this.$emit('click', { version: this.version }) diff --git a/apps/files_versions/src/views/VersionTab.vue b/apps/files_versions/src/views/VersionTab.vue index 6fa5ac3fcaa75..bd445b95e57b9 100644 --- a/apps/files_versions/src/views/VersionTab.vue +++ b/apps/files_versions/src/views/VersionTab.vue @@ -4,28 +4,27 @@ -->