From 54cef2705de76ec1b904e6d18575df38d5672180 Mon Sep 17 00:00:00 2001 From: Jordan Slott Date: Sun, 10 Dec 2023 19:13:52 -0500 Subject: [PATCH] Fixes #21798 StarredEntities home page component calls getEntitiesByRefs instead of getEntities Signed-off-by: Jordan Slott --- .changeset/shy-boxes-sleep.md | 5 +++++ .../StarredEntities/Content.test.tsx | 6 +++--- .../StarredEntities/Content.tsx | 20 ++++--------------- 3 files changed, 12 insertions(+), 19 deletions(-) create mode 100644 .changeset/shy-boxes-sleep.md 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)