summaryrefslogtreecommitdiff
path: root/shared/metrics-8/src/impression-snapshot-provider.ts
blob: c7261f97e7b654be0e370810e5a34b05232e24a9 (plain)
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
import type {
    MetricsFieldsBuilder,
    MetricsFieldsContext,
    MetricsFieldsProvider,
} from '@jet/engine';
import { IMPRESSION_CONTEXT_NAME } from './impressions/constants';
import type { Impressions } from './impressions';

export class ImpressionSnapshotFieldProvider implements MetricsFieldsProvider {
    constructor(private readonly appContext: Map<string, unknown>) {
        this.appContext = appContext;
    }

    addMetricsFields(
        builder: MetricsFieldsBuilder,
        _metricsContext: MetricsFieldsContext,
    ) {
        const impressionInstance = this.appContext.get(
            IMPRESSION_CONTEXT_NAME,
        ) as Impressions;

        if (impressionInstance?.settings?.captureType === 'jet') {
            let impressions = impressionInstance.captureSnapshotImpression();
            builder.addValue(impressions, 'impressions');
        }
    }
}