From f8aa2cafea5cb29b3b811bec57db992c3bd1df00 Mon Sep 17 00:00:00 2001 From: Vincenzo Scamporlino Date: Tue, 15 Feb 2022 10:28:02 +0100 Subject: [PATCH 1/2] Wait until owned entities are loaded before resetting the filters Signed-off-by: Vincenzo Scamporlino --- .../UserListPicker/UserListPicker.test.tsx | 18 ++++++++++++++++-- .../UserListPicker/UserListPicker.tsx | 14 +++++++++++--- 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/plugins/catalog-react/src/components/UserListPicker/UserListPicker.test.tsx b/plugins/catalog-react/src/components/UserListPicker/UserListPicker.test.tsx index d4cfedecbf..630a995bbe 100644 --- a/plugins/catalog-react/src/components/UserListPicker/UserListPicker.test.tsx +++ b/plugins/catalog-react/src/components/UserListPicker/UserListPicker.test.tsx @@ -36,6 +36,7 @@ import { identityApiRef, storageApiRef, } from '@backstage/core-plugin-api'; +import { useEntityOwnership } from '../../hooks'; const mockUser: UserEntity = { apiVersion: 'backstage.io/v1alpha1', @@ -81,9 +82,9 @@ jest.mock('../../hooks', () => { const actual = jest.requireActual('../../hooks'); return { ...actual, - useEntityOwnership: () => ({ + useEntityOwnership: jest.fn(() => ({ isOwnedEntity: mockIsOwnedEntity, - }), + })), useStarredEntities: () => ({ isStarredEntity: mockIsStarredEntity, }), @@ -327,6 +328,19 @@ describe('', () => { }); }); + it('does not reset the filter while owned entities are loading', () => { + const isOwnedEntity = jest.fn(() => false); + (useEntityOwnership as jest.Mock).mockReturnValueOnce({ + loading: true, + isOwnedEntity, + }); + + render(picker({ loading: false })); + expect(updateFilters).not.toHaveBeenCalledWith({ + user: new UserListFilter('all', isOwnedEntity, mockIsStarredEntity), + }); + }); + it('resets the filter to "all" when entities are loaded', () => { render(picker({ loading: false })); diff --git a/plugins/catalog-react/src/components/UserListPicker/UserListPicker.tsx b/plugins/catalog-react/src/components/UserListPicker/UserListPicker.tsx index cbf6089f2e..de23f75e47 100644 --- a/plugins/catalog-react/src/components/UserListPicker/UserListPicker.tsx +++ b/plugins/catalog-react/src/components/UserListPicker/UserListPicker.tsx @@ -130,8 +130,13 @@ export const UserListPicker = ({ const classes = useStyles(); const configApi = useApi(configApiRef); const orgName = configApi.getOptionalString('organization.name') ?? 'Company'; - const { filters, updateFilters, backendEntities, queryParameters, loading } = - useEntityListProvider(); + const { + filters, + updateFilters, + backendEntities, + queryParameters, + loading: loadingBackendEntities, + } = useEntityListProvider(); // Remove group items that aren't in availableFilters and exclude // any now-empty groups. @@ -149,7 +154,10 @@ export const UserListPicker = ({ .filter(({ items }) => !!items.length); const { isStarredEntity } = useStarredEntities(); - const { isOwnedEntity } = useEntityOwnership(); + const { isOwnedEntity, loading: loadingEntityOwnership } = + useEntityOwnership(); + + const loading = loadingBackendEntities || loadingEntityOwnership; // Static filters; used for generating counts of potentially unselected kinds const ownedFilter = useMemo( From 98d1aa1ea1871ccc04bce6a4093a01ce4a19ecb1 Mon Sep 17 00:00:00 2001 From: Vincenzo Scamporlino Date: Tue, 15 Feb 2022 10:33:54 +0100 Subject: [PATCH 2/2] Add changeset Signed-off-by: Vincenzo Scamporlino --- .changeset/shy-peaches-begin.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/shy-peaches-begin.md diff --git a/.changeset/shy-peaches-begin.md b/.changeset/shy-peaches-begin.md new file mode 100644 index 0000000000..4787fe8dea --- /dev/null +++ b/.changeset/shy-peaches-begin.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-react': patch +--- + +Fix CatalogPage showing all components when owned filter was pre-selected