diff --git a/docs/api/utility-apis.md b/docs/api/utility-apis.md index 308544e0f1..56dd46794a 100644 --- a/docs/api/utility-apis.md +++ b/docs/api/utility-apis.md @@ -71,8 +71,11 @@ For example, this is the default `ApiFactory` for the `ErrorApi`: createApiFactory({ api: errorApiRef, deps: { alertApi: alertApiRef }, - factory: ({ alertApi }) => - new ErrorAlerter(alertApi, new ErrorApiForwarder()), + factory: ({ alertApi }) => { + const errorApi = new ErrorAlerter(alertApi, new ErrorApiForwarder()); + UnhandledErrorForwarder.forward(errorApi, { hidden: false }); + return errorApi; + }, }); ``` diff --git a/packages/core-app-api/src/apis/implementations/ErrorApi/UnhandledErrorForwarder.ts b/packages/core-app-api/src/apis/implementations/ErrorApi/UnhandledErrorForwarder.ts index 7ef3cec3dd..b859148e8e 100644 --- a/packages/core-app-api/src/apis/implementations/ErrorApi/UnhandledErrorForwarder.ts +++ b/packages/core-app-api/src/apis/implementations/ErrorApi/UnhandledErrorForwarder.ts @@ -1,4 +1,4 @@ -import { ErrorApi } from '@backstage/core-plugin-api'; +import { ErrorApi, ErrorContext } from '@backstage/core-plugin-api'; /* * Copyright 2020 Spotify AB @@ -15,12 +15,16 @@ import { ErrorApi } from '@backstage/core-plugin-api'; * See the License for the specific language governing permissions and * limitations under the License. */ + export class UnhandledErrorForwarder { - static forward(errorApi: ErrorApi, hidden = false) { + /** + * Add event listener, such that unhandled errors can be forwarded using an given `ErrorApi` instance + */ + static forward(errorApi: ErrorApi, errorContext: ErrorContext) { window.addEventListener( 'unhandledrejection', (e: PromiseRejectionEvent) => { - errorApi.post(e.reason as Error, { hidden }); + errorApi.post(e.reason as Error, errorContext); }, ); } diff --git a/packages/core-app-api/src/app/defaultApis.ts b/packages/core-app-api/src/app/defaultApis.ts index 8ebdaa10ed..f0657f2092 100644 --- a/packages/core-app-api/src/app/defaultApis.ts +++ b/packages/core-app-api/src/app/defaultApis.ts @@ -70,7 +70,7 @@ export const defaultApis = [ deps: { alertApi: alertApiRef }, factory: ({ alertApi }) => { const errorApi = new ErrorAlerter(alertApi, new ErrorApiForwarder()); - UnhandledErrorForwarder.forward(errorApi); + UnhandledErrorForwarder.forward(errorApi, { hidden: false }); return errorApi; }, }),