diff --git a/packages/web-pkg/src/composables/shares/useLoadShares.ts b/packages/web-pkg/src/composables/shares/useLoadShares.ts index c8f8f45143c..94e48c8c518 100644 --- a/packages/web-pkg/src/composables/shares/useLoadShares.ts +++ b/packages/web-pkg/src/composables/shares/useLoadShares.ts @@ -163,7 +163,7 @@ export const useLoadShares = () => { }) } - if (includeInheritedShares || isLocationCommonActive(router, 'files-common-search')) { + if (includeInheritedShares || !resourcesStore.currentFolder) { yield resourcesStore.loadAncestorMetaData({ folder: unref(resource), space, @@ -193,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 60ad5fc039c..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,9 +164,9 @@ describe('FileSideBar', () => { ).toHaveBeenCalledTimes(2) }) - it('should load ancestor meta data to get indirect shares when on search page', async () => { + it('loads ancestor meta data when the current folder is not loaded', async () => { const resource = mock() - const { wrapper, mocks } = createWrapper({ currentRouteName: 'files-common-search' }) + const { wrapper, mocks } = createWrapper({ currentFolder: null }) const { loadAncestorMetaData } = useResourcesStore() mocks.$clientService.graphAuthenticated.permissions.listPermissions.mockResolvedValue({ @@ -178,6 +178,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 +317,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([])