From 2cdbd7fa153a23e2afb7429b60a7ad74318eb560 Mon Sep 17 00:00:00 2001 From: nfebe Date: Tue, 20 Jan 2026 12:48:06 +0100 Subject: [PATCH] fix(sharing): strip share permission before comparing to bundled perms Handle backward compatibility when config.defaultPermissions includes the SHARE permission (value 31) which was previously part of BUNDLED_PERMISSIONS.ALL. Now that ALL no longer includes SHARE, the comparison must strip SHARE before checking against bundled permissions. This fixes an issue where the Advanced Settings section would be auto-expanded for new shares, causing a toggle to close it instead of opening it. Signed-off-by: nfebe --- apps/files_sharing/src/mixins/SharesMixin.js | 5 ++++- apps/files_sharing/src/views/SharingDetailsTab.vue | 7 +++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/apps/files_sharing/src/mixins/SharesMixin.js b/apps/files_sharing/src/mixins/SharesMixin.js index a1580e3a792..e94bf80e401 100644 --- a/apps/files_sharing/src/mixins/SharesMixin.js +++ b/apps/files_sharing/src/mixins/SharesMixin.js @@ -11,6 +11,7 @@ import debounce from 'debounce' import PQueue from 'p-queue' import { fetchNode } from '../../../files/src/services/WebdavClient.ts' import { + ATOMIC_PERMISSIONS, BUNDLED_PERMISSIONS, } from '../lib/SharePermissionsToolBox.js' import Share from '../models/Share.ts' @@ -139,10 +140,12 @@ export default { hasCustomPermissions() { const bundledPermissions = [ BUNDLED_PERMISSIONS.ALL, + BUNDLED_PERMISSIONS.ALL_FILE, BUNDLED_PERMISSIONS.READ_ONLY, BUNDLED_PERMISSIONS.FILE_DROP, ] - return !bundledPermissions.includes(this.share.permissions) + const permissionsWithoutShare = this.share.permissions & ~ATOMIC_PERMISSIONS.SHARE + return !bundledPermissions.includes(permissionsWithoutShare) }, maxExpirationDateEnforced() { if (this.isExpiryDateEnforced) { diff --git a/apps/files_sharing/src/views/SharingDetailsTab.vue b/apps/files_sharing/src/views/SharingDetailsTab.vue index bdce43665d0..896d90442ee 100644 --- a/apps/files_sharing/src/views/SharingDetailsTab.vue +++ b/apps/files_sharing/src/views/SharingDetailsTab.vue @@ -1021,8 +1021,11 @@ export default { handleDefaultPermissions() { if (this.isNewShare) { const defaultPermissions = this.config.defaultPermissions - if (defaultPermissions === BUNDLED_PERMISSIONS.READ_ONLY || defaultPermissions === BUNDLED_PERMISSIONS.ALL) { - this.sharingPermission = defaultPermissions.toString() + const permissionsWithoutShare = defaultPermissions & ~ATOMIC_PERMISSIONS.SHARE + if (permissionsWithoutShare === BUNDLED_PERMISSIONS.READ_ONLY + || permissionsWithoutShare === BUNDLED_PERMISSIONS.ALL + || permissionsWithoutShare === BUNDLED_PERMISSIONS.ALL_FILE) { + this.sharingPermission = permissionsWithoutShare.toString() } else { this.sharingPermission = 'custom' this.share.permissions = defaultPermissions