mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-15 05:37:22 +01:00
properly update user properties in events
This commit is contained in:
Submodule habitica-images updated: e3215f16f9...aa72332019
@@ -160,7 +160,7 @@ export default function randomDrop (user, options, req = {}, analytics) {
|
||||
|
||||
if (analytics && moment().diff(user.auth.timestamps.created, 'days') < 7) {
|
||||
analytics.track('dropped item', {
|
||||
user: pick(user, ['preferences', 'registeredThrough']),
|
||||
user,
|
||||
uuid: user._id,
|
||||
itemKey: drop.key,
|
||||
category: 'behavior',
|
||||
|
||||
@@ -21,7 +21,7 @@ export function checkOnboardingStatus (user, req, analytics) {
|
||||
user.addNotification('ONBOARDING_COMPLETE');
|
||||
if (analytics) {
|
||||
analytics.track('onboarding complete', {
|
||||
user: pick(user, ['preferences', 'registeredThrough']),
|
||||
user,
|
||||
uuid: user._id,
|
||||
hitType: 'event',
|
||||
category: 'behavior',
|
||||
|
||||
@@ -114,7 +114,7 @@ export class AbstractBuyOperation {
|
||||
sendToAnalytics (additionalData = {}) {
|
||||
// spread-operator produces an "unexpected token" error
|
||||
const analyticsData = merge(additionalData, {
|
||||
user: pick(this.user, ['preferences', 'registeredThrough']),
|
||||
user: this.user,
|
||||
uuid: this.user._id,
|
||||
category: 'behavior',
|
||||
headers: this.req.headers,
|
||||
|
||||
@@ -73,7 +73,7 @@ export class BuyArmoireOperation extends AbstractGoldItemOperation { // eslint-d
|
||||
this.analytics.track(
|
||||
'Enchanted Armoire',
|
||||
{
|
||||
user: pick(user, ['preferences', 'registeredThrough']),
|
||||
user,
|
||||
uuid: user._id,
|
||||
itemKey: key,
|
||||
category: 'behavior',
|
||||
|
||||
@@ -37,7 +37,7 @@ export default async function buyMysterySet (user, req = {}, analytics) {
|
||||
|
||||
if (analytics) {
|
||||
analytics.track('buy', {
|
||||
user: pick(user, ['preferences', 'registeredThrough']),
|
||||
user,
|
||||
uuid: user._id,
|
||||
itemKey: mysterySet.key,
|
||||
itemType: 'Subscriber Gear',
|
||||
|
||||
@@ -96,7 +96,7 @@ export default async function purchaseHourglass (user, req = {}, analytics, quan
|
||||
|
||||
if (analytics) {
|
||||
analytics.track('buy', {
|
||||
user: pick(user, ['preferences', 'registeredThrough']),
|
||||
user,
|
||||
uuid: user._id,
|
||||
itemKey: key,
|
||||
itemType: type,
|
||||
|
||||
@@ -132,7 +132,7 @@ export default async function purchase (user, req = {}, analytics) {
|
||||
/* eslint-enable no-await-in-loop */
|
||||
if (analytics) {
|
||||
analytics.track('buy', {
|
||||
user: pick(user, ['preferences', 'registeredThrough']),
|
||||
user,
|
||||
uuid: user._id,
|
||||
itemKey: key,
|
||||
itemType: type,
|
||||
|
||||
@@ -70,7 +70,7 @@ export default async function changeClass (user, req = {}, analytics) {
|
||||
|
||||
if (analytics) {
|
||||
analytics.track('change class', {
|
||||
user: pick(user, ['preferences', 'registeredThrough']),
|
||||
user,
|
||||
uuid: user._id,
|
||||
class: klass,
|
||||
currency: balanceRemoved === 0 ? 'Free' : 'Gems',
|
||||
|
||||
@@ -143,7 +143,7 @@ export default function feed (user, req = {}, analytics) {
|
||||
|
||||
if (analytics && moment().diff(user.auth.timestamps.created, 'days') < 7) {
|
||||
analytics.track('pet feed', {
|
||||
user: pick(user, ['preferences', 'registeredThrough']),
|
||||
user,
|
||||
uuid: user._id,
|
||||
foodKey: food.key,
|
||||
petKey: pet.key,
|
||||
|
||||
@@ -154,7 +154,7 @@ export default function hatch (user, req = {}, analytics) {
|
||||
|
||||
if (analytics && moment().diff(user.auth.timestamps.created, 'days') < 7) {
|
||||
analytics.track('pet hatch', {
|
||||
user: pick(user, ['preferences', 'registeredThrough']),
|
||||
user,
|
||||
uuid: user._id,
|
||||
petKey: pet,
|
||||
category: 'behavior',
|
||||
|
||||
@@ -23,7 +23,7 @@ export default async function rebirth (user, tasks = [], req = {}, analytics) {
|
||||
|
||||
const analyticsData = {
|
||||
uuid: user._id,
|
||||
user: pick(user, ['preferences', 'registeredThrough']),
|
||||
user,
|
||||
category: 'behavior',
|
||||
};
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@ export default async function releaseMounts (user, req = {}, analytics) {
|
||||
|
||||
if (analytics) {
|
||||
analytics.track('release mounts', {
|
||||
user: pick(user, ['preferences', 'registeredThrough']),
|
||||
user,
|
||||
uuid: user._id,
|
||||
currency: 'Gems',
|
||||
gemCost: 4,
|
||||
|
||||
@@ -44,7 +44,7 @@ export default function releasePets (user, req = {}, analytics) {
|
||||
|
||||
if (analytics) {
|
||||
analytics.track('release pets', {
|
||||
user: pick(user, ['preferences', 'registeredThrough']),
|
||||
user,
|
||||
uuid: user._id,
|
||||
currency: 'Gems',
|
||||
gemCost: 4,
|
||||
|
||||
@@ -24,7 +24,7 @@ export default async function reroll (user, tasks = [], req = {}, analytics) {
|
||||
|
||||
if (analytics) {
|
||||
analytics.track('Fortify Potion', {
|
||||
user: pick(user, ['preferences', 'registeredThrough']),
|
||||
user,
|
||||
uuid: user._id,
|
||||
currency: 'Gems',
|
||||
gemCost: 4,
|
||||
|
||||
@@ -112,7 +112,7 @@ export default function revive (user, req = {}, analytics) {
|
||||
|
||||
if (analytics) {
|
||||
analytics.track('Death', {
|
||||
user: pick(user, ['preferences', 'registeredThrough']),
|
||||
user,
|
||||
uuid: user._id,
|
||||
lostItem,
|
||||
category: 'behavior',
|
||||
|
||||
@@ -5,7 +5,7 @@ export function sleep (user, req = {}, analytics) {
|
||||
|
||||
if (analytics) {
|
||||
analytics.track('sleep', {
|
||||
user: pick(user, ['preferences', 'registeredThrough']),
|
||||
user,
|
||||
uuid: user._id,
|
||||
status: user.preferences.sleep,
|
||||
category: 'behavior',
|
||||
|
||||
@@ -318,7 +318,7 @@ export default async function unlock (user, req = {}, analytics) {
|
||||
|
||||
if (analytics) {
|
||||
analytics.track('buy', {
|
||||
user: pick(user, ['preferences', 'registeredThrough']),
|
||||
user,
|
||||
uuid: user._id,
|
||||
itemKey: path,
|
||||
itemType: 'customization',
|
||||
|
||||
@@ -128,7 +128,7 @@ api.loginLocal = {
|
||||
await user.save();
|
||||
|
||||
res.analytics.track('login', {
|
||||
user: pick(user, ['preferences', 'registeredThrough']),
|
||||
user,
|
||||
category: 'behavior',
|
||||
type: 'local',
|
||||
uuid: user._id,
|
||||
|
||||
@@ -291,7 +291,7 @@ api.createChallenge = {
|
||||
response.group = getChallengeGroupResponse(group);
|
||||
|
||||
res.analytics.track('challenge create', {
|
||||
user: pick(user, ['preferences', 'registeredThrough']),
|
||||
user,
|
||||
uuid: user._id,
|
||||
hitType: 'event',
|
||||
category: 'behavior',
|
||||
@@ -360,7 +360,7 @@ api.joinChallenge = {
|
||||
response.leader = chalLeader ? chalLeader.toJSON({ minimize: true }) : null;
|
||||
|
||||
res.analytics.track('challenge join', {
|
||||
user: pick(user, ['preferences', 'registeredThrough']),
|
||||
user,
|
||||
uuid: user._id,
|
||||
hitType: 'event',
|
||||
category: 'behavior',
|
||||
@@ -411,7 +411,7 @@ api.leaveChallenge = {
|
||||
await challenge.unlinkTasks(user, keep);
|
||||
|
||||
res.analytics.track('challenge leave', {
|
||||
user: pick(user, ['preferences', 'registeredThrough']),
|
||||
user,
|
||||
uuid: user._id,
|
||||
hitType: 'event',
|
||||
category: 'behavior',
|
||||
@@ -896,7 +896,7 @@ api.deleteChallenge = {
|
||||
await challenge.closeChal({ broken: 'CHALLENGE_DELETED' });
|
||||
|
||||
res.analytics.track('challenge delete', {
|
||||
user: pick(user, ['preferences', 'registeredThrough']),
|
||||
user,
|
||||
uuid: user._id,
|
||||
hitType: 'event',
|
||||
category: 'behavior',
|
||||
@@ -957,7 +957,7 @@ api.selectChallengeWinner = {
|
||||
await challenge.closeChal({ broken: 'CHALLENGE_CLOSED', winner });
|
||||
|
||||
res.analytics.track('challenge close', {
|
||||
user: pick(user, ['preferences', 'registeredThrough']),
|
||||
user,
|
||||
uuid: user._id,
|
||||
hitType: 'event',
|
||||
category: 'behavior',
|
||||
|
||||
@@ -187,7 +187,7 @@ api.postChat = {
|
||||
// Check if account is newer than the minimum age for chat participation
|
||||
if (moment().diff(user.auth.timestamps.created, 'minutes') < ACCOUNT_MIN_CHAT_AGE) {
|
||||
analytics.track('chat age error', {
|
||||
user: pick(user, ['preferences', 'registeredThrough']),
|
||||
user,
|
||||
uuid: user._id,
|
||||
hitType: 'event',
|
||||
category: 'behavior',
|
||||
@@ -239,7 +239,7 @@ api.postChat = {
|
||||
await Promise.all(toSave);
|
||||
|
||||
const analyticsObject = {
|
||||
user: pick(user, ['preferences', 'registeredThrough']),
|
||||
user,
|
||||
uuid: user._id,
|
||||
hitType: 'event',
|
||||
category: 'behavior',
|
||||
|
||||
@@ -169,7 +169,7 @@ api.createGroup = {
|
||||
};
|
||||
|
||||
const analyticsObject = {
|
||||
user: pick(user, ['preferences', 'registeredThrough']),
|
||||
user,
|
||||
uuid: user._id,
|
||||
hitType: 'event',
|
||||
category: 'behavior',
|
||||
@@ -220,7 +220,7 @@ api.createGroupPlan = {
|
||||
const savedGroup = results[1];
|
||||
|
||||
res.analytics.track('join group', {
|
||||
user: pick(user, ['preferences', 'registeredThrough']),
|
||||
user,
|
||||
uuid: user._id,
|
||||
hitType: 'event',
|
||||
category: 'behavior',
|
||||
@@ -705,7 +705,7 @@ api.joinGroup = {
|
||||
promises.push(group.save());
|
||||
|
||||
const analyticsObject = {
|
||||
user: pick(user, ['preferences', 'registeredThrough']),
|
||||
user,
|
||||
uuid: user._id,
|
||||
hitType: 'event',
|
||||
category: 'behavior',
|
||||
|
||||
@@ -737,7 +737,7 @@ api.transferGems = {
|
||||
|
||||
if (res.analytics) {
|
||||
res.analytics.track('transfer gems', {
|
||||
user: pick(sender, ['preferences', 'registeredThrough']),
|
||||
user,
|
||||
uuid: sender._id,
|
||||
hitType: 'event',
|
||||
category: 'behavior',
|
||||
|
||||
@@ -168,7 +168,7 @@ api.inviteToQuest = {
|
||||
|
||||
// track that the inviting user has accepted the quest
|
||||
analytics.track('quest', {
|
||||
user: pick(user, ['preferences', 'registeredThrough']),
|
||||
user,
|
||||
uuid: user._id,
|
||||
category: 'behavior',
|
||||
headers: req.headers,
|
||||
@@ -233,7 +233,7 @@ api.acceptQuest = {
|
||||
|
||||
// track that a user has accepted the quest
|
||||
analytics.track('quest', {
|
||||
user: pick(user, ['preferences', 'registeredThrough']),
|
||||
user,
|
||||
category: 'behavior',
|
||||
owner: false,
|
||||
response: 'accept',
|
||||
@@ -298,7 +298,7 @@ api.rejectQuest = {
|
||||
res.respond(200, savedGroup.quest);
|
||||
|
||||
analytics.track('quest', {
|
||||
user: pick(user, ['preferences', 'registeredThrough']),
|
||||
user,
|
||||
category: 'behavior',
|
||||
owner: false,
|
||||
response: 'reject',
|
||||
@@ -362,7 +362,7 @@ api.forceStart = {
|
||||
res.respond(200, savedGroup.quest);
|
||||
|
||||
analytics.track('quest', {
|
||||
user: pick(user, ['preferences', 'registeredThrough']),
|
||||
user,
|
||||
category: 'behavior',
|
||||
owner: user._id === group.quest.leader,
|
||||
response: 'force-start',
|
||||
|
||||
@@ -333,7 +333,7 @@ api.createChallengeTasks = {
|
||||
|
||||
tasks.forEach(task => {
|
||||
res.analytics.track('challenge task created', {
|
||||
user: pick(user, ['preferences', 'registeredThrough']),
|
||||
user,
|
||||
uuid: user._id,
|
||||
hitType: 'event',
|
||||
category: 'behavior',
|
||||
@@ -703,7 +703,7 @@ api.updateTask = {
|
||||
|
||||
if (group) {
|
||||
res.analytics.track('task edit', {
|
||||
user: pick(user, ['preferences', 'registeredThrough']),
|
||||
user,
|
||||
uuid: user._id,
|
||||
hitType: 'event',
|
||||
category: 'behavior',
|
||||
|
||||
@@ -64,7 +64,7 @@ api.createGroupTasks = {
|
||||
|
||||
tasks.forEach(task => {
|
||||
res.analytics.track('team task created', {
|
||||
user: pick(user, ['preferences', 'registeredThrough']),
|
||||
user,
|
||||
uuid: user._id,
|
||||
hitType: 'event',
|
||||
category: 'behavior',
|
||||
@@ -253,7 +253,7 @@ api.assignTask = {
|
||||
res.respond(200, task);
|
||||
|
||||
res.analytics.track('task assign', {
|
||||
user: pick(user, ['preferences', 'registeredThrough']),
|
||||
user,
|
||||
uuid: user._id,
|
||||
hitType: 'event',
|
||||
category: 'behavior',
|
||||
|
||||
@@ -326,7 +326,7 @@ api.deleteUser = {
|
||||
}
|
||||
|
||||
res.analytics.track('account delete', {
|
||||
user: pick(user, ['preferences', 'registeredThrough']),
|
||||
user,
|
||||
uuid: user._id,
|
||||
hitType: 'event',
|
||||
category: 'behavior',
|
||||
|
||||
@@ -219,7 +219,7 @@ async function registerLocal (req, res, { isV3 = false }) {
|
||||
|
||||
if (!existingUser) {
|
||||
res.analytics.track('register', {
|
||||
user: pick(savedUser, ['preferences', 'registeredThrough']),
|
||||
user: savedUser,
|
||||
category: 'acquisition',
|
||||
type: 'local',
|
||||
uuid: savedUser._id,
|
||||
|
||||
@@ -158,7 +158,7 @@ export async function loginSocial (req, res) { // eslint-disable-line import/pre
|
||||
|
||||
if (!existingUser) {
|
||||
res.analytics.track('register', {
|
||||
user: pick(savedUser, ['preferences', 'registeredThrough']),
|
||||
user: savedUser,
|
||||
uuid: savedUser._id,
|
||||
category: 'acquisition',
|
||||
type: network,
|
||||
|
||||
@@ -104,7 +104,7 @@ function trackCronAnalytics (analytics, user, _progress, options) {
|
||||
analytics.track('Cron', {
|
||||
category: 'behavior',
|
||||
uuid: user._id,
|
||||
user: pick(user, ['preferences', 'registeredThrough']),
|
||||
user,
|
||||
resting: user.preferences.sleep,
|
||||
cronCount: user.flags.cronCount,
|
||||
progressUp: Math.min(_progress.up, 900),
|
||||
|
||||
@@ -144,7 +144,7 @@ async function inviteByUUID (uuid, group, inviter, req, res) {
|
||||
}
|
||||
|
||||
const analyticsObject = {
|
||||
user: pick(inviter, ['preferences', 'registeredThrough']),
|
||||
user: inviter,
|
||||
uuid: inviter._id,
|
||||
hitType: 'event',
|
||||
category: 'behavior',
|
||||
@@ -209,7 +209,7 @@ async function inviteByEmail (invite, group, inviter, req, res) {
|
||||
if (!userIsUnsubscribed) sendTxnEmail(invite, `invite-friend${groupLabel}`, variables);
|
||||
|
||||
const analyticsObject = {
|
||||
user: pick(inviter, ['preferences', 'registeredThrough']),
|
||||
user: inviter,
|
||||
uuid: inviter._id,
|
||||
hitType: 'event',
|
||||
category: 'behavior',
|
||||
@@ -247,7 +247,7 @@ async function inviteByUserName (username, group, inviter, req, res) {
|
||||
}
|
||||
|
||||
const analyticsObject = {
|
||||
user: pick(inviter, ['preferences', 'registeredThrough']),
|
||||
user: inviter,
|
||||
uuid: inviter._id,
|
||||
hitType: 'event',
|
||||
category: 'behavior',
|
||||
|
||||
@@ -115,7 +115,7 @@ export async function buyGems (data) {
|
||||
if (!data.gift) txnEmail(data.user, 'donation');
|
||||
|
||||
analytics.trackPurchase({
|
||||
user: pick(data.user, ['preferences', 'registeredThrough']),
|
||||
user: data.user,
|
||||
uuid: data.user._id,
|
||||
itemPurchased: 'Gems',
|
||||
sku: `${data.paymentMethod.toLowerCase()}-checkout`,
|
||||
|
||||
@@ -32,7 +32,7 @@ async function buyGryphatrice (data) {
|
||||
data.user.purchased.txnCount += 1;
|
||||
|
||||
analytics.trackPurchase({
|
||||
user: pick(data.user, ['preferences', 'registeredThrough']),
|
||||
user: data.user,
|
||||
uuid: data.user._id,
|
||||
itemPurchased: 'Gryphatrice',
|
||||
sku: `${data.paymentMethod.toLowerCase()}-checkout`,
|
||||
|
||||
@@ -465,7 +465,7 @@ async function cancelSubscription (data) {
|
||||
|
||||
analytics.track(cancelType, {
|
||||
uuid: data.user._id,
|
||||
user: pick(data.user, ['preferences', 'registeredThrough']),
|
||||
user: data.user,
|
||||
groupId,
|
||||
paymentMethod: data.paymentMethod,
|
||||
headers: data.headers,
|
||||
|
||||
@@ -516,7 +516,7 @@ async function scoreTask (user, task, direction, req, res) {
|
||||
role = 'member';
|
||||
}
|
||||
res.analytics.track('team task scored', {
|
||||
user: pick(user, ['preferences', 'registeredThrough']),
|
||||
user,
|
||||
uuid: user._id,
|
||||
hitType: 'event',
|
||||
category: 'behavior',
|
||||
|
||||
@@ -117,7 +117,7 @@ export async function update (req, res, { isV3 = false }) {
|
||||
user.invitations.party = {};
|
||||
user.invitations.parties = [];
|
||||
res.analytics.track('Starts Looking for Party', {
|
||||
user: _.pick(user, ['preferences', 'registeredThrough']),
|
||||
user,
|
||||
uuid: user._id,
|
||||
hitType: 'event',
|
||||
category: 'behavior',
|
||||
@@ -201,7 +201,7 @@ export async function update (req, res, { isV3 = false }) {
|
||||
if (key === 'party.seeking' && val === null) {
|
||||
user.party.seeking = undefined;
|
||||
res.analytics.track('Leaves Looking for Party', {
|
||||
user: _.pick(user, ['preferences', 'registeredThrough']),
|
||||
user,
|
||||
uuid: user._id,
|
||||
hitType: 'event',
|
||||
category: 'behavior',
|
||||
@@ -292,7 +292,7 @@ export async function reset (req, res, { isV3 = false }) {
|
||||
]);
|
||||
|
||||
res.analytics.track('account reset', {
|
||||
user: _.pick(user, ['preferences', 'registeredThrough']),
|
||||
user,
|
||||
uuid: user._id,
|
||||
hitType: 'event',
|
||||
category: 'behavior',
|
||||
|
||||
Reference in New Issue
Block a user