diff --git a/packages/server-nest/src/modules/App/App.module.ts b/packages/server-nest/src/modules/App/App.module.ts index 7d282c9ac..9445bd0a1 100644 --- a/packages/server-nest/src/modules/App/App.module.ts +++ b/packages/server-nest/src/modules/App/App.module.ts @@ -63,8 +63,8 @@ import { BankingTransactionsModule } from '../BankingTransactions/BankingTransac import { TransactionsLockingModule } from '../TransactionsLocking/TransactionsLocking.module'; import { SettingsModule } from '../Settings/Settings.module'; import { InventoryAdjustmentsModule } from '../InventoryAdjutments/InventoryAdjustments.module'; -import { EventTrackerModule } from '../EventsTracker/EventTracker.module'; import { PostHogModule } from '../EventsTracker/postHog.module'; +import { EventTrackerModule } from '../EventsTracker/EventTracker.module'; @Module({ imports: [ @@ -152,8 +152,8 @@ import { PostHogModule } from '../EventsTracker/postHog.module'; TransactionsLockingModule, SettingsModule, InventoryAdjustmentsModule, - // PostHogModule, - // EventTrackerModule, + PostHogModule, + EventTrackerModule, ], controllers: [AppController], providers: [ diff --git a/packages/server-nest/src/modules/EventsTracker/EventTracker.service.ts b/packages/server-nest/src/modules/EventsTracker/EventTracker.service.ts index 8014430d6..ec776ab74 100644 --- a/packages/server-nest/src/modules/EventsTracker/EventTracker.service.ts +++ b/packages/server-nest/src/modules/EventsTracker/EventTracker.service.ts @@ -1,23 +1,33 @@ import { Inject, Injectable } from '@nestjs/common'; -// import { PostHog, EventMessage } from 'posthog-node'; -import { POSTHOG } from './postHog.module'; import { TenancyContext } from '../Tenancy/TenancyContext.service'; +import { POSTHOG_PROVIDER } from './PostHog.constants'; -interface EventMessage { - distinctId +export interface IdentifyMessage { + distinctId: string; + properties?: Record; + disableGeoip?: boolean; } + +export interface EventMessage extends IdentifyMessage { + event: string; + groups?: Record; // Mapping of group type to group id + sendFeatureFlags?: boolean; + timestamp?: Date; + uuid?: string; +} + @Injectable() export class EventTrackerService { constructor( - @Inject(POSTHOG) private readonly posthog: any, private readonly tenancyContext: TenancyContext, + @Inject(POSTHOG_PROVIDER) private readonly posthog: any, ) {} /** * Track tenant an event. * @param event - The event to track. */ - public async trackEvent(event: any) { + public async trackEvent(event: Omit) { // Cannot continue if the Posthog not configured. if (!this.posthog) return; diff --git a/packages/server-nest/src/modules/EventsTracker/PostHog.constants.ts b/packages/server-nest/src/modules/EventsTracker/PostHog.constants.ts new file mode 100644 index 000000000..10cd3a809 --- /dev/null +++ b/packages/server-nest/src/modules/EventsTracker/PostHog.constants.ts @@ -0,0 +1 @@ +export const POSTHOG_PROVIDER = 'POSTHOG_PROVIDER'; \ No newline at end of file diff --git a/packages/server-nest/src/modules/EventsTracker/postHog.module.ts b/packages/server-nest/src/modules/EventsTracker/postHog.module.ts index 6dba3444b..592d7be7d 100644 --- a/packages/server-nest/src/modules/EventsTracker/postHog.module.ts +++ b/packages/server-nest/src/modules/EventsTracker/postHog.module.ts @@ -1,24 +1,27 @@ import { Module } from '@nestjs/common'; -// import { PostHog } from 'posthog-node'; +import { PostHog } from 'posthog-node'; import { EventTrackerService } from './EventTracker.service'; import { ConfigService } from '@nestjs/config'; - -export const POSTHOG = 'PostHog'; +import { POSTHOG_PROVIDER } from './PostHog.constants'; +import { TenancyContext } from '../Tenancy/TenancyContext.service'; @Module({ providers: [ EventTrackerService, + TenancyContext, { - provide: POSTHOG, + provide: POSTHOG_PROVIDER, useFactory: (configService: ConfigService) => { - + if (configService.get('posthog.apiKey')) { + return new PostHog(configService.get('posthog.apiKey'), { + host: configService.get('posthog.host'), + }); + } + return null; }, - // new PostHog(configService.get('posthog.apiKey'), { - // host: configService.get('posthog.host'), - // }), inject: [ConfigService], }, ], - exports: [EventTrackerService], + exports: [EventTrackerService, POSTHOG_PROVIDER], }) export class PostHogModule {}