Skip to content

Commit a25b625

Browse files
committed
Add one analytics call to check which commands are being used
1 parent 1c6e320 commit a25b625

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

66 files changed

+231
-63
lines changed

dev-env/webpack/config.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,8 @@ function configGenerator(Manifest) {
7272
"global.GENTLY": false,
7373
"process.env": {
7474
NODE_ENV: JSON.stringify(isDevelopment ? 'development' : 'production'),
75-
IS_BROWSER: true
75+
IS_BROWSER: true,
76+
ENABLE_ANALYTICS: process.env.ENABLE_ANALYTICS
7677
}
7778
})
7879
];
@@ -197,6 +198,13 @@ function configGenerator(Manifest) {
197198
}
198199
])
199200

201+
loaders = loaders.concat([
202+
{
203+
test: /google\-analytics\-bundle\.js$/,
204+
loader: 'imports?this=>window'
205+
}
206+
])
207+
200208
// Json
201209
loaders = loaders.concat([
202210
{

src/background/analytics.js

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import './vendor/google-analytics-bundle'
2+
3+
var tracker
4+
5+
function shouldSend() {
6+
return (process.env.NODE_ENV == 'production' || process.env.ENABLE_ANALYTICS)
7+
}
8+
9+
function addListener() {
10+
chrome.runtime.onMessage.addListener(
11+
(request, sender, sendResponse) => {
12+
if (request.method == 'sendEvent') {
13+
sendEvent(request.category, request.action, request.label, request.value)
14+
}
15+
});
16+
}
17+
18+
function configureGA() {
19+
let service = analytics.getService('command')
20+
tracker = service.getTracker('UA-75050322-1')
21+
sendEvent('initialize')
22+
sendView('Background Page')
23+
}
24+
25+
function sendView(view) {
26+
if (!shouldSend()) return
27+
tracker.sendAppView(view)
28+
}
29+
30+
function sendEvent(category, action, label, value) {
31+
if (!shouldSend()) return
32+
tracker.sendEvent(category, action, label, value)
33+
}
34+
35+
export function setup() {
36+
if (!shouldSend()) return
37+
38+
configureGA()
39+
addListener()
40+
}
41+

src/background/headers.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
export function setup() {
2+
// Listens when new request
3+
chrome.webRequest.onHeadersReceived.addListener(function(details) {
4+
for (let i = 0; i < details.responseHeaders.length; i++) {
5+
6+
if (isCSPHeader(details.responseHeaders[i].name.toUpperCase())) {
7+
var csp = details.responseHeaders[i].value;
8+
csp = csp.replace('media-src', "media-src blob:");
9+
details.responseHeaders[i].value = csp;
10+
}
11+
}
12+
13+
return { // Return the new HTTP header
14+
responseHeaders: details.responseHeaders
15+
};
16+
}, {
17+
urls: ["https://github.com/*"],
18+
types: ["main_frame"]
19+
}, ["blocking", "responseHeaders"]);
20+
}
21+
22+
function isCSPHeader(headerName) {
23+
return (headerName == 'CONTENT-SECURITY-POLICY') || (headerName == 'X-WEBKIT-CSP');
24+
}

src/background/index.js

Lines changed: 4 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,5 @@
1-
// Listens when new request
2-
chrome.webRequest.onHeadersReceived.addListener(function(details) {
3-
for (let i = 0; i < details.responseHeaders.length; i++) {
1+
import * as Analytics from './analytics'
2+
import * as Headers from './headers'
43

5-
if (isCSPHeader(details.responseHeaders[i].name.toUpperCase())) {
6-
var csp = details.responseHeaders[i].value;
7-
csp = csp.replace('media-src', "media-src blob:");
8-
details.responseHeaders[i].value = csp;
9-
}
10-
}
11-
12-
return { // Return the new HTTP header
13-
responseHeaders: details.responseHeaders
14-
};
15-
}, {
16-
urls: ["https://github.com/*"],
17-
types: ["main_frame"]
18-
}, ["blocking", "responseHeaders"]);
19-
20-
21-
function isCSPHeader(headerName) {
22-
return (headerName == 'CONTENT-SECURITY-POLICY') || (headerName == 'X-WEBKIT-CSP');
23-
}
4+
Analytics.setup()
5+
Headers.setup()

src/background/vendor/google-analytics-bundle.js

Lines changed: 93 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/commands/Emoji/Emoji.jsx renamed to src/content/commands/Emoji/Emoji.jsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@ import _ from 'lodash'
22
import $ from 'jquery'
33
import React from 'react'
44
import classnames from 'classnames'
5-
import { mountReactComponent } from 'commands/mount'
5+
import { mountReactComponent } from 'content/commands/mount'
66
import * as Emojilib from 'emojilib'
77

88
import 'react-spinner/react-spinner.css'
99
import styles from './Emoji.scss'
10-
import * as Types from 'types'
11-
import * as Search from 'components/Search'
12-
import Container from 'components/Container'
10+
import * as Types from 'content/types'
11+
import * as Search from 'content/components/Search'
12+
import Container from 'content/components/Container'
1313

1414
// set IDs for keys
1515
_.map(Emojilib.lib, (v, k) => {
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)