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)