Skip to content

Commit

Permalink
fix(tracking): track client-side actions
Browse files Browse the repository at this point in the history
  • Loading branch information
JPSchellenberg committed Feb 22, 2020
1 parent 0c1d7c6 commit 9a4938e
Show file tree
Hide file tree
Showing 16 changed files with 900 additions and 797 deletions.
3 changes: 0 additions & 3 deletions src/client/boot/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,10 @@ import App from '../views';

import SnackbarProvider from '../theme/Snackbar';

import { track } from 'lib/track/actions';

const log = new Logger('root');

log.info(`booting v${process.env.VERSION}`);
Sentry.captureMessage('start');
track('start');

declare var window: any;

Expand Down
9 changes: 8 additions & 1 deletion src/client/lib/components/AppBar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ import MenuIcon from '@material-ui/icons/Menu';

import { drawerWidth } from '../../theme';

import { track } from 'lib/track/actions';

export default function AppBar(props: {
leftDrawerOpen: boolean;
openLeftDrawer?: () => void;
Expand All @@ -32,7 +34,12 @@ export default function AppBar(props: {
<IconButton
color="inherit"
aria-label="open drawer"
onClick={openLeftDrawer}
onClick={() => {
track('app_bar', 'click', 'menu_icon');
if (openLeftDrawer) {
openLeftDrawer();
}
}}
edge="start"
className={clsx(
classes.menuButton,
Expand Down
16 changes: 14 additions & 2 deletions src/client/lib/components/EditorStartPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ import Grid from '@material-ui/core/Grid';
import { makeStyles, Theme } from '@material-ui/core/styles';
import Typography from '@material-ui/core/Typography';

import { track } from 'lib/track/actions';

export default function EditorStartPage(props: {
primaryButtonClick: () => void;
secondaryButtonClick: () => void;
Expand Down Expand Up @@ -36,7 +38,10 @@ export default function EditorStartPage(props: {
<Grid item={true}>
<Button
id="editor-startpage-primaryButton"
onClick={props.primaryButtonClick}
onClick={() => {
track('start_page', 'click', 'primary_button');
props.primaryButtonClick();
}}
variant="contained"
color="primary"
>
Expand All @@ -46,7 +51,14 @@ export default function EditorStartPage(props: {
<Grid item={true}>
<Button
id="editor-startpage-secondaryButton"
onClick={props.secondaryButtonClick}
onClick={() => {
track(
'start_page',
'click',
'secondary_button'
);
props.secondaryButtonClick();
}}
variant="outlined"
color="primary"
>
Expand Down
9 changes: 8 additions & 1 deletion src/client/lib/components/LeftDrawer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ import ChevronLeftIcon from '@material-ui/icons/ChevronLeft';

import { drawerWidth } from '../../theme';

import { track } from 'lib/track/actions';

export default function LeftDrawer(props: {
children?: React.ReactNode;
closeLeftDrawer: () => void;
Expand All @@ -29,7 +31,12 @@ export default function LeftDrawer(props: {
}}
>
<div className={classes.drawerHeader}>
<IconButton onClick={closeLeftDrawer}>
<IconButton
onClick={() => {
track('left_drawer', 'click', 'close');
closeLeftDrawer();
}}
>
<ChevronLeftIcon />
</IconButton>
</div>
Expand Down
29 changes: 18 additions & 11 deletions src/client/lib/track/actions.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,20 @@
// import nucleus from 'nucleus-nodejs';
import * as api from './api';

export function track(event: string, payload?: any): any {
// nucleus.track(event, payload);

return {
payload: {
event,
payload
},
type: 'TRACK'
};
export function track(
category: string,
action: string,
name?: string,
value?: string
): any {
return api.track(category, action, name, value).then(() => {
return {
payload: {
action,
category,
name,
value
},
type: 'TRACK'
};
});
}
15 changes: 15 additions & 0 deletions src/client/lib/track/api.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import superagent from 'superagent';

export function track(
category: string,
action: string,
name?: string,
value?: string
): Promise<superagent.Response> {
return superagent.post('/api/track/v0').send({
action,
category,
name,
value
});
}
Loading

0 comments on commit 9a4938e

Please sign in to comment.