diff --git a/client/gatsby-ssr.js b/client/gatsby-ssr.js
index 9306aa55aa..9e468bc0f8 100644
--- a/client/gatsby-ssr.js
+++ b/client/gatsby-ssr.js
@@ -17,28 +17,73 @@ wrapRootElement.propTypes = {
element: PropTypes.any
};
+// TODO: put these in a common utils file.
+const mathJaxCdn = {
+ address:
+ 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/' +
+ '2.7.4/MathJax.js?config=TeX-AMS_HTML',
+ key: 'mathjax',
+ type: 'text/javascript'
+};
+
+const stripeScript = {
+ address: 'https://js.stripe.com/v3/',
+ id: 'stripe-js',
+ key: 'stripe-js',
+ type: 'text/javascript'
+};
+
+const challengeRE = new RegExp('/learn/[^/]+/[^/]+/[^/]+/?$');
+const donateRE = new RegExp('/donate/?$');
+
export const wrapPageElement = layoutSelector;
-export const onRenderBody = ({ setHeadComponents, setPostBodyComponents }) => {
+export const onRenderBody = ({
+ pathname,
+ setHeadComponents,
+ setPostBodyComponents
+}) => {
setHeadComponents([...headComponents]);
- setPostBodyComponents(
- [
+ const scripts = [
+ ,
+
+ ];
+
+ if (pathname.includes('/learn/coding-interview-prep/rosetta-code/')) {
+ scripts.push(
,
-
- ].filter(Boolean)
- );
+ );
+ }
+
+ if (challengeRE.test(pathname) || donateRE.test(pathname)) {
+ scripts.push(
+
+ );
+ }
+
+ setPostBodyComponents(scripts.filter(Boolean));
};
diff --git a/client/src/head/index.js b/client/src/head/index.js
index b8e97e5638..70d90294bc 100644
--- a/client/src/head/index.js
+++ b/client/src/head/index.js
@@ -1,8 +1,6 @@
import meta from './meta';
-import mathjax from './mathjax';
-import scripts from './scripts';
-const metaAndStyleSheets = meta.concat(mathjax, scripts).map((element, i) => ({
+const metaAndStyleSheets = meta.map((element, i) => ({
...element,
key: `meta-stylesheet-${i}`,
props: { ...element.props, key: `meta-stylesheet-${i}` }
diff --git a/client/src/head/mathjax.js b/client/src/head/mathjax.js
deleted file mode 100644
index f65d15ad24..0000000000
--- a/client/src/head/mathjax.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import React from 'react';
-
-const cdnAddr =
- 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/' +
- '2.7.4/MathJax.js?config=TeX-AMS_HTML';
-
-const mathjax = [];
-
-export default mathjax;
diff --git a/client/src/head/scripts.js b/client/src/head/scripts.js
deleted file mode 100644
index e8be1e47d9..0000000000
--- a/client/src/head/scripts.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const scripts = [];
-
-export default scripts;