diff --git a/packages/web-pkg/src/composables/shares/useLoadShares.ts b/packages/web-pkg/src/composables/shares/useLoadShares.ts index c8f8f45143..383393ee05 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 60ad5fc039..2a293ae6bf 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([])