diff --git a/.changeset/shy-boxes-sleep.md b/.changeset/shy-boxes-sleep.md new file mode 100644 index 0000000000..c085c7ea78 --- /dev/null +++ b/.changeset/shy-boxes-sleep.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-home': patch +--- + +StarredEntities component calls `getEntitiesByRefs` instead of `getEntities` to improve performance since we have the `entityRefs` diff --git a/plugins/home/src/homePageComponents/StarredEntities/Content.test.tsx b/plugins/home/src/homePageComponents/StarredEntities/Content.test.tsx index 695406aab5..c41d7f586c 100644 --- a/plugins/home/src/homePageComponents/StarredEntities/Content.test.tsx +++ b/plugins/home/src/homePageComponents/StarredEntities/Content.test.tsx @@ -49,7 +49,7 @@ describe('StarredEntitiesContent', () => { mockedApi.toggleStarred('component:default/mock-starred-entity-3'); const mockCatalogApi = { - getEntities: jest + getEntitiesByRefs: jest .fn() .mockImplementation(async () => ({ items: entities })), }; @@ -87,7 +87,7 @@ describe('StarredEntitiesContent', () => { const mockedApi = new MockStarredEntitiesApi(); const mockCatalogApi = { - getEntities: jest + getEntitiesByRefs: jest .fn() .mockImplementation(async () => ({ items: entities })), }; @@ -117,7 +117,7 @@ describe('StarredEntitiesContent', () => { const mockedApi = new MockStarredEntitiesApi(); const mockCatalogApi = { - getEntities: jest + getEntitiesByRefs: jest .fn() .mockImplementation(async () => ({ items: entities })), }; diff --git a/plugins/home/src/homePageComponents/StarredEntities/Content.tsx b/plugins/home/src/homePageComponents/StarredEntities/Content.tsx index ed5eec857b..b3d4caf44e 100644 --- a/plugins/home/src/homePageComponents/StarredEntities/Content.tsx +++ b/plugins/home/src/homePageComponents/StarredEntities/Content.tsx @@ -18,11 +18,7 @@ import { catalogApiRef, useStarredEntities, } from '@backstage/plugin-catalog-react'; -import { - Entity, - parseEntityRef, - stringifyEntityRef, -} from '@backstage/catalog-model'; +import { Entity, stringifyEntityRef } from '@backstage/catalog-model'; import { useApi } from '@backstage/core-plugin-api'; import { Progress, ResponseErrorPanel } from '@backstage/core-components'; import { List, Typography, Tabs, Tab } from '@material-ui/core'; @@ -55,17 +51,9 @@ export const Content = ({ return []; } - const filter = [...starredEntities] - .map(ent => parseEntityRef(ent)) - .map(ref => ({ - kind: ref.kind, - 'metadata.namespace': ref.namespace, - 'metadata.name': ref.name, - })); - return ( - await catalogApi.getEntities({ - filter, + await catalogApi.getEntitiesByRefs({ + entityRefs: [...starredEntities], fields: [ 'kind', 'metadata.namespace', @@ -73,7 +61,7 @@ export const Content = ({ 'metadata.title', ], }) - ).items; + ).items.filter((e): e is Entity => !!e); }, [catalogApi, starredEntities]); if (starredEntities.size === 0)