Files
freeCodeCamp/client/gatsby-ssr.js
T
0df7ee430d feat(client): add growthbook (#48003)
* feat: initial set up

* feat: useFeature setup

* feat: adjust attributes

* chore(client): remove ts-disables in growth-book-wrapper

* feat: pull growthbook uri from env

* feat: adjust the staff atribute

* feat: make linter happy

* feat: update recruitment message

* refactor: simplify types

* chore: delete unused config

* fix: update copy

* fix: add growthbookUri to expected env vars

Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
2022-10-17 14:53:25 +02:00

54 lines
1.4 KiB
JavaScript

import PropTypes from 'prop-types';
import React from 'react';
import { I18nextProvider } from 'react-i18next';
import { Provider } from 'react-redux';
import i18n from './i18n/config';
import { createStore } from './src/redux/createStore';
import layoutSelector from './utils/gatsby/layout-selector';
import { getheadTagComponents, getPostBodyComponents } from './utils/tags';
import GrowthBookProvider from './src/components/growth-book/growth-book-wrapper';
const store = createStore();
export const wrapRootElement = ({ element }) => {
return (
<Provider store={store}>
<I18nextProvider i18n={i18n}>
<GrowthBookProvider>{element}</GrowthBookProvider>
</I18nextProvider>
</Provider>
);
};
wrapRootElement.propTypes = {
element: PropTypes.any
};
export const wrapPageElement = layoutSelector;
export const onRenderBody = ({
pathname,
setHeadComponents,
setPostBodyComponents
}) => {
setHeadComponents(getheadTagComponents());
setPostBodyComponents(getPostBodyComponents(pathname));
};
export const onPreRenderHTML = ({
getHeadComponents,
replaceHeadComponents
}) => {
const headComponents = getHeadComponents();
headComponents.sort((x, y) => {
if (x.key === 'bootstrap-min-preload' || x.key === 'bootstrap-min') {
return -1;
} else if (y.key === 'bootstrap-min-preload' || y.key === 'bootstrap-min') {
return 1;
}
return 0;
});
replaceHeadComponents(headComponents);
};