diff --git a/.changeset/polite-planets-learn.md b/.changeset/polite-planets-learn.md new file mode 100644 index 0000000000..283af6e801 --- /dev/null +++ b/.changeset/polite-planets-learn.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-org': patch +--- + +Fix linking ownership card to catalog owner filter when namespaces are used diff --git a/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.test.tsx b/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.test.tsx index b6e3982d51..16a8898f0a 100644 --- a/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.test.tsx +++ b/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.test.tsx @@ -265,6 +265,10 @@ describe('OwnershipCard', () => { type: 'memberOf', targetRef: 'group:default/my-team', }, + { + type: 'memberOf', + targetRef: 'group:custom/some-team', + }, ], }; const catalogApi: jest.Mocked = { @@ -288,7 +292,7 @@ describe('OwnershipCard', () => { expect(getByText('OPENAPI').closest('a')).toHaveAttribute( 'href', - '/create/?filters%5Bkind%5D=API&filters%5Btype%5D=openapi&filters%5Bowners%5D=the-user&filters%5Bowners%5D=my-team&filters%5Buser%5D=all', + '/create/?filters%5Bkind%5D=API&filters%5Btype%5D=openapi&filters%5Bowners%5D=user%3Athe-user&filters%5Bowners%5D=my-team&filters%5Bowners%5D=custom%2Fsome-team&filters%5Buser%5D=all', ); }); diff --git a/plugins/org/src/components/Cards/OwnershipCard/useGetEntities.ts b/plugins/org/src/components/Cards/OwnershipCard/useGetEntities.ts index 6a4aaa1399..7c0bb76e2e 100644 --- a/plugins/org/src/components/Cards/OwnershipCard/useGetEntities.ts +++ b/plugins/org/src/components/Cards/OwnershipCard/useGetEntities.ts @@ -18,12 +18,14 @@ import { Entity, RELATION_MEMBER_OF, RELATION_PARENT_OF, + parseEntityRef, stringifyEntityRef, } from '@backstage/catalog-model'; import { CatalogApi, catalogApiRef, getEntityRelations, + humanizeEntityRef, } from '@backstage/plugin-catalog-react'; import limiterFactory from 'p-limit'; import { useApi } from '@backstage/core-plugin-api'; @@ -43,7 +45,9 @@ const getQueryParams = ( selectedEntity: EntityTypeProps, ): string => { const { kind, type } = selectedEntity; - const owners = ownersEntityRef.map(owner => owner.split('/')[1]); + const owners = ownersEntityRef.map(owner => + humanizeEntityRef(parseEntityRef(owner), { defaultKind: 'group' }), + ); const filters = { kind, type,