-
Notifications
You must be signed in to change notification settings - Fork 2.2k
/
Copy pathanalytics.ts
30 lines (24 loc) · 1010 Bytes
/
analytics.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import { ɵgetAllInstancesOf } from '@angular/fire';
import { Analytics as FirebaseAnalytics } from 'firebase/analytics';
import { from, timer } from 'rxjs';
import { concatMap, distinct } from 'rxjs/operators';
// see notes in core/firebase.app.module.ts for why we're building the class like this
// eslint-disable-next-line @typescript-eslint/no-empty-interface
export interface Analytics extends FirebaseAnalytics {}
export class Analytics {
constructor(analytics: FirebaseAnalytics) {
return analytics;
}
}
export const ANALYTICS_PROVIDER_NAME = 'analytics';
// eslint-disable-next-line @typescript-eslint/no-empty-interface
export interface AnalyticsInstances extends Array<FirebaseAnalytics> {}
export class AnalyticsInstances {
constructor() {
return ɵgetAllInstancesOf<FirebaseAnalytics>(ANALYTICS_PROVIDER_NAME);
}
}
export const analyticInstance$ = timer(0, 300).pipe(
concatMap(() => from(ɵgetAllInstancesOf<FirebaseAnalytics>(ANALYTICS_PROVIDER_NAME))),
distinct(),
);