Soluto/shisell-js

View on GitHub
src/internal/extenders/withContext.ts

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
import {AnalyticsContext} from '../AnalyticsContext';
import {AnalyticsDispatcher} from '../AnalyticsDispatcher';

export function withContext(analyticsContext: Partial<AnalyticsContext>) {
  return <T>(dispatcher: AnalyticsDispatcher<T>) =>
    new AnalyticsDispatcher<T>(
      dispatcher.dispatch.bind(dispatcher),
      analyticsContext instanceof AnalyticsContext
        ? analyticsContext
        : new AnalyticsContext(
            analyticsContext.Scopes,
            analyticsContext.ExtraData,
            analyticsContext.MetaData,
            analyticsContext.Identities,
            analyticsContext.Filters,
          ),
    );
}