src/app/hooks/useOptimizelyMvtVariation/index.jsx

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
import { useContext } from 'react';
import { OptimizelyContext } from '@optimizely/react-sdk';
import { RequestContext } from '#contexts/RequestContext';
import activateExperiment from './activateExperiment';

const useOptimizelyMvtVariation = id => {
  const { optimizely } = useContext(OptimizelyContext);
  const { mvtExperiments } = useContext(RequestContext);

  if (!mvtExperiments || mvtExperiments.length === 0 || id === null) {
    return null;
  }

  const experiment = mvtExperiments.find(
    ({ experimentName }) => experimentName === id,
  );

  if (!experiment) return null;

  const isEnabled = experiment.enabled;
  const variation = isEnabled && experiment.variation;

  if (variation) activateExperiment(optimizely, id, variation);

  return variation;
};

export default useOptimizelyMvtVariation;