mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-18 15:17:25 +01:00
Reinstate amplitude analytics
This commit is contained in:
@@ -5,7 +5,7 @@
|
|||||||
"main": "./website/src/server.js",
|
"main": "./website/src/server.js",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"amazon-payments": "0.0.4",
|
"amazon-payments": "0.0.4",
|
||||||
"amplitude": "^1.0.6",
|
"amplitude": "^2.0.1",
|
||||||
"async": "~0.9.0",
|
"async": "~0.9.0",
|
||||||
"aws-sdk": "^2.0.25",
|
"aws-sdk": "^2.0.25",
|
||||||
"babel": "^5.5.4",
|
"babel": "^5.5.4",
|
||||||
|
|||||||
@@ -8,7 +8,9 @@ describe('analytics', function() {
|
|||||||
// Mocks
|
// Mocks
|
||||||
var amplitudeMock = sinon.stub();
|
var amplitudeMock = sinon.stub();
|
||||||
var googleAnalyticsMock = sinon.stub();
|
var googleAnalyticsMock = sinon.stub();
|
||||||
var amplitudeTrack = sinon.stub();
|
var amplitudeTrack = sinon.stub().returns({
|
||||||
|
catch: function () { return true; }
|
||||||
|
});
|
||||||
var googleEvent = sinon.stub().returns({
|
var googleEvent = sinon.stub().returns({
|
||||||
send: function() { }
|
send: function() { }
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -24,14 +24,16 @@ function init(options) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function track(eventType, data) {
|
function track(eventType, data) {
|
||||||
//_sendDataToAmplitude(eventType, data);
|
_sendDataToAmplitude(eventType, data);
|
||||||
_sendDataToGoogle(eventType, data);
|
_sendDataToGoogle(eventType, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
function _sendDataToAmplitude(eventType, data) {
|
function _sendDataToAmplitude(eventType, data) {
|
||||||
var amplitudeData = _formatDataForAmplitude(data);
|
var amplitudeData = _formatDataForAmplitude(data);
|
||||||
amplitudeData.event_type = eventType;
|
amplitudeData.event_type = eventType;
|
||||||
amplitude.track(amplitudeData);
|
amplitude.track(amplitudeData).catch(function(error) {
|
||||||
|
// @TODO log error with new relic
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function _sendDataToGoogle(eventType, data) {
|
function _sendDataToGoogle(eventType, data) {
|
||||||
@@ -78,7 +80,7 @@ function _generateValueForGoogleAnalytics(data) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function trackPurchase(data) {
|
function trackPurchase(data) {
|
||||||
//_sendPurchaseDataToAmplitude(data);
|
_sendPurchaseDataToAmplitude(data);
|
||||||
_sendPurchaseDataToGoogle(data);
|
_sendPurchaseDataToGoogle(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -87,7 +89,9 @@ function _sendPurchaseDataToAmplitude(data) {
|
|||||||
amplitudeData.event_type = 'purchase';
|
amplitudeData.event_type = 'purchase';
|
||||||
amplitudeData.revenue = data.purchaseValue;
|
amplitudeData.revenue = data.purchaseValue;
|
||||||
|
|
||||||
amplitude.track(amplitudeData)
|
amplitude.track(amplitudeData).catch(function(error) {
|
||||||
|
// @TODO log error with new relic
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function _formatDataForAmplitude(data) {
|
function _formatDataForAmplitude(data) {
|
||||||
@@ -95,7 +99,7 @@ function _formatDataForAmplitude(data) {
|
|||||||
var event_properties = _.omit(data, PROPERTIES_TO_SCRUB);
|
var event_properties = _.omit(data, PROPERTIES_TO_SCRUB);
|
||||||
|
|
||||||
var ampData = {
|
var ampData = {
|
||||||
user_id: data.uuid,
|
user_id: data.uuid || 'no-user-id-was-provided',
|
||||||
platform: 'server',
|
platform: 'server',
|
||||||
event_properties: event_properties
|
event_properties: event_properties
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -118,7 +118,8 @@ api.registerUser = function(req, res, next) {
|
|||||||
var analyticsData = {
|
var analyticsData = {
|
||||||
category: 'acquisition',
|
category: 'acquisition',
|
||||||
type: 'local',
|
type: 'local',
|
||||||
gaLabel: 'local'
|
gaLabel: 'local',
|
||||||
|
uuid: user._id,
|
||||||
};
|
};
|
||||||
analytics.track('register', analyticsData)
|
analytics.track('register', analyticsData)
|
||||||
|
|
||||||
@@ -145,9 +146,9 @@ api.registerUser = function(req, res, next) {
|
|||||||
|
|
||||||
api.loginLocal = function(req, res, next) {
|
api.loginLocal = function(req, res, next) {
|
||||||
var username = req.body.username;
|
var username = req.body.username;
|
||||||
var password = req.body.password;
|
var password = req.body.password;
|
||||||
if (!(username && password)) return res.json(401, {err:'Missing :username or :password in request body, please provide both'});
|
if (!(username && password)) return res.json(401, {err:'Missing :username or :password in request body, please provide both'});
|
||||||
var login = validator.isEmail(username) ?
|
var login = validator.isEmail(username) ?
|
||||||
{'auth.local.email':username.toLowerCase()} : // Emails are all lowercase
|
{'auth.local.email':username.toLowerCase()} : // Emails are all lowercase
|
||||||
{'auth.local.username':username}; // Use the username as the user typed it
|
{'auth.local.username':username}; // Use the username as the user typed it
|
||||||
|
|
||||||
@@ -212,7 +213,8 @@ api.loginSocial = function(req, res, next) {
|
|||||||
var analyticsData = {
|
var analyticsData = {
|
||||||
category: 'acquisition',
|
category: 'acquisition',
|
||||||
type: network,
|
type: network,
|
||||||
gaLabel: network
|
gaLabel: network,
|
||||||
|
uuid: user._id,
|
||||||
};
|
};
|
||||||
analytics.track('register', analyticsData)
|
analytics.track('register', analyticsData)
|
||||||
}]
|
}]
|
||||||
@@ -276,9 +278,9 @@ var invalidPassword = function(user, password){
|
|||||||
|
|
||||||
api.changeUsername = function(req, res, next) {
|
api.changeUsername = function(req, res, next) {
|
||||||
var user = res.locals.user;
|
var user = res.locals.user;
|
||||||
var username = req.body.username;
|
var username = req.body.username;
|
||||||
var lowerCaseUsername = username && username.toLowerCase(); // we search for the lowercased version to intercept duplicates
|
var lowerCaseUsername = username && username.toLowerCase(); // we search for the lowercased version to intercept duplicates
|
||||||
|
|
||||||
if(!username) return res.json(400, {err: "Username not provided"});
|
if(!username) return res.json(400, {err: "Username not provided"});
|
||||||
async.waterfall([
|
async.waterfall([
|
||||||
function(cb){
|
function(cb){
|
||||||
@@ -352,7 +354,7 @@ api.getFirebaseToken = function(req, res, next) {
|
|||||||
.createToken({
|
.createToken({
|
||||||
uid: user._id,
|
uid: user._id,
|
||||||
isHabiticaUser: true
|
isHabiticaUser: true
|
||||||
}, {
|
}, {
|
||||||
expires: expires
|
expires: expires
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -912,7 +912,8 @@ api.questAccept = function(req, res, next) {
|
|||||||
owner: true,
|
owner: true,
|
||||||
response: 'accept',
|
response: 'accept',
|
||||||
gaLabel: 'accept',
|
gaLabel: 'accept',
|
||||||
questName: key
|
questName: key,
|
||||||
|
uuid: user._id,
|
||||||
};
|
};
|
||||||
analytics.track('quest',analyticsData);
|
analytics.track('quest',analyticsData);
|
||||||
group.quest.members[m] = true;
|
group.quest.members[m] = true;
|
||||||
@@ -958,7 +959,8 @@ api.questAccept = function(req, res, next) {
|
|||||||
owner: false,
|
owner: false,
|
||||||
response: 'accept',
|
response: 'accept',
|
||||||
gaLabel: 'accept',
|
gaLabel: 'accept',
|
||||||
questName: group.quest.key
|
questName: group.quest.key,
|
||||||
|
uuid: user._id,
|
||||||
};
|
};
|
||||||
analytics.track('quest',analyticsData);
|
analytics.track('quest',analyticsData);
|
||||||
group.quest.members[user._id] = true;
|
group.quest.members[user._id] = true;
|
||||||
@@ -977,7 +979,8 @@ api.questReject = function(req, res, next) {
|
|||||||
owner: false,
|
owner: false,
|
||||||
response: 'reject',
|
response: 'reject',
|
||||||
gaLabel: 'reject',
|
gaLabel: 'reject',
|
||||||
questName: group.quest.key
|
questName: group.quest.key,
|
||||||
|
uuid: user._id,
|
||||||
};
|
};
|
||||||
analytics.track('quest',analyticsData);
|
analytics.track('quest',analyticsData);
|
||||||
group.quest.members[user._id] = false;
|
group.quest.members[user._id] = false;
|
||||||
|
|||||||
Reference in New Issue
Block a user