1 | import React, { createContext, useMemo, useEffect } from 'react';
|
2 | import { useCookies } from 'react-cookie';
|
3 | import { useTracker } from '../analytics/Analytics';
|
4 | import { trackExperimentEvent } from '../analytics/tracking';
|
5 | export const ExperimentsContext = createContext(null);
|
6 | const ExperimentsProvider = ({ children }) => {
|
7 | const [cookies] = useCookies(['optimizeExperiment']);
|
8 | const value = useMemo(() => {
|
9 | if (!cookies.optimizeExperiment) {
|
10 | return {
|
11 | experiment: null,
|
12 | variant: null
|
13 | };
|
14 | }
|
15 | const [experiment, variant] = cookies.optimizeExperiment.split('.');
|
16 | return {
|
17 | experiment,
|
18 | variant: parseInt(variant, 10)
|
19 | };
|
20 | }, [cookies]);
|
21 | const track = useTracker();
|
22 | useEffect(() => track(trackExperimentEvent({
|
23 | id: value.experiment,
|
24 | variant: value.variant
|
25 | })), [value, track]);
|
26 | return (React.createElement(ExperimentsContext.Provider, { value: value }, children));
|
27 | };
|
28 | export default ExperimentsProvider;
|
29 |
|
\ | No newline at end of file |