diff --git a/common/api-review/telemetry-angular.api.md b/common/api-review/telemetry-angular.api.md index c3ca0aa2ea..ec667fc70a 100644 --- a/common/api-review/telemetry-angular.api.md +++ b/common/api-review/telemetry-angular.api.md @@ -10,7 +10,7 @@ import { LoggerProvider } from '@opentelemetry/sdk-logs'; // @public export class FirebaseErrorHandler implements ErrorHandler { - constructor(telemetryOptions?: TelemetryOptions | undefined); + constructor(app: FirebaseApp, telemetryOptions?: TelemetryOptions | undefined); // (undocumented) handleError(error: unknown): void; } diff --git a/docs-devsite/telemetry_angular.firebaseerrorhandler.md b/docs-devsite/telemetry_angular.firebaseerrorhandler.md index 7fbed3d7cf..370fc1af6b 100644 --- a/docs-devsite/telemetry_angular.firebaseerrorhandler.md +++ b/docs-devsite/telemetry_angular.firebaseerrorhandler.md @@ -25,7 +25,7 @@ export declare class FirebaseErrorHandler implements ErrorHandler | Constructor | Modifiers | Description | | --- | --- | --- | -| [(constructor)(telemetryOptions)](./telemetry_angular.firebaseerrorhandler.md#firebaseerrorhandlerconstructor) | | Constructs a new instance of the FirebaseErrorHandler class | +| [(constructor)(app, telemetryOptions)](./telemetry_angular.firebaseerrorhandler.md#firebaseerrorhandlerconstructor) | | Constructs a new instance of the FirebaseErrorHandler class | ## Methods @@ -40,13 +40,14 @@ Constructs a new instance of the `FirebaseErrorHandler` class Signature: ```typescript -constructor(telemetryOptions?: TelemetryOptions | undefined); +constructor(app: FirebaseApp, telemetryOptions?: TelemetryOptions | undefined); ``` #### Parameters | Parameter | Type | Description | | --- | --- | --- | +| app | [FirebaseApp](./app.firebaseapp.md#firebaseapp_interface) | | | telemetryOptions | [TelemetryOptions](./telemetry_.telemetryoptions.md#telemetryoptions_interface) \| undefined | | ## FirebaseErrorHandler.handleError() @@ -78,7 +79,10 @@ import { FirebaseErrorHandler } from '@firebase/telemetry-angular'; @NgModule({ // ... providers: [ - { provide: ErrorHandler, useClass: FirebaseErrorHandler } + { + provide: ErrorHandler, + useFactory: () => new FirebaseErrorHandler(firebaseApp) + } ], // ... }) @@ -99,7 +103,7 @@ import { FirebaseErrorHandler } from '@firebase/telemetry-angular'; providers: [ { provide: ErrorHandler, - useFactory: () => new FirebaseErrorHandler({ appVersion: '1.2.3' }) + useFactory: () => new FirebaseErrorHandler(firebaseApp, { appVersion: '1.2.3' }) } ], // ... diff --git a/packages/telemetry/src/angular/index.test.ts b/packages/telemetry/src/angular/index.test.ts index 044467d93d..2592c29ff6 100644 --- a/packages/telemetry/src/angular/index.test.ts +++ b/packages/telemetry/src/angular/index.test.ts @@ -75,7 +75,7 @@ describe('FirebaseErrorHandler', () => { const testInjector = TestBed.inject(Injector); errorHandler = runInInjectionContext( testInjector, - () => new FirebaseErrorHandler() + () => new FirebaseErrorHandler(app) ); router = TestBed.inject(Router); }); diff --git a/packages/telemetry/src/angular/index.ts b/packages/telemetry/src/angular/index.ts index 38a8027763..375d96cd25 100644 --- a/packages/telemetry/src/angular/index.ts +++ b/packages/telemetry/src/angular/index.ts @@ -22,7 +22,7 @@ import { ActivatedRouteSnapshot, Router } from '@angular/router'; import { registerTelemetry } from '../register'; import { captureError, getTelemetry } from '../api'; import { TelemetryOptions } from '../public-types'; -import { getApp } from '@firebase/app'; +import { FirebaseApp } from '@firebase/app'; registerTelemetry(); @@ -42,7 +42,10 @@ export * from '../public-types'; * @NgModule({ * // ... * providers: [ - * { provide: ErrorHandler, useClass: FirebaseErrorHandler } + * { + * provide: ErrorHandler, + * useFactory: () => new FirebaseErrorHandler(firebaseApp) + * } * ], * // ... * }) @@ -60,7 +63,7 @@ export * from '../public-types'; * providers: [ * { * provide: ErrorHandler, - * useFactory: () => new FirebaseErrorHandler({ appVersion: '1.2.3' }) + * useFactory: () => new FirebaseErrorHandler(firebaseApp, { appVersion: '1.2.3' }) * } * ], * // ... @@ -68,6 +71,7 @@ export * from '../public-types'; * export class AppModule { } * ``` * + * @param firebaseApp - The {@link @firebase/app#FirebaseApp} instance to use. * @param telemetryOptions - Optional. {@link TelemetryOptions} that configure the Telemetry instance. * To provide these options, you must use a `useFactory` provider as shown in the example above. * @@ -76,10 +80,13 @@ export * from '../public-types'; export class FirebaseErrorHandler implements ErrorHandler { private readonly router = inject(Router); - constructor(private telemetryOptions?: TelemetryOptions) {} + constructor( + private app: FirebaseApp, + private telemetryOptions?: TelemetryOptions + ) {} handleError(error: unknown): void { - const telemetry = getTelemetry(getApp(), this.telemetryOptions); + const telemetry = getTelemetry(this.app, this.telemetryOptions); const attributes = { 'angular_route_path': this.getSafeRoutePath(this.router)