2
0

📈 (posthog) Send user last login event

This commit is contained in:
Baptiste Arnaud
2024-03-04 10:04:48 +01:00
parent 8846cdbf6b
commit 434b06767d
3 changed files with 22 additions and 1 deletions

View File

@ -20,6 +20,7 @@ import got from 'got'
import { env } from '@typebot.io/env'
import * as Sentry from '@sentry/nextjs'
import { getIp } from '@typebot.io/lib/getIp'
import { trackEvents } from '@typebot.io/lib/telemetry/trackEvents'
const providers: Provider[] = []
@ -218,11 +219,18 @@ const updateLastActivityDate = async (user: User) => {
first.getMonth() === second.getMonth() &&
first.getDate() === second.getDate()
if (!datesAreOnSameDay(user.lastActivityAt, new Date()))
if (!datesAreOnSameDay(user.lastActivityAt, new Date())) {
await prisma.user.updateMany({
where: { id: user.id },
data: { lastActivityAt: new Date() },
})
await trackEvents([
{
name: 'User logged in',
userId: user.id,
},
])
}
}
const getUserGroups = async (account: Account): Promise<string[]> => {

View File

@ -52,6 +52,12 @@ export const trackEvents = async (events: TelemetryEvent[]) => {
properties:
event.name === 'User updated'
? { $set: event.data }
: event.name === 'User logged in'
? {
$set: {
lastActivityAt: new Date().toISOString(),
},
}
: 'data' in event
? event.data
: undefined,

View File

@ -37,6 +37,12 @@ const userCreatedEventSchema = userEvent.merge(
})
)
const userLoggedInEventSchema = userEvent.merge(
z.object({
name: z.literal('User logged in'),
})
)
const userUpdatedEventSchema = userEvent.merge(
z.object({
name: z.literal('User updated'),
@ -173,6 +179,7 @@ export const clientSideEvents = [removedBrandingEventSchema] as const
export const eventSchema = z.discriminatedUnion('name', [
workspaceCreatedEventSchema,
userCreatedEventSchema,
userLoggedInEventSchema,
typebotCreatedEventSchema,
publishedTypebotEventSchema,
subscriptionUpdatedEventSchema,