Insert ga tags in app

This commit is contained in:
Tom Moor
2017-11-09 00:17:55 -08:00
parent 7bad7a2567
commit b08e34d578
6 changed files with 30 additions and 32 deletions

View File

@ -6,6 +6,7 @@ import { Helmet } from 'react-helmet';
import styled from 'styled-components';
import { observer, inject } from 'mobx-react';
import keydown from 'react-keydown';
import Analytics from 'shared/components/Analytics';
import Flex from 'shared/components/Flex';
import { color, layout } from 'shared/styles/constants';
import { documentEditUrl, homeUrl, searchUrl } from 'utils/routeHelpers';
@ -108,6 +109,7 @@ type Props = {
content="width=device-width, initial-scale=1.0"
/>
</Helmet>
<Analytics />
{this.props.ui.progressBarVisible && <LoadingIndicatorBar />}
{this.props.notifications}

View File

@ -1,30 +0,0 @@
// @flow
import React from 'react';
function getScript() {
if (!process.env.GOOGLE_ANALYTICS_ID) return undefined;
return {
__html: `
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', '${process.env.GOOGLE_ANALYTICS_ID}');
`,
};
}
function Analytics() {
if (!process.env.GOOGLE_ANALYTICS_ID) return null;
return (
<span>
<script
src={`https://www.googletagmanager.com/gtag/js?id=${process.env.GOOGLE_ANALYTICS_ID}`}
/>
<script dangerouslySetInnerHTML={getScript()} />
</span>
);
}
export default Analytics;

View File

@ -2,7 +2,7 @@
import React from 'react';
import { Helmet } from 'react-helmet';
import Navigation from './Navigation';
import Analytics from './Analytics';
import Analytics from '../../../shared/components/Analytics';
import globalStyles from '../../../shared/styles/globals';
type Props = {

View File

@ -0,0 +1,25 @@
// @flow
import React from 'react';
function Analytics() {
const id = process.env.GOOGLE_ANALYTICS_ID;
if (!id) return null;
return (
<span>
<script src={`https://www.googletagmanager.com/gtag/js?id=${id}`} />
<script
dangerouslySetInnerHTML={{
__html: `
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', '${id}');
`,
}}
/>
</span>
);
}
export default Analytics;

View File

@ -14,7 +14,7 @@ const definePlugin = new webpack.DefinePlugin({
SLACK_KEY: JSON.stringify(process.env.SLACK_KEY),
BASE_URL: JSON.stringify(process.env.URL),
BUGSNAG_KEY: JSON.stringify(process.env.BUGSNAG_KEY),
DEPLOYMENT: JSON.stringify(process.env.DEPLOYMENT || 'hosted'),
DEPLOYMENT: JSON.stringify(process.env.DEPLOYMENT || 'hosted')
});
module.exports = {

View File

@ -38,6 +38,7 @@ productionWebpackConfig.plugins.push(
new webpack.DefinePlugin({
'process.env': {
NODE_ENV: JSON.stringify('production'),
GOOGLE_ANALYTICS_ID: JSON.stringify(process.env.GOOGLE_ANALYTICS_ID),
},
})
);