From 2c7f6fd9e3503bd1bc017f790f2569a46e0db187 Mon Sep 17 00:00:00 2001 From: Phillip Thelen Date: Thu, 4 Sep 2025 12:57:35 +0200 Subject: [PATCH] properly update user properties in events --- habitica-images | 2 +- website/common/script/fns/randomDrop.js | 2 +- website/common/script/libs/onboarding.js | 2 +- website/common/script/ops/buy/abstractBuyOperation.js | 2 +- website/common/script/ops/buy/buyArmoire.js | 2 +- website/common/script/ops/buy/buyMysterySet.js | 2 +- website/common/script/ops/buy/hourglassPurchase.js | 2 +- website/common/script/ops/buy/purchase.js | 2 +- website/common/script/ops/changeClass.js | 2 +- website/common/script/ops/feed.js | 2 +- website/common/script/ops/hatch.js | 2 +- website/common/script/ops/rebirth.js | 2 +- website/common/script/ops/releaseMounts.js | 2 +- website/common/script/ops/releasePets.js | 2 +- website/common/script/ops/reroll.js | 2 +- website/common/script/ops/revive.js | 2 +- website/common/script/ops/sleep.js | 2 +- website/common/script/ops/unlock.js | 2 +- website/server/controllers/api-v3/auth.js | 2 +- website/server/controllers/api-v3/challenges.js | 10 +++++----- website/server/controllers/api-v3/chat.js | 4 ++-- website/server/controllers/api-v3/groups.js | 6 +++--- website/server/controllers/api-v3/members.js | 2 +- website/server/controllers/api-v3/quests.js | 8 ++++---- website/server/controllers/api-v3/tasks.js | 4 ++-- website/server/controllers/api-v3/tasks/groups.js | 4 ++-- website/server/controllers/api-v3/user.js | 2 +- website/server/libs/auth/index.js | 2 +- website/server/libs/auth/social.js | 2 +- website/server/libs/cron.js | 2 +- website/server/libs/invites/index.js | 6 +++--- website/server/libs/payments/gems.js | 2 +- website/server/libs/payments/skuItem.js | 2 +- website/server/libs/payments/subscriptions.js | 2 +- website/server/libs/tasks/index.js | 2 +- website/server/libs/user/index.js | 6 +++--- 36 files changed, 52 insertions(+), 52 deletions(-) diff --git a/habitica-images b/habitica-images index e3215f16f9..aa72332019 160000 --- a/habitica-images +++ b/habitica-images @@ -1 +1 @@ -Subproject commit e3215f16f99f9e33bf218b46862d6b2ad9bd7fec +Subproject commit aa723320199d7f03ce749d431b46e8d7f95cc8de diff --git a/website/common/script/fns/randomDrop.js b/website/common/script/fns/randomDrop.js index 6c42adbec8..fbffa230c3 100644 --- a/website/common/script/fns/randomDrop.js +++ b/website/common/script/fns/randomDrop.js @@ -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', diff --git a/website/common/script/libs/onboarding.js b/website/common/script/libs/onboarding.js index a0bddc79f6..a522732798 100644 --- a/website/common/script/libs/onboarding.js +++ b/website/common/script/libs/onboarding.js @@ -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', diff --git a/website/common/script/ops/buy/abstractBuyOperation.js b/website/common/script/ops/buy/abstractBuyOperation.js index 1551261f6e..08a1ea9dbf 100644 --- a/website/common/script/ops/buy/abstractBuyOperation.js +++ b/website/common/script/ops/buy/abstractBuyOperation.js @@ -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, diff --git a/website/common/script/ops/buy/buyArmoire.js b/website/common/script/ops/buy/buyArmoire.js index f8730faf5d..bf5d5c5a11 100644 --- a/website/common/script/ops/buy/buyArmoire.js +++ b/website/common/script/ops/buy/buyArmoire.js @@ -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', diff --git a/website/common/script/ops/buy/buyMysterySet.js b/website/common/script/ops/buy/buyMysterySet.js index 3de396a424..54312c3732 100644 --- a/website/common/script/ops/buy/buyMysterySet.js +++ b/website/common/script/ops/buy/buyMysterySet.js @@ -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', diff --git a/website/common/script/ops/buy/hourglassPurchase.js b/website/common/script/ops/buy/hourglassPurchase.js index d37455f135..947c4a9b27 100644 --- a/website/common/script/ops/buy/hourglassPurchase.js +++ b/website/common/script/ops/buy/hourglassPurchase.js @@ -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, diff --git a/website/common/script/ops/buy/purchase.js b/website/common/script/ops/buy/purchase.js index 6eacf6508b..12188c637a 100644 --- a/website/common/script/ops/buy/purchase.js +++ b/website/common/script/ops/buy/purchase.js @@ -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, diff --git a/website/common/script/ops/changeClass.js b/website/common/script/ops/changeClass.js index 67fa4b7be5..ef960adfd7 100644 --- a/website/common/script/ops/changeClass.js +++ b/website/common/script/ops/changeClass.js @@ -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', diff --git a/website/common/script/ops/feed.js b/website/common/script/ops/feed.js index ec5be4116a..bf40852e4a 100644 --- a/website/common/script/ops/feed.js +++ b/website/common/script/ops/feed.js @@ -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, diff --git a/website/common/script/ops/hatch.js b/website/common/script/ops/hatch.js index d23b99f450..d00a173168 100644 --- a/website/common/script/ops/hatch.js +++ b/website/common/script/ops/hatch.js @@ -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', diff --git a/website/common/script/ops/rebirth.js b/website/common/script/ops/rebirth.js index c3064505e6..0278f3e5ba 100644 --- a/website/common/script/ops/rebirth.js +++ b/website/common/script/ops/rebirth.js @@ -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', }; diff --git a/website/common/script/ops/releaseMounts.js b/website/common/script/ops/releaseMounts.js index f55e5bff22..fe93d04f28 100644 --- a/website/common/script/ops/releaseMounts.js +++ b/website/common/script/ops/releaseMounts.js @@ -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, diff --git a/website/common/script/ops/releasePets.js b/website/common/script/ops/releasePets.js index 0419d467f2..734b9db71c 100644 --- a/website/common/script/ops/releasePets.js +++ b/website/common/script/ops/releasePets.js @@ -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, diff --git a/website/common/script/ops/reroll.js b/website/common/script/ops/reroll.js index 95ec016959..40d2b96394 100644 --- a/website/common/script/ops/reroll.js +++ b/website/common/script/ops/reroll.js @@ -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, diff --git a/website/common/script/ops/revive.js b/website/common/script/ops/revive.js index d40e01c426..217fd1397c 100644 --- a/website/common/script/ops/revive.js +++ b/website/common/script/ops/revive.js @@ -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', diff --git a/website/common/script/ops/sleep.js b/website/common/script/ops/sleep.js index 23d1fca57f..3e894c7e90 100644 --- a/website/common/script/ops/sleep.js +++ b/website/common/script/ops/sleep.js @@ -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', diff --git a/website/common/script/ops/unlock.js b/website/common/script/ops/unlock.js index fa9aa46d00..57ee1c2672 100644 --- a/website/common/script/ops/unlock.js +++ b/website/common/script/ops/unlock.js @@ -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', diff --git a/website/server/controllers/api-v3/auth.js b/website/server/controllers/api-v3/auth.js index 70c065a041..2444ce4d25 100644 --- a/website/server/controllers/api-v3/auth.js +++ b/website/server/controllers/api-v3/auth.js @@ -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, diff --git a/website/server/controllers/api-v3/challenges.js b/website/server/controllers/api-v3/challenges.js index ba9c411bf5..6b0caa6082 100644 --- a/website/server/controllers/api-v3/challenges.js +++ b/website/server/controllers/api-v3/challenges.js @@ -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', diff --git a/website/server/controllers/api-v3/chat.js b/website/server/controllers/api-v3/chat.js index 255d8c30e1..4db94ee46d 100644 --- a/website/server/controllers/api-v3/chat.js +++ b/website/server/controllers/api-v3/chat.js @@ -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', diff --git a/website/server/controllers/api-v3/groups.js b/website/server/controllers/api-v3/groups.js index 7d0a4fb49a..477d280a3d 100644 --- a/website/server/controllers/api-v3/groups.js +++ b/website/server/controllers/api-v3/groups.js @@ -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', diff --git a/website/server/controllers/api-v3/members.js b/website/server/controllers/api-v3/members.js index 764a0ee211..b6ff101840 100644 --- a/website/server/controllers/api-v3/members.js +++ b/website/server/controllers/api-v3/members.js @@ -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', diff --git a/website/server/controllers/api-v3/quests.js b/website/server/controllers/api-v3/quests.js index f45135e5b0..b4f80df91f 100644 --- a/website/server/controllers/api-v3/quests.js +++ b/website/server/controllers/api-v3/quests.js @@ -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', diff --git a/website/server/controllers/api-v3/tasks.js b/website/server/controllers/api-v3/tasks.js index 5d91b70557..0547a5aede 100644 --- a/website/server/controllers/api-v3/tasks.js +++ b/website/server/controllers/api-v3/tasks.js @@ -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', diff --git a/website/server/controllers/api-v3/tasks/groups.js b/website/server/controllers/api-v3/tasks/groups.js index 95ec995fbf..6a3678042c 100644 --- a/website/server/controllers/api-v3/tasks/groups.js +++ b/website/server/controllers/api-v3/tasks/groups.js @@ -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', diff --git a/website/server/controllers/api-v3/user.js b/website/server/controllers/api-v3/user.js index ddc1f81ed0..371fda749a 100644 --- a/website/server/controllers/api-v3/user.js +++ b/website/server/controllers/api-v3/user.js @@ -326,7 +326,7 @@ api.deleteUser = { } res.analytics.track('account delete', { - user: pick(user, ['preferences', 'registeredThrough']), + user, uuid: user._id, hitType: 'event', category: 'behavior', diff --git a/website/server/libs/auth/index.js b/website/server/libs/auth/index.js index 15ac763d86..b29906afc9 100644 --- a/website/server/libs/auth/index.js +++ b/website/server/libs/auth/index.js @@ -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, diff --git a/website/server/libs/auth/social.js b/website/server/libs/auth/social.js index a6101378d5..bd91ca16f1 100644 --- a/website/server/libs/auth/social.js +++ b/website/server/libs/auth/social.js @@ -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, diff --git a/website/server/libs/cron.js b/website/server/libs/cron.js index f99b2a4159..5c1f208e3f 100644 --- a/website/server/libs/cron.js +++ b/website/server/libs/cron.js @@ -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), diff --git a/website/server/libs/invites/index.js b/website/server/libs/invites/index.js index 1a763b3290..b89df9a12f 100644 --- a/website/server/libs/invites/index.js +++ b/website/server/libs/invites/index.js @@ -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', diff --git a/website/server/libs/payments/gems.js b/website/server/libs/payments/gems.js index e945fd692c..0ceec5866f 100644 --- a/website/server/libs/payments/gems.js +++ b/website/server/libs/payments/gems.js @@ -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`, diff --git a/website/server/libs/payments/skuItem.js b/website/server/libs/payments/skuItem.js index 0c715f0d58..7456641be9 100644 --- a/website/server/libs/payments/skuItem.js +++ b/website/server/libs/payments/skuItem.js @@ -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`, diff --git a/website/server/libs/payments/subscriptions.js b/website/server/libs/payments/subscriptions.js index 93ff285b41..d2b97a5c91 100644 --- a/website/server/libs/payments/subscriptions.js +++ b/website/server/libs/payments/subscriptions.js @@ -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, diff --git a/website/server/libs/tasks/index.js b/website/server/libs/tasks/index.js index 2b4c07464b..26d7f78fa2 100644 --- a/website/server/libs/tasks/index.js +++ b/website/server/libs/tasks/index.js @@ -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', diff --git a/website/server/libs/user/index.js b/website/server/libs/user/index.js index 83cf6f8ced..b3c305b762 100644 --- a/website/server/libs/user/index.js +++ b/website/server/libs/user/index.js @@ -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',