Skip to content

Commit e79030b

Browse files
committed
chore: add metrics for page creation, insight generation, and team privacy changes
1 parent a98110f commit e79030b

File tree

4 files changed

+33
-3
lines changed

4 files changed

+33
-3
lines changed

packages/server/graphql/public/mutations/createPage.ts

+8-1
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,21 @@
11
import getKysely from '../../../postgres/getKysely'
2+
import {analytics} from '../../../utils/analytics/analytics'
23
import {getUserId} from '../../../utils/authorization'
34
import {MutationResolvers} from '../resolverTypes'
45

5-
const createPage: MutationResolvers['createPage'] = async (_source, _args, {authToken}) => {
6+
const createPage: MutationResolvers['createPage'] = async (
7+
_source,
8+
_args,
9+
{authToken, dataLoader}
10+
) => {
611
const userId = getUserId(authToken)
12+
const viewer = await dataLoader.get('users').loadNonNull(userId)
713
const page = await getKysely()
814
.insertInto('Page')
915
.values({userId})
1016
.returningAll()
1117
.executeTakeFirstOrThrow()
18+
analytics.pageCreated(viewer, page.id)
1219
return {page}
1320
}
1421

packages/server/graphql/public/mutations/generateInsight.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import {SubscriptionChannel} from 'parabol-client/types/constEnums'
22
import getKysely from '../../../postgres/getKysely'
3+
import {analytics} from '../../../utils/analytics/analytics'
34
import {getUserId} from '../../../utils/authorization'
45
import publish from '../../../utils/publish'
56
import standardError from '../../../utils/standardError'
@@ -14,6 +15,7 @@ const generateInsight: MutationResolvers['generateInsight'] = async (
1415
) => {
1516
const {dataLoader, socketId: mutatorId, authToken} = context
1617
const viewerId = getUserId(authToken)
18+
const viewer = await dataLoader.get('users').loadNonNull(viewerId)
1719

1820
const hasInsightsFlag = await dataLoader
1921
.get('featureFlagByOwnerId')
@@ -65,7 +67,7 @@ const generateInsight: MutationResolvers['generateInsight'] = async (
6567
}
6668

6769
publish(SubscriptionChannel.TEAM, teamId, 'GenerateInsightSuccess', data, subOptions)
68-
70+
analytics.insightGenerated(viewer, insertedInsight.id, teamId)
6971
return data
7072
}
7173

packages/server/graphql/public/mutations/toggleTeamPrivacy.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import toTeamMemberId from '../../../../client/utils/relay/toTeamMemberId'
22
import getKysely from '../../../postgres/getKysely'
3+
import {analytics} from '../../../utils/analytics/analytics'
34
import {getUserId, isUserOrgAdmin} from '../../../utils/authorization'
45
import standardError from '../../../utils/standardError'
56
import {MutationResolvers} from '../resolverTypes'
@@ -10,6 +11,7 @@ const toggleTeamPrivacy: MutationResolvers['toggleTeamPrivacy'] = async (
1011
{authToken, dataLoader}
1112
) => {
1213
const viewerId = getUserId(authToken)
14+
const viewer = await dataLoader.get('users').loadNonNull(viewerId)
1315
const pg = getKysely()
1416

1517
const teamMemberId = toTeamMemberId(teamId, viewerId)
@@ -42,7 +44,7 @@ const toggleTeamPrivacy: MutationResolvers['toggleTeamPrivacy'] = async (
4244
team.isPublic = !team.isPublic
4345

4446
const data = {teamId}
45-
47+
analytics.teamPrivacyChanged(viewer, teamId, team.isPublic)
4648
return data
4749
}
4850

packages/server/utils/analytics/analytics.ts

+19
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@ export type AnalyticsEvent =
131131
| 'Sent Invite Accepted'
132132
| 'Notification Email Sent'
133133
| 'Team Joined'
134+
| 'Team Privacy Changed'
134135
// org
135136
| 'Upgrade CTA Clicked'
136137
| 'Organization Upgrade Attempted'
@@ -143,6 +144,10 @@ export type AnalyticsEvent =
143144
| 'Task Created'
144145
| 'Task Published'
145146
| 'Task Estimate Set'
147+
// page
148+
| 'Page Created'
149+
// insight
150+
| 'Insight Generated'
146151
// user
147152
| 'Account Created'
148153
| 'Account Removed'
@@ -509,6 +514,10 @@ class Analytics {
509514
})
510515
}
511516

517+
teamPrivacyChanged = (user: AnalyticsUser, teamId: string, isPublic: boolean) => {
518+
this.track(user, 'Team Privacy Changed', {teamId, isPublic})
519+
}
520+
512521
//org
513522
clickedUpgradeCTA = (user: AnalyticsUser, upgradeCTALocation: UpgradeCTALocationEnumType) => {
514523
this.track(user, 'Upgrade CTA Clicked', {upgradeCTALocation})
@@ -552,6 +561,16 @@ class Analytics {
552561
this.track(user, 'Task Estimate Set', taskEstimateProperties)
553562
}
554563

564+
// page
565+
pageCreated = (user: AnalyticsUser, pageId: number) => {
566+
this.track(user, 'Page Created', {pageId})
567+
}
568+
569+
// insight
570+
insightGenerated = (user: AnalyticsUser, insightId: number, teamId: string) => {
571+
this.track(user, 'Insight Generated', {insightId, teamId})
572+
}
573+
555574
// user
556575
accountCreated = (user: AnalyticsUser, isInvited: boolean, isPatient0: boolean) => {
557576
this.track(user, 'Account Created', {

0 commit comments

Comments
 (0)