diff --git a/app/components/Analytics.js b/app/components/Analytics.js new file mode 100644 index 000000000..977e4daa7 --- /dev/null +++ b/app/components/Analytics.js @@ -0,0 +1,34 @@ +// @flow +/* global ga */ +import * as React from 'react'; + +export default class Analytics extends React.Component<*> { + componentDidMount() { + if (!process.env.GOOGLE_ANALYTICS_ID) return; + + // standard Google Analytics script + window.ga = + window.ga || + function() { + // $FlowIssue + (ga.q = ga.q || []).push(arguments); + }; + + // $FlowIssue + ga.l = +new Date(); + ga('create', process.env.GOOGLE_ANALYTICS_ID, 'auto'); + ga('send', 'pageview'); + + const script = document.createElement('script'); + script.src = 'https://www.google-analytics.com/analytics.js'; + script.async = true; + + if (document.body) { + document.body.appendChild(script); + } + } + + render() { + return this.props.children || null; + } +} diff --git a/app/components/Layout/Layout.js b/app/components/Layout/Layout.js index 1c8ef6afa..b955a89c9 100644 --- a/app/components/Layout/Layout.js +++ b/app/components/Layout/Layout.js @@ -7,7 +7,7 @@ import styled from 'styled-components'; import breakpoint from 'styled-components-breakpoint'; import { observer, inject } from 'mobx-react'; import keydown from 'react-keydown'; -import Analytics from 'shared/components/Analytics'; +import Analytics from 'components/Analytics'; import Flex from 'shared/components/Flex'; import { documentEditUrl, homeUrl, searchUrl } from 'utils/routeHelpers'; diff --git a/shared/components/Analytics.js b/server/pages/components/Analytics.js similarity index 100% rename from shared/components/Analytics.js rename to server/pages/components/Analytics.js diff --git a/server/pages/components/Layout.js b/server/pages/components/Layout.js index 3b913d9d0..9040b83bf 100644 --- a/server/pages/components/Layout.js +++ b/server/pages/components/Layout.js @@ -4,7 +4,7 @@ import { Helmet } from 'react-helmet'; import styled from 'styled-components'; import breakpoint from 'styled-components-breakpoint'; import { TopNavigation, BottomNavigation } from './Navigation'; -import Analytics from '../../../shared/components/Analytics'; +import Analytics from './Analytics'; import GlobalStyles from '../../../shared/styles/globals'; import prefetchTags from '../../utils/prefetchTags';