Skip to content

Commit

Permalink
Wait until owned entities are loaded before resetting the filters
Browse files Browse the repository at this point in the history
Signed-off-by: Vincenzo Scamporlino <me@vinzscam.dev>
  • Loading branch information
vinzscam committed Feb 15, 2022
1 parent 42de8b4 commit f8aa2ca
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ import {
identityApiRef,
storageApiRef,
} from '@backstage/core-plugin-api';
import { useEntityOwnership } from '../../hooks';

const mockUser: UserEntity = {
apiVersion: 'backstage.io/v1alpha1',
Expand Down Expand Up @@ -81,9 +82,9 @@ jest.mock('../../hooks', () => {
const actual = jest.requireActual('../../hooks');
return {
...actual,
useEntityOwnership: () => ({
useEntityOwnership: jest.fn(() => ({
isOwnedEntity: mockIsOwnedEntity,
}),
})),
useStarredEntities: () => ({
isStarredEntity: mockIsStarredEntity,
}),
Expand Down Expand Up @@ -327,6 +328,19 @@ describe('<UserListPicker />', () => {
});
});

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 }));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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(
Expand Down

0 comments on commit f8aa2ca

Please sign in to comment.