Skip to content

Commit 9592d32

Browse files
committed
GA works on prod only
1 parent eea768d commit 9592d32

File tree

8 files changed

+38
-32
lines changed

8 files changed

+38
-32
lines changed

.env.example

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
11
SENTRY_DSN='https://XXXX.ingest.sentry.io/00000000'
22
GA_UACODE=UA-XXXXXXXXXX
3+
# DEBUG=universal-analytics
4+
# NODE_DEBUG=request # debug requests in analytics

src/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ require('dotenv').config();
44

55
import App from './App';
66
import { initSentry } from './shared/initSentry';
7-
import './services/GaService';
7+
import './services/gaService/GaService';
88

99
initSentry();
1010

src/modules/projects/ProjectStore.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,11 @@ import ProjectModel from './models/ProjectModel';
44
import ProjectService from './ProjectService';
55
import TreeModelStoreHelper from '../../base/TreeModelStoreHelper';
66
import { Undefined } from '../../types/CommonTypes';
7-
import GaService from '../../services/GaService';
8-
import { EEventCategory, EProjectEvents } from '../../services/EEvents';
7+
import GaService from '../../services/gaService/GaService';
8+
import {
9+
EEventCategory,
10+
EProjectEvents,
11+
} from '../../services/gaService/EEvents';
912

1013
export default class ProjectStore {
1114
projects: ProjectModel[] = [];

src/modules/tasks/TaskStore.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ import TaskModel, { ITimeRangeModel } from './models/TaskModel';
55
import TasksByProject from '../../modules/tasks/models/TasksByProject';
66
import TreeModelStoreHelper from '../../base/TreeModelStoreHelper';
77
import BadgeService from '../BadgeService';
8-
import GaService from '../../services/GaService';
8+
import GaService from '../../services/gaService/GaService';
99
import {
1010
EEventCategory,
1111
ETasksEvents,
1212
ETimeRangeEvents,
13-
} from '../../services/EEvents';
13+
} from '../../services/gaService/EEvents';
1414

1515
export default class TaskStore {
1616
tasks: TasksByProject = {};

src/screens/Main.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import TaskControl from '../components/TaskControl/TaskControl';
77
import HeaderMenu from '../components/HeaderMenu/HeaderMenu';
88
import HoursScreen from './hours/HoursScreen';
99
import Dashboard from './dashboard/Dashboard';
10-
import GaService from '../services/GaService';
10+
import GaService from '../services/gaService/GaService';
1111

1212
const { Header } = Layout;
1313

src/services/GaService.ts

Lines changed: 0 additions & 26 deletions
This file was deleted.
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import ua from 'universal-analytics';
2+
3+
const isProd = process.env.NODE_ENV === 'production';
4+
5+
const gaCode = process.env.GA_UACODE;
6+
let analytics: any | null = null;
7+
8+
if (isProd && gaCode) {
9+
analytics = ua(gaCode);
10+
}
11+
12+
const executeOnCondition = (fn: () => void) => {
13+
if (isProd && analytics) {
14+
fn();
15+
}
16+
};
17+
18+
const GaService = {
19+
pageView(path: string) {
20+
executeOnCondition(analytics?.pageview(path).send());
21+
},
22+
event(category: string, action: string) {
23+
executeOnCondition(analytics?.event(category, action).send());
24+
},
25+
};
26+
27+
export default GaService;

0 commit comments

Comments
 (0)