chore: some clean up

Signed-off-by: djamaile <rdjamaile@gmail.com>
This commit is contained in:
djamaile
2021-12-07 23:50:09 +01:00
parent 4a0292c67b
commit 95881167dc
3 changed files with 33 additions and 15 deletions
+3 -1
View File
@@ -2,4 +2,6 @@
'@backstage/plugin-catalog-react': patch
---
when a user doesn't own any entity, the user won't get the option to select on owned
When a user has zero owned entities when viewing an entity kind in the catalog
page, it will be automatically redirected to see all the entities. Furthermore,
for the kind User and Group there are no longer the owned selector.
@@ -122,15 +122,17 @@ export const UserListPicker = ({
const classes = useStyles();
const configApi = useApi(configApiRef);
const orgName = configApi.getOptionalString('organization.name') ?? 'Company';
const userAndGroupFilterIds = ['starred', 'all'];
const { filters, updateFilters, backendEntities, queryParameters } =
useEntityListProvider();
// Remove group items that aren't in availableFilters and exclude
// any now-empty groups.
const userAndGroupFilterIds = ['starred', 'all'];
const filterGroups = getFilterGroups(orgName)
.map(filterGroup => ({
...filterGroup,
items: filterGroup.items.filter(({ id }) =>
// TODO: avoid hardcoding kinds here
['group', 'user'].some(kind => kind === queryParameters.kind)
? userAndGroupFilterIds.includes(id)
: !availableFilters || availableFilters.includes(id),
@@ -155,21 +157,13 @@ export const UserListPicker = ({
// filter that's controlled by this picker.
const [entitiesWithoutUserFilter, setEntitiesWithoutUserFilter] =
useState(backendEntities);
useEffect(() => {
const filterFn = reduceEntityFilters(
compact(Object.values({ ...filters, user: undefined })),
);
setEntitiesWithoutUserFilter(backendEntities.filter(filterFn));
}, [filters, backendEntities]);
const totalOwnedUserEntities = entitiesWithoutUserFilter.filter(entity =>
ownedFilter.filterEntity(entity),
).length;
const [selectedUserFilter, setSelectedUserFilter] = useState(
totalOwnedUserEntities < 1
? 'all'
: [queryParameters.user].flat()[0] ?? initialFilter,
totalOwnedUserEntities > 0
? [queryParameters.user].flat()[0] ?? initialFilter
: 'all',
);
useEffect(() => {
@@ -184,6 +178,13 @@ export const UserListPicker = ({
});
}, [selectedUserFilter, isOwnedEntity, isStarredEntity, updateFilters]);
useEffect(() => {
const filterFn = reduceEntityFilters(
compact(Object.values({ ...filters, user: undefined })),
);
setEntitiesWithoutUserFilter(backendEntities.filter(filterFn));
}, [filters, backendEntities]);
function getFilterCount(id: UserListFilterKind) {
switch (id) {
case 'owned':
@@ -137,12 +137,27 @@ describe('<EntityListProvider />', () => {
const { result, waitFor } = renderHook(() => useEntityListProvider(), {
wrapper,
initialProps: {
userFilter: 'owned',
userFilter: 'all',
},
});
await waitFor(() => !!result.current.entities.length);
expect(result.current.backendEntities.length).toBe(2);
expect(result.current.entities.length).toBe(1);
act(() =>
result.current.updateFilters({
user: new UserListFilter(
'owned',
entity => entity.metadata.name === 'component-1',
() => true,
),
}),
);
await waitFor(() => {
expect(result.current.backendEntities.length).toBe(2);
expect(result.current.entities.length).toBe(1);
expect(mockCatalogApi.getEntities).toHaveBeenCalledTimes(1);
});
});
it('resolves query param filter values', async () => {