Skip to content

Commit 1ccc96b

Browse files
committed
track downloads in fathom
1 parent 6d00877 commit 1ccc96b

File tree

1 file changed

+30
-3
lines changed

1 file changed

+30
-3
lines changed

src/templates/download.js

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import React, { memo, useEffect, useMemo, useRef, useState } from 'react';
22
import { navigate, graphql } from 'gatsby';
33
import { useIntl } from 'react-intl';
44
import classnames from 'classnames';
5+
import { useGoal } from 'gatsby-plugin-fathom';
56

67
import HeadMatter from '../components/HeadMatter';
78

@@ -31,7 +32,33 @@ const Download = ({ data }) => {
3132
const intl = useIntl();
3233
const releases = usePreparedReleases(data.releases.nodes);
3334

34-
const onAfterDownload = () => {
35+
// gatsby-plugin-fathom requires us to use hooks
36+
const trackWindows = useGoal('CIMDWXJV');
37+
const trackMacIntel = useGoal('VQUBVEQR');
38+
const trackMacSilicon = useGoal('IWSPGL5F');
39+
const trackLinux = useGoal('HHYWFK7G');
40+
const trackPi32 = useGoal('ZKSBBVWD');
41+
const trackPi64 = useGoal('TXVODVYO');
42+
43+
const onAfterDownload = (asset) => {
44+
if (asset) {
45+
if (asset.os === 'Windows') {
46+
trackWindows(0);
47+
} else if (asset.os === 'macOS' && asset.bit === 'Intel 64-bit') {
48+
trackMacIntel(0);
49+
} else if (asset.os === 'macOS' && asset.bit === 'Apple Silicon') {
50+
trackMacSilicon(0);
51+
} else if (asset.os === 'Linux') {
52+
trackLinux(0);
53+
} else if (asset.os === 'Raspberry Pi' && asset.bit === '32-bit') {
54+
trackPi32(0);
55+
} else if (asset.os === 'Raspberry Pi' && asset.bit === '64-bit') {
56+
trackPi64(0);
57+
} else {
58+
console.error(`Untracked asset: ${asset}`);
59+
}
60+
}
61+
3562
const goToDonate = () => {
3663
window.removeEventListener('focus', goToDonate);
3764
setTimeout(() => {
@@ -142,7 +169,7 @@ const MainDownloadSection = memo(({ release, onAfterDownload }) => {
142169
<a
143170
className={css.mainDownloadButton}
144171
href={detectedAsset.os !== '' ? detectedAsset.asset.url : ''}
145-
onClick={onAfterDownload}>
172+
onClick={() => onAfterDownload(detectedAsset.asset)}>
146173
<span>
147174
{intl.formatMessage({ id: 'download' })} Processing{' '}
148175
{release.version} {intl.formatMessage({ id: 'for' })}{' '}
@@ -311,7 +338,7 @@ const OSSection = memo(
311338
<a
312339
className={css.asset}
313340
href={asset.url}
314-
onClick={onAfterDownload}>
341+
onClick={() => onAfterDownload(asset)}>
315342
{asset.bit && <>{asset.bit}</>}
316343
</a>
317344
<InfoTooltip

0 commit comments

Comments
 (0)