Analytics: track challenge and task events (#9885)
* feat(analytics): track challenge and task events * feat(analytics): add more challenge events Also tweaks data for better troubleshooting utility * refactor(analytics): include IDs for challenges/groups * refactor(analytics): term for award challenge is "close"
This commit is contained in:
@@ -257,6 +257,16 @@ api.createChallenge = {
|
||||
privacy: group.privacy,
|
||||
};
|
||||
|
||||
res.analytics.track('challenge create', {
|
||||
uuid: user._id,
|
||||
hitType: 'event',
|
||||
category: 'behavior',
|
||||
challengeID: response._id,
|
||||
groupID: group._id,
|
||||
groupName: group.privacy === 'private' ? null : group.name,
|
||||
groupType: group._id === TAVERN_ID ? 'tavern' : group.type,
|
||||
});
|
||||
|
||||
res.respond(201, response);
|
||||
},
|
||||
};
|
||||
@@ -315,6 +325,16 @@ api.joinChallenge = {
|
||||
let chalLeader = await User.findById(response.leader).select(nameFields).exec();
|
||||
response.leader = chalLeader ? chalLeader.toJSON({minimize: true}) : null;
|
||||
|
||||
res.analytics.track('challenge join', {
|
||||
uuid: user._id,
|
||||
hitType: 'event',
|
||||
category: 'behavior',
|
||||
challengeID: challenge._id,
|
||||
groupID: group._id,
|
||||
groupName: group.privacy === 'private' ? null : group.name,
|
||||
groupType: group._id === TAVERN_ID ? 'tavern' : group.type,
|
||||
});
|
||||
|
||||
res.respond(200, response);
|
||||
},
|
||||
};
|
||||
@@ -351,6 +371,17 @@ api.leaveChallenge = {
|
||||
|
||||
// Unlink challenge's tasks from user's tasks and save the challenge
|
||||
await Bluebird.all([challenge.unlinkTasks(user, keep), challenge.save()]);
|
||||
|
||||
res.analytics.track('challenge leave', {
|
||||
uuid: user._id,
|
||||
hitType: 'event',
|
||||
category: 'behavior',
|
||||
challengeID: challenge._id,
|
||||
groupID: challenge.group._id,
|
||||
groupName: challenge.group.privacy === 'private' ? null : challenge.group.name,
|
||||
groupType: challenge.group._id === TAVERN_ID ? 'tavern' : challenge.group.type,
|
||||
});
|
||||
|
||||
res.respond(200, {});
|
||||
},
|
||||
};
|
||||
@@ -679,6 +710,17 @@ api.deleteChallenge = {
|
||||
|
||||
// Close channel in background, some ops are run in the background without `await`ing
|
||||
await challenge.closeChal({broken: 'CHALLENGE_DELETED'});
|
||||
|
||||
res.analytics.track('challenge delete', {
|
||||
uuid: user._id,
|
||||
hitType: 'event',
|
||||
category: 'behavior',
|
||||
challengeID: challenge._id,
|
||||
groupID: challenge.group._id,
|
||||
groupName: challenge.group.privacy === 'private' ? null : challenge.group.name,
|
||||
groupType: challenge.group._id === TAVERN_ID ? 'tavern' : challenge.group.type,
|
||||
});
|
||||
|
||||
res.respond(200, {});
|
||||
},
|
||||
};
|
||||
@@ -717,6 +759,18 @@ api.selectChallengeWinner = {
|
||||
|
||||
// Close channel in background, some ops are run in the background without `await`ing
|
||||
await challenge.closeChal({broken: 'CHALLENGE_CLOSED', winner});
|
||||
|
||||
res.analytics.track('challenge close', {
|
||||
uuid: user._id,
|
||||
hitType: 'event',
|
||||
category: 'behavior',
|
||||
challengeID: challenge._id,
|
||||
challengeWinnerID: winner._id,
|
||||
groupID: challenge.group._id,
|
||||
groupName: challenge.group.privacy === 'private' ? null : challenge.group.name,
|
||||
groupType: challenge.group._id === TAVERN_ID ? 'tavern' : challenge.group.type,
|
||||
});
|
||||
|
||||
res.respond(200, {});
|
||||
},
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user