diff --git a/frontend/src/download.js b/frontend/src/download.js
index 2200ad08..a5a11d82 100644
--- a/frontend/src/download.js
+++ b/frontend/src/download.js
@@ -1,5 +1,5 @@
const FileReceiver = require('./fileReceiver');
-const { notify, findMetric } = require('./utils');
+const { notify, findMetric, sendEvent } = require('./utils');
const Storage = require('./storage');
const storage = new Storage(localStorage);
const $ = require('jquery');
@@ -18,13 +18,12 @@ $(document).ready(function() {
if (location.pathname.toString().includes('download')) {
$('.send-new').click(function(target) {
target.preventDefault();
- window.analytics
- .sendEvent('recipient', 'restarted', {
- cd2: 'completed'
- })
- .then(() => {
- location.href = target.currentTarget.href;
- });
+ sendEvent('recipient', 'restarted', {
+ cd2: 'completed'
+ })
+ .then(() => {
+ location.href = target.currentTarget.href;
+ });
})
@@ -32,13 +31,12 @@ $(document).ready(function() {
target.preventDefault();
const metric = findMetric(target.currentTarget.href);
// record exited event by recipient
- window.analytics
- .sendEvent('recipient', 'exited', {
- cd3: metric
- })
- .then(() => {
- location.href = target.currentTarget.href;
- });
+ sendEvent('recipient', 'exited', {
+ cd3: metric
+ })
+ .then(() => {
+ location.href = target.currentTarget.href;
+ });
})
$('#expired-send-new').click(function() {
@@ -64,26 +62,21 @@ $(document).ready(function() {
storage.totalDownloads += 1;
const fileReceiver = new FileReceiver();
-
const unexpiredFiles = storage.numFiles;
- let totalUploads = 0;
- if (storage.has('totalUploads')) {
- totalUploads = storage.totalUploads;
- }
+
fileReceiver.on('progress', progress => {
window.onunload = function() {
storage.referrer = 'cancelled-download';
// record download-stopped (cancelled by tab close or reload)
- window.analytics
- .sendEvent('recipient', 'download-stopped', {
- cm1: bytelength,
- cm5: totalUploads,
- cm6: unexpiredFiles,
- cm7: storage.totalDownloads,
- cd2: 'cancelled'
- })
+ sendEvent('recipient', 'download-stopped', {
+ cm1: bytelength,
+ cm5: storage.totalUploads,
+ cm6: unexpiredFiles,
+ cm7: storage.totalDownloads,
+ cd2: 'cancelled'
+ })
}
$('#download-page-one').attr('hidden', true);
@@ -141,28 +134,26 @@ $(document).ready(function() {
const startTime = Date.now();
// record download-started by recipient
- window.analytics
- .sendEvent('recipient', 'download-started', {
- cm1: bytelength,
- cm4: timeToExpiry,
- cm5: totalUploads,
- cm6: unexpiredFiles,
- cm7: storage.totalDownloads
- });
+ sendEvent('recipient', 'download-started', {
+ cm1: bytelength,
+ cm4: timeToExpiry,
+ cm5: storage.totalUploads,
+ cm6: unexpiredFiles,
+ cm7: storage.totalDownloads
+ });
fileReceiver
.download()
.catch(err => {
// record download-stopped (errored) by recipient
- window.analytics
- .sendEvent('recipient', 'download-stopped', {
- cm1: bytelength,
- cm5: totalUploads,
- cm6: unexpiredFiles,
- cm7: storage.totalDownloads,
- cd2: 'errored',
- cd6: err
- });
+ sendEvent('recipient', 'download-stopped', {
+ cm1: bytelength,
+ cm5: storage.totalUploads,
+ cm6: unexpiredFiles,
+ cm7: storage.totalDownloads,
+ cd2: 'errored',
+ cd6: err
+ });
document.l10n.formatValue('expiredPageHeader')
.then(translated => {
@@ -181,16 +172,15 @@ $(document).ready(function() {
storage.referrer = 'completed-download';
// record download-stopped (completed) by recipient
- window.analytics
- .sendEvent('recipient', 'download-stopped', {
- cm1: bytelength,
- cm2: totalTime,
- cm3: downloadSpeed,
- cm5: totalUploads,
- cm6: unexpiredFiles,
- cm7: storage.totalDownloads,
- cd2: 'completed'
- });
+ sendEvent('recipient', 'download-stopped', {
+ cm1: bytelength,
+ cm2: totalTime,
+ cm3: downloadSpeed,
+ cm5: storage.totalUploads,
+ cm6: unexpiredFiles,
+ cm7: storage.totalDownloads,
+ cd2: 'completed'
+ });
const dataView = new DataView(decrypted);
const blob = new Blob([dataView]);
diff --git a/frontend/src/upload.js b/frontend/src/upload.js
index 3bcca1b0..676bfd34 100644
--- a/frontend/src/upload.js
+++ b/frontend/src/upload.js
@@ -1,5 +1,5 @@
const FileSender = require('./fileSender');
-const { notify, gcmCompliant, findMetric, ONE_DAY_IN_MS } = require('./utils');
+const { notify, gcmCompliant, findMetric, sendEvent, ONE_DAY_IN_MS } = require('./utils');
const Storage = require('./storage');
const storage = new Storage(localStorage);
const $ = require('jquery');
@@ -25,10 +25,9 @@ $(document).ready(function() {
$('#page-one').attr('hidden', true);
$('#unsupported-browser').removeAttr('hidden');
// record unsupported event
- window.analytics
- .sendEvent('sender', 'unsupported', {
- cd6: err
- });
+ sendEvent('sender', 'unsupported', {
+ cd6: err
+ });
});
$('#file-upload').change(onUpload);
@@ -37,39 +36,36 @@ $(document).ready(function() {
target.preventDefault();
const metric = findMetric(target.currentTarget.href);
// record exited event by recipient
- window.analytics
- .sendEvent('sender', 'exited', {
- cd3: metric
- })
- .then(() => {
- location.href = target.currentTarget.href;
- });
+ sendEvent('sender', 'exited', {
+ cd3: metric
+ })
+ .then(() => {
+ location.href = target.currentTarget.href;
+ });
})
$('#send-new-completed').click(function(target) {
target.preventDefault();
// record restarted event
- window.analytics
- .sendEvent('sender', 'restarted', {
- cd2: 'completed'
- })
- .then(() => {
- storage.referrer = 'completed-upload';
- location.href = target.currentTarget.href;
- });
+ sendEvent('sender', 'restarted', {
+ cd2: 'completed'
+ })
+ .then(() => {
+ storage.referrer = 'completed-upload';
+ location.href = target.currentTarget.href;
+ });
})
$('#send-new-error').click(function(target) {
target.preventDefault();
// record restarted event
- window.analytics
- .sendEvent('sender', 'restarted', {
- cd2: 'errored'
- })
- .then(() => {
- storage.referrer = 'errored-upload';
- location.href = target.currentTarget.href;
- });
+ sendEvent('sender', 'restarted', {
+ cd2: 'errored'
+ })
+ .then(() => {
+ storage.referrer = 'errored-upload';
+ location.href = target.currentTarget.href;
+ });
})
$('body').on('dragover', allowDrop).on('drop', onUpload);
@@ -95,10 +91,9 @@ $(document).ready(function() {
// copy link to clipboard
$copyBtn.click(() => {
// record copied event from success screen
- window.analytics
- .sendEvent('sender', 'copied', {
- cd4: 'success-screen'
- });
+ sendEvent('sender', 'copied', {
+ cd4: 'success-screen'
+ });
const aux = document.createElement('input');
aux.setAttribute('value', $('#link').attr('value'));
document.body.appendChild(aux);
@@ -174,15 +169,14 @@ $(document).ready(function() {
storage.referrer = 'cancelled-upload';
// record upload-stopped (cancelled) by sender
- window.analytics
- .sendEvent('sender', 'upload-stopped', {
- cm1: file.size,
- cm5: storage.totalUploads,
- cm6: unexpiredFiles,
- cm7: totalDownloads,
- cd1: event.type === 'drop' ? 'drop' : 'click',
- cd2: 'cancelled'
- });
+ sendEvent('sender', 'upload-stopped', {
+ cm1: file.size,
+ cm5: storage.totalUploads,
+ cm6: unexpiredFiles,
+ cm7: storage.totalDownloads,
+ cd1: event.type === 'drop' ? 'drop' : 'click',
+ cd2: 'cancelled'
+ });
});
fileSender.on('progress', progress => {
@@ -238,24 +232,17 @@ $(document).ready(function() {
let t;
const startTime = Date.now();
-
const unexpiredFiles = storage.numFiles + 1;
- let totalDownloads = 0;
- if (storage.has('totalDownloads')) {
- totalDownloads = storage.totalDownloads;
- }
-
// record upload-started event by sender
- window.analytics
- .sendEvent('sender', 'upload-started', {
- cm1: file.size,
- cm5: storage.totalUploads,
- cm6: unexpiredFiles,
- cm7: totalDownloads,
- cd1: event.type === 'drop' ? 'drop' : 'click',
- cd5: window.referrer
- });
+ sendEvent('sender', 'upload-started', {
+ cm1: file.size,
+ cm5: storage.totalUploads,
+ cm6: unexpiredFiles,
+ cm7: storage.totalDownloads,
+ cd1: event.type === 'drop' ? 'drop' : 'click',
+ cd5: window.referrer
+ });
fileSender
.upload()
@@ -266,17 +253,16 @@ $(document).ready(function() {
const uploadSpeed = file.size / (uploadTime / 1000);
// record upload-stopped (completed) by sender
- window.analytics
- .sendEvent('sender', 'upload-stopped', {
- cm1: file.size,
- cm2: totalTime,
- cm3: uploadSpeed,
- cm5: storage.totalUploads,
- cm6: unexpiredFiles,
- cm7: totalDownloads,
- cd1: event.type === 'drop' ? 'drop' : 'click',
- cd2: 'completed'
- });
+ sendEvent('sender', 'upload-stopped', {
+ cm1: file.size,
+ cm2: totalTime,
+ cm3: uploadSpeed,
+ cm5: storage.totalUploads,
+ cm6: unexpiredFiles,
+ cm7: storage.totalDownloads,
+ cd1: event.type === 'drop' ? 'drop' : 'click',
+ cd2: 'completed'
+ });
const fileData = {
name: file.name,
@@ -316,16 +302,15 @@ $(document).ready(function() {
window.clearTimeout(t);
// record upload-stopped (errored) by sender
- window.analytics
- .sendEvent('sender', 'upload-stopped', {
- cm1: file.size,
- cm5: storage.totalUploads,
- cm6: unexpiredFiles,
- cm7: totalDownloads,
- cd1: event.type === 'drop' ? 'drop' : 'click',
- cd2: 'errored',
- cd6: err
- });
+ sendEvent('sender', 'upload-stopped', {
+ cm1: file.size,
+ cm5: storage.totalUploads,
+ cm6: unexpiredFiles,
+ cm7: storage.totalDownloads,
+ cd1: event.type === 'drop' ? 'drop' : 'click',
+ cd2: 'errored',
+ cd6: err
+ });
});
}
@@ -398,10 +383,9 @@ $(document).ready(function() {
//copy link to clipboard when icon clicked
$copyIcon.click(function() {
// record copied event from upload list
- window.analytics
- .sendEvent('sender', 'copied', {
- cd4: 'upload-list'
- });
+ sendEvent('sender', 'copied', {
+ cd4: 'upload-list'
+ });
const aux = document.createElement('input');
aux.setAttribute('value', url);
document.body.appendChild(aux);
@@ -491,32 +475,26 @@ $(document).ready(function() {
const unexpiredFiles = storage.numFiles;
- let totalDownloads = 0;
- if (storage.has('totalDownloads')) {
- totalDownloads = storage.totalDownloads;
- }
-
// delete file
$popupText.find('.del-file').click(e => {
FileSender.delete(file.fileId, file.deleteToken).then(() => {
$(e.target).parents('tr').remove();
const timeToExpiry = ONE_DAY_IN_MS - (Date.now() - file.creationDate.getTime());
// record upload-deleted from file list
- window.analytics
- .sendEvent('sender', 'upload-deleted', {
- cm1: file.size,
- cm2: file.totalTime,
- cm3: file.uploadSpeed,
- cm4: timeToExpiry,
- cm5: storage.totalUploads,
- cm6: unexpiredFiles,
- cm7: totalDownloads,
- cd1: file.typeOfUpload,
- cd4: 'upload-list'
- })
- .then(() => {
- storage.remove(file.fileId);
- })
+ sendEvent('sender', 'upload-deleted', {
+ cm1: file.size,
+ cm2: file.totalTime,
+ cm3: file.uploadSpeed,
+ cm4: timeToExpiry,
+ cm5: storage.totalUploads,
+ cm6: unexpiredFiles,
+ cm7: storage.totalDownloads,
+ cd1: file.typeOfUpload,
+ cd4: 'upload-list'
+ })
+ .then(() => {
+ storage.remove(file.fileId);
+ })
toggleHeader();
});
});
@@ -525,22 +503,21 @@ $(document).ready(function() {
FileSender.delete(file.fileId, file.deleteToken).then(() => {
const timeToExpiry = ONE_DAY_IN_MS - (Date.now() - file.creationDate.getTime());
// record upload-deleted from success screen
- window.analytics
- .sendEvent('sender', 'upload-deleted', {
- cm1: file.size,
- cm2: file.totalTime,
- cm3: file.uploadSpeed,
- cm4: timeToExpiry,
- cm5: storage.totalUploads,
- cm6: unexpiredFiles,
- cm7: totalDownloads,
- cd1: file.typeOfUpload,
- cd4: 'success-screen'
- })
- .then(() => {
- storage.remove(file.fileId);
- location.reload();
- })
+ sendEvent('sender', 'upload-deleted', {
+ cm1: file.size,
+ cm2: file.totalTime,
+ cm3: file.uploadSpeed,
+ cm4: timeToExpiry,
+ cm5: storage.totalUploads,
+ cm6: unexpiredFiles,
+ cm7: storage.totalDownloads,
+ cd1: file.typeOfUpload,
+ cd4: 'success-screen'
+ })
+ .then(() => {
+ storage.remove(file.fileId);
+ location.reload();
+ })
});
};
// show popup
diff --git a/frontend/src/utils.js b/frontend/src/utils.js
index a814d769..f8d6f833 100644
--- a/frontend/src/utils.js
+++ b/frontend/src/utils.js
@@ -101,6 +101,13 @@ function isFile(id) {
'testpilot_ga__cid'].includes(id);
}
+function sendEvent() {
+ return window.analytics
+ .sendEvent
+ .apply(window.analytics, arguments)
+ .catch(() => 0);
+}
+
const ONE_DAY_IN_MS = 86400000;
module.exports = {
@@ -110,5 +117,6 @@ module.exports = {
gcmCompliant,
findMetric,
isFile,
+ sendEvent,
ONE_DAY_IN_MS
};
diff --git a/views/download.handlebars b/views/download.handlebars
index 4efea3ae..0d288c4c 100644
--- a/views/download.handlebars
+++ b/views/download.handlebars
@@ -43,6 +43,6 @@