diff --git a/.changeset/four-buttons-clean.md b/.changeset/four-buttons-clean.md new file mode 100644 index 0000000000..41af42b45e --- /dev/null +++ b/.changeset/four-buttons-clean.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog': patch +--- + +Handle refresh entity error in `AboutCard`. diff --git a/plugins/catalog/src/components/AboutCard/AboutCard.tsx b/plugins/catalog/src/components/AboutCard/AboutCard.tsx index b7ccd49b31..cb48be2b26 100644 --- a/plugins/catalog/src/components/AboutCard/AboutCard.tsx +++ b/plugins/catalog/src/components/AboutCard/AboutCard.tsx @@ -26,7 +26,12 @@ import { InfoCardVariants, Link, } from '@backstage/core-components'; -import { alertApiRef, useApi, useRouteRef } from '@backstage/core-plugin-api'; +import { + alertApiRef, + errorApiRef, + useApi, + useRouteRef, +} from '@backstage/core-plugin-api'; import { ScmIntegrationIcon, scmIntegrationsApiRef, @@ -90,6 +95,7 @@ export function AboutCard(props: AboutCardProps) { const scmIntegrationsApi = useApi(scmIntegrationsApiRef); const catalogApi = useApi(catalogApiRef); const alertApi = useApi(alertApiRef); + const errorApi = useApi(errorApiRef); const viewTechdocLink = useRouteRef(viewTechDocRouteRef); const entitySourceLocation = getEntitySourceLocation( @@ -139,9 +145,13 @@ export function AboutCard(props: AboutCardProps) { const allowRefresh = entityLocation?.startsWith('url:') || entityLocation?.startsWith('file:'); const refreshEntity = useCallback(async () => { - await catalogApi.refreshEntity(stringifyEntityRef(entity)); - alertApi.post({ message: 'Refresh scheduled', severity: 'info' }); - }, [catalogApi, alertApi, entity]); + try { + await catalogApi.refreshEntity(stringifyEntityRef(entity)); + alertApi.post({ message: 'Refresh scheduled', severity: 'info' }); + } catch (e) { + errorApi.post(e); + } + }, [catalogApi, alertApi, errorApi, entity]); return (