From bd1a822c6d2c0f846e25afdcd86a80d4f60e30cb Mon Sep 17 00:00:00 2001 From: Paladetch Usavasereelert Date: Fri, 28 Jan 2022 15:40:07 +0900 Subject: [PATCH 1/3] org: add relations.memberof filter to catalog api call Signed-off-by: Paladetch Usavasereelert --- .../MembersList/MembersListCard.test.tsx | 27 ------------------- .../Group/MembersList/MembersListCard.tsx | 27 +++++++++---------- 2 files changed, 13 insertions(+), 41 deletions(-) diff --git a/plugins/org/src/components/Cards/Group/MembersList/MembersListCard.test.tsx b/plugins/org/src/components/Cards/Group/MembersList/MembersListCard.test.tsx index 5ef4079bf4..99be8571e0 100644 --- a/plugins/org/src/components/Cards/Group/MembersList/MembersListCard.test.tsx +++ b/plugins/org/src/components/Cards/Group/MembersList/MembersListCard.test.tsx @@ -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[], }), }; diff --git a/plugins/org/src/components/Cards/Group/MembersList/MembersListCard.tsx b/plugins/org/src/components/Cards/Group/MembersList/MembersListCard.tsx index 8aca65f1d4..9a107f2d8f 100644 --- a/plugins/org/src/components/Cards/Group/MembersList/MembersListCard.tsx +++ b/plugins/org/src/components/Cards/Group/MembersList/MembersListCard.tsx @@ -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) { From ef86143c16c6e930d98f18f54243887a6f3db02d Mon Sep 17 00:00:00 2001 From: Paladetch Usavasereelert Date: Fri, 28 Jan 2022 15:48:16 +0900 Subject: [PATCH 2/3] org: update changeset Signed-off-by: Paladetch Usavasereelert --- .changeset/nasty-pets-glow.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/nasty-pets-glow.md diff --git a/.changeset/nasty-pets-glow.md b/.changeset/nasty-pets-glow.md new file mode 100644 index 0000000000..fd5677176f --- /dev/null +++ b/.changeset/nasty-pets-glow.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-org': patch +--- + +Added relations.memberof filter to the catalog api call in MemberListCard to avoid fetching the whole User kind entity from catalog-backend. From ae3b4ebb5370d181bdc831f5917808729375fafd Mon Sep 17 00:00:00 2001 From: Paladetch Usavasereelert Date: Fri, 28 Jan 2022 21:21:04 +0900 Subject: [PATCH 3/3] Update .changeset/nasty-pets-glow.md Signed-off-by: Paladetch Usavasereelert Co-authored-by: Johan Haals --- .changeset/nasty-pets-glow.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/nasty-pets-glow.md b/.changeset/nasty-pets-glow.md index fd5677176f..e630736261 100644 --- a/.changeset/nasty-pets-glow.md +++ b/.changeset/nasty-pets-glow.md @@ -2,4 +2,4 @@ '@backstage/plugin-org': patch --- -Added relations.memberof filter to the catalog api call in MemberListCard to avoid fetching the whole User kind entity from catalog-backend. +Added `relations.memberof` filter to the catalog api call in `MemberListCard` to avoid fetching all the User entity kinds from catalog-backend.