📈 (posthog) Send user last login event
This commit is contained in:
@ -20,6 +20,7 @@ import got from 'got'
|
|||||||
import { env } from '@typebot.io/env'
|
import { env } from '@typebot.io/env'
|
||||||
import * as Sentry from '@sentry/nextjs'
|
import * as Sentry from '@sentry/nextjs'
|
||||||
import { getIp } from '@typebot.io/lib/getIp'
|
import { getIp } from '@typebot.io/lib/getIp'
|
||||||
|
import { trackEvents } from '@typebot.io/lib/telemetry/trackEvents'
|
||||||
|
|
||||||
const providers: Provider[] = []
|
const providers: Provider[] = []
|
||||||
|
|
||||||
@ -218,11 +219,18 @@ const updateLastActivityDate = async (user: User) => {
|
|||||||
first.getMonth() === second.getMonth() &&
|
first.getMonth() === second.getMonth() &&
|
||||||
first.getDate() === second.getDate()
|
first.getDate() === second.getDate()
|
||||||
|
|
||||||
if (!datesAreOnSameDay(user.lastActivityAt, new Date()))
|
if (!datesAreOnSameDay(user.lastActivityAt, new Date())) {
|
||||||
await prisma.user.updateMany({
|
await prisma.user.updateMany({
|
||||||
where: { id: user.id },
|
where: { id: user.id },
|
||||||
data: { lastActivityAt: new Date() },
|
data: { lastActivityAt: new Date() },
|
||||||
})
|
})
|
||||||
|
await trackEvents([
|
||||||
|
{
|
||||||
|
name: 'User logged in',
|
||||||
|
userId: user.id,
|
||||||
|
},
|
||||||
|
])
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const getUserGroups = async (account: Account): Promise<string[]> => {
|
const getUserGroups = async (account: Account): Promise<string[]> => {
|
||||||
|
@ -52,6 +52,12 @@ export const trackEvents = async (events: TelemetryEvent[]) => {
|
|||||||
properties:
|
properties:
|
||||||
event.name === 'User updated'
|
event.name === 'User updated'
|
||||||
? { $set: event.data }
|
? { $set: event.data }
|
||||||
|
: event.name === 'User logged in'
|
||||||
|
? {
|
||||||
|
$set: {
|
||||||
|
lastActivityAt: new Date().toISOString(),
|
||||||
|
},
|
||||||
|
}
|
||||||
: 'data' in event
|
: 'data' in event
|
||||||
? event.data
|
? event.data
|
||||||
: undefined,
|
: undefined,
|
||||||
|
@ -37,6 +37,12 @@ const userCreatedEventSchema = userEvent.merge(
|
|||||||
})
|
})
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const userLoggedInEventSchema = userEvent.merge(
|
||||||
|
z.object({
|
||||||
|
name: z.literal('User logged in'),
|
||||||
|
})
|
||||||
|
)
|
||||||
|
|
||||||
const userUpdatedEventSchema = userEvent.merge(
|
const userUpdatedEventSchema = userEvent.merge(
|
||||||
z.object({
|
z.object({
|
||||||
name: z.literal('User updated'),
|
name: z.literal('User updated'),
|
||||||
@ -173,6 +179,7 @@ export const clientSideEvents = [removedBrandingEventSchema] as const
|
|||||||
export const eventSchema = z.discriminatedUnion('name', [
|
export const eventSchema = z.discriminatedUnion('name', [
|
||||||
workspaceCreatedEventSchema,
|
workspaceCreatedEventSchema,
|
||||||
userCreatedEventSchema,
|
userCreatedEventSchema,
|
||||||
|
userLoggedInEventSchema,
|
||||||
typebotCreatedEventSchema,
|
typebotCreatedEventSchema,
|
||||||
publishedTypebotEventSchema,
|
publishedTypebotEventSchema,
|
||||||
subscriptionUpdatedEventSchema,
|
subscriptionUpdatedEventSchema,
|
||||||
|
Reference in New Issue
Block a user