Merge pull request #9221 from recobe182/bie/improve-org-memberlist
org: add relations.memberof filter to catalog api call in MembersListCard
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-org': patch
|
||||
---
|
||||
|
||||
Added `relations.memberof` filter to the catalog api call in `MemberListCard` to avoid fetching all the User entity kinds from catalog-backend.
|
||||
@@ -75,33 +75,6 @@ describe('MemberTab Test', () => {
|
||||
memberOf: ['team-d'],
|
||||
},
|
||||
},
|
||||
{
|
||||
apiVersion: 'backstage.io/v1alpha1',
|
||||
kind: 'User',
|
||||
metadata: {
|
||||
name: 'sara.macgovern',
|
||||
namespace: 'default',
|
||||
uid: 'a5gerth57',
|
||||
},
|
||||
relations: [
|
||||
{
|
||||
type: 'memberOf',
|
||||
target: {
|
||||
kind: 'group',
|
||||
name: 'team-d',
|
||||
namespace: 'foo-bar',
|
||||
},
|
||||
},
|
||||
],
|
||||
spec: {
|
||||
profile: {
|
||||
displayName: 'Sara MacGovern',
|
||||
email: 'sara-macgovern@example.com',
|
||||
picture: 'https://example.com/staff/sara.jpeg',
|
||||
},
|
||||
memberOf: ['foo-bar/team-d'],
|
||||
},
|
||||
},
|
||||
] as Entity[],
|
||||
}),
|
||||
};
|
||||
|
||||
@@ -16,8 +16,8 @@
|
||||
import {
|
||||
ENTITY_DEFAULT_NAMESPACE,
|
||||
GroupEntity,
|
||||
RELATION_MEMBER_OF,
|
||||
UserEntity,
|
||||
stringifyEntityRef,
|
||||
} from '@backstage/catalog-model';
|
||||
import {
|
||||
catalogApiRef,
|
||||
@@ -139,20 +139,19 @@ export const MembersListCard = (_props: {
|
||||
value: members,
|
||||
} = useAsync(async () => {
|
||||
const membersList = await catalogApi.getEntities({
|
||||
filter: { kind: 'User' },
|
||||
filter: {
|
||||
kind: 'User',
|
||||
'relations.memberof': [
|
||||
stringifyEntityRef({
|
||||
kind: 'group',
|
||||
namespace: groupNamespace.toLocaleLowerCase('en-US'),
|
||||
name: groupName.toLocaleLowerCase('en-US'),
|
||||
}),
|
||||
],
|
||||
},
|
||||
});
|
||||
const groupMembersList = (membersList.items as UserEntity[]).filter(
|
||||
member =>
|
||||
member?.relations?.some(
|
||||
r =>
|
||||
r.type === RELATION_MEMBER_OF &&
|
||||
r.target.name.toLocaleLowerCase('en-US') ===
|
||||
groupName.toLocaleLowerCase('en-US') &&
|
||||
r.target.namespace.toLocaleLowerCase('en-US') ===
|
||||
groupNamespace.toLocaleLowerCase('en-US'),
|
||||
),
|
||||
);
|
||||
return groupMembersList;
|
||||
|
||||
return membersList.items as UserEntity[];
|
||||
}, [catalogApi, groupEntity]);
|
||||
|
||||
if (loading) {
|
||||
|
||||
Reference in New Issue
Block a user