From 7f8994255995241636ce17ae72868ebc66e35d1f Mon Sep 17 00:00:00 2001 From: iaosee Date: Tue, 1 Jul 2025 11:26:06 +0800 Subject: [PATCH 1/2] ref(angular) :recycle: refactor SentryErrorHandler, using InjectionToken and optional configuration --- packages/angular/src/errorhandler.ts | 6 ++++-- packages/angular/src/index.ts | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/angular/src/errorhandler.ts b/packages/angular/src/errorhandler.ts index 31f945b08731..492ac6ba7350 100644 --- a/packages/angular/src/errorhandler.ts +++ b/packages/angular/src/errorhandler.ts @@ -1,12 +1,14 @@ import { HttpErrorResponse } from '@angular/common/http'; import type { ErrorHandler as AngularErrorHandler, OnDestroy } from '@angular/core'; -import { Inject, Injectable } from '@angular/core'; +import { Inject, Injectable, InjectionToken, Optional } from '@angular/core'; import type { ReportDialogOptions } from '@sentry/browser'; import * as Sentry from '@sentry/browser'; import type { Event } from '@sentry/core'; import { consoleSandbox, isString } from '@sentry/core'; import { runOutsideAngular } from './zone'; +export const SENTRY_ERROR_HANDLER_OPTIONS = new InjectionToken('errorHandlerOptions'); + /** * Options used to configure the behavior of the Angular ErrorHandler. */ @@ -86,7 +88,7 @@ class SentryErrorHandler implements AngularErrorHandler, OnDestroy { /** The cleanup function is executed when the injector is destroyed. */ private _removeAfterSendEventListener?: () => void; - public constructor(@Inject('errorHandlerOptions') options?: ErrorHandlerOptions) { + public constructor(@Inject(SENTRY_ERROR_HANDLER_OPTIONS) @Optional() options?: ErrorHandlerOptions) { this._options = { logErrors: true, ...options, diff --git a/packages/angular/src/index.ts b/packages/angular/src/index.ts index f0911eb9a440..53520d28cb48 100644 --- a/packages/angular/src/index.ts +++ b/packages/angular/src/index.ts @@ -3,7 +3,7 @@ export type { ErrorHandlerOptions } from './errorhandler'; export * from '@sentry/browser'; export { init, getDefaultIntegrations } from './sdk'; -export { createErrorHandler, SentryErrorHandler } from './errorhandler'; +export { createErrorHandler, SentryErrorHandler, SENTRY_ERROR_HANDLER_OPTIONS } from './errorhandler'; export { browserTracingIntegration, TraceClass, From 8f63fca8dc97fc8cfd7162fb81950d08f8db26d8 Mon Sep 17 00:00:00 2001 From: iaosee Date: Tue, 1 Jul 2025 18:06:01 +0800 Subject: [PATCH 2/2] fix(angular): refactor SentryErrorHandler --- packages/angular/src/errorhandler.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/angular/src/errorhandler.ts b/packages/angular/src/errorhandler.ts index 492ac6ba7350..5e62a86dd0ff 100644 --- a/packages/angular/src/errorhandler.ts +++ b/packages/angular/src/errorhandler.ts @@ -91,7 +91,7 @@ class SentryErrorHandler implements AngularErrorHandler, OnDestroy { public constructor(@Inject(SENTRY_ERROR_HANDLER_OPTIONS) @Optional() options?: ErrorHandlerOptions) { this._options = { logErrors: true, - ...options, + ...(options || {}), }; }