From a8b4fbddc638bdffa581241a65726ea9221cbf62 Mon Sep 17 00:00:00 2001 From: Fredrik Blau <40271584+fredrikblau@users.noreply.github.com> Date: Sat, 5 Sep 2026 16:26:36 +0330 Subject: [PATCH 1/2] fix: load indirect shares in editors --- .../src/composables/shares/useLoadShares.ts | 6 +++- .../components/sidebar/FileSideBar.spec.ts | 36 +++++++++++++++++-- 2 files changed, 38 insertions(+), 4 deletions(-) diff --git a/packages/web-pkg/src/composables/shares/useLoadShares.ts b/packages/web-pkg/src/composables/shares/useLoadShares.ts index c8f8f45143c..383393ee051 100644 --- a/packages/web-pkg/src/composables/shares/useLoadShares.ts +++ b/packages/web-pkg/src/composables/shares/useLoadShares.ts @@ -163,7 +163,11 @@ export const useLoadShares = () => { }) } - if (includeInheritedShares || isLocationCommonActive(router, 'files-common-search')) { + if ( + includeInheritedShares || + isLocationCommonActive(router, 'files-common-search') || + !resourcesStore.currentFolder + ) { yield resourcesStore.loadAncestorMetaData({ folder: unref(resource), space, diff --git a/packages/web-pkg/tests/unit/components/sidebar/FileSideBar.spec.ts b/packages/web-pkg/tests/unit/components/sidebar/FileSideBar.spec.ts index 60ad5fc039c..2a293ae6bf4 100644 --- a/packages/web-pkg/tests/unit/components/sidebar/FileSideBar.spec.ts +++ b/packages/web-pkg/tests/unit/components/sidebar/FileSideBar.spec.ts @@ -164,9 +164,15 @@ describe('FileSideBar', () => { ).toHaveBeenCalledTimes(2) }) - it('should load ancestor meta data to get indirect shares when on search page', async () => { + it.each([ + [ + 'on the search page', + { currentRouteName: 'files-common-search', currentFolder: mock() } + ], + ['when the current folder is not loaded', { currentFolder: null }] + ])('loads ancestor meta data for indirect shares %s', async (_, options) => { const resource = mock() - const { wrapper, mocks } = createWrapper({ currentRouteName: 'files-common-search' }) + const { wrapper, mocks } = createWrapper(options) const { loadAncestorMetaData } = useResourcesStore() mocks.$clientService.graphAuthenticated.permissions.listPermissions.mockResolvedValue({ @@ -178,6 +184,20 @@ describe('FileSideBar', () => { await (wrapper.vm as any).loadSharesTask.perform({ resource }) expect(loadAncestorMetaData).toHaveBeenCalled() }) + it('does not load ancestor meta data when the current folder is loaded', async () => { + const resource = mock() + const { wrapper, mocks } = createWrapper({ currentFolder: mock() }) + const { loadAncestorMetaData } = useResourcesStore() + + mocks.$clientService.graphAuthenticated.permissions.listPermissions.mockResolvedValue({ + shares: [], + allowedActions: [], + allowedRoles: [] + }) + + await (wrapper.vm as any).loadSharesTask.perform({ resource }) + expect(loadAncestorMetaData).not.toHaveBeenCalled() + }) it('loads inherited shares and project space members when explicitly requested', async () => { const space = mock({ id: 'space-id', driveType: 'project' }) @@ -303,10 +323,20 @@ function createWrapper({ item = undefined, isOpen = true, currentRouteName = 'files-spaces-generic', + currentFolder = undefined, space = undefined -}: { item?: Resource; isOpen?: boolean; currentRouteName?: string; space?: SpaceResource } = {}) { +}: { + item?: Resource + isOpen?: boolean + currentRouteName?: string + currentFolder?: Resource + space?: SpaceResource +} = {}) { const plugins = defaultPlugins() + const resourcesStore = useResourcesStore() + resourcesStore.currentFolder = currentFolder + const { requestExtensions } = useExtensionRegistry() vi.mocked(requestExtensions).mockReturnValue([]) From 4d21aa79094335fb199b613d7ae1983e9ef36d7d Mon Sep 17 00:00:00 2001 From: Jannik Stehle Date: Wed, 30 Sep 2026 14:33:01 +0200 Subject: [PATCH 2/2] fixup! fix: load indirect shares in editors --- .../web-pkg/src/composables/shares/useLoadShares.ts | 8 ++------ .../tests/unit/components/sidebar/FileSideBar.spec.ts | 10 ++-------- 2 files changed, 4 insertions(+), 14 deletions(-) diff --git a/packages/web-pkg/src/composables/shares/useLoadShares.ts b/packages/web-pkg/src/composables/shares/useLoadShares.ts index 383393ee051..94e48c8c518 100644 --- a/packages/web-pkg/src/composables/shares/useLoadShares.ts +++ b/packages/web-pkg/src/composables/shares/useLoadShares.ts @@ -163,11 +163,7 @@ export const useLoadShares = () => { }) } - if ( - includeInheritedShares || - isLocationCommonActive(router, 'files-common-search') || - !resourcesStore.currentFolder - ) { + if (includeInheritedShares || !resourcesStore.currentFolder) { yield resourcesStore.loadAncestorMetaData({ folder: unref(resource), space, @@ -197,7 +193,7 @@ export const useLoadShares = () => { .map(({ id }) => id) if ( - (includeInheritedShares || unref(isFlatFileList)) && + (includeInheritedShares || !resourcesStore.currentFolder) && isProjectSpaceResource(space) && !isProjectSpaceResource(resource) ) { diff --git a/packages/web-pkg/tests/unit/components/sidebar/FileSideBar.spec.ts b/packages/web-pkg/tests/unit/components/sidebar/FileSideBar.spec.ts index 2a293ae6bf4..4153149f4a3 100644 --- a/packages/web-pkg/tests/unit/components/sidebar/FileSideBar.spec.ts +++ b/packages/web-pkg/tests/unit/components/sidebar/FileSideBar.spec.ts @@ -164,15 +164,9 @@ describe('FileSideBar', () => { ).toHaveBeenCalledTimes(2) }) - it.each([ - [ - 'on the search page', - { currentRouteName: 'files-common-search', currentFolder: mock() } - ], - ['when the current folder is not loaded', { currentFolder: null }] - ])('loads ancestor meta data for indirect shares %s', async (_, options) => { + it('loads ancestor meta data when the current folder is not loaded', async () => { const resource = mock() - const { wrapper, mocks } = createWrapper(options) + const { wrapper, mocks } = createWrapper({ currentFolder: null }) const { loadAncestorMetaData } = useResourcesStore() mocks.$clientService.graphAuthenticated.permissions.listPermissions.mockResolvedValue({