Skip to content

Commit 7f63454

Browse files
committed
implements tracking for user profile changes
1 parent c5e1e01 commit 7f63454

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

components/server/src/user/user-deletion-service.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ export class UserDeletionService {
100100
bitbucket_slug: "deleted-user",
101101
email: "deleted-user",
102102
full_name: "deleted-user",
103+
name: "deleted-user",
103104
},
104105
});
105106
}

components/server/src/workspace/gitpod-server-impl.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -421,6 +421,9 @@ export class GitpodServerImpl implements GitpodServerWithTracing, Disposable {
421421
const user = this.checkUser("updateLoggedInUser");
422422
await this.guardAccess({ kind: "user", subject: user }, "update");
423423

424+
//hang on to user profile before it's overwritten for analytics below
425+
const oldProfile = { name: user.fullName, ...user.additionalData?.profile };
426+
424427
const allowedFields: (keyof User)[] = ["avatarUrl", "fullName", "additionalData"];
425428
for (const p of allowedFields) {
426429
if (p in partialUser) {
@@ -429,6 +432,28 @@ export class GitpodServerImpl implements GitpodServerWithTracing, Disposable {
429432
}
430433

431434
await this.userDB.updateUserPartial(user);
435+
436+
//track event and user profile if profile of partialUser changed
437+
const newProfile = { name: partialUser.fullName, ...partialUser.additionalData?.profile };
438+
if (newProfile) {
439+
if (
440+
!oldProfile ||
441+
newProfile.emailAddress != oldProfile.emailAddress ||
442+
newProfile.companyName != oldProfile.companyName ||
443+
newProfile.name != oldProfile.name
444+
) {
445+
this.analytics.track({
446+
userId: user.id,
447+
event: "profile_changed",
448+
properties: { new: newProfile, old: oldProfile },
449+
});
450+
this.analytics.identify({
451+
userId: user.id,
452+
traits: { email: newProfile.emailAddress, company: newProfile.companyName, name: newProfile.name },
453+
});
454+
}
455+
}
456+
432457
return user;
433458
}
434459

0 commit comments

Comments
 (0)