From 904a52f5a18c46a6c5f89bc2d541ca9fb64f292c Mon Sep 17 00:00:00 2001 From: Ahmed Bouhuolia Date: Mon, 30 Sep 2024 23:12:42 +0200 Subject: [PATCH] feat: listen to Stripe integration events --- .../server/src/constants/event-tracker.ts | 2 ++ .../events/StripeIntegrationEventsTracker.ts | 32 +++++++++++++++++++ .../services/EventsTracker/events/events.ts | 2 ++ 3 files changed, 36 insertions(+) create mode 100644 packages/server/src/services/EventsTracker/events/StripeIntegrationEventsTracker.ts diff --git a/packages/server/src/constants/event-tracker.ts b/packages/server/src/constants/event-tracker.ts index 495819377..0bff17bcd 100644 --- a/packages/server/src/constants/event-tracker.ts +++ b/packages/server/src/constants/event-tracker.ts @@ -79,6 +79,8 @@ export const PAYMENT_METHOD_DELETED = 'Payment method deleted'; export const INVOICE_PAYMENT_LINK_GENERATED = 'Invoice payment link generated'; +export const STRIPE_INTEGRAION_CONNECTED = 'Stripe integration oauth2 connected'; + // # Event Groups export const ACCOUNT_GROUP = 'Account'; export const ITEM_GROUP = 'Item'; diff --git a/packages/server/src/services/EventsTracker/events/StripeIntegrationEventsTracker.ts b/packages/server/src/services/EventsTracker/events/StripeIntegrationEventsTracker.ts new file mode 100644 index 000000000..e99e7aa4c --- /dev/null +++ b/packages/server/src/services/EventsTracker/events/StripeIntegrationEventsTracker.ts @@ -0,0 +1,32 @@ +import { Inject, Service } from 'typedi'; +import { EventSubscriber } from '@/lib/EventPublisher/EventPublisher'; +import { ISaleInvoiceCreatedPayload } from '@/interfaces'; +import { PosthogService } from '../PostHog'; +import { STRIPE_INTEGRAION_CONNECTED } from '@/constants/event-tracker'; +import events from '@/subscribers/events'; + +@Service() +export class StripeIntegrationEventsTracker extends EventSubscriber { + @Inject() + private posthog: PosthogService; + + /** + * Constructor method. + */ + public attach(bus) { + bus.subscribe( + events.stripeIntegration.onOAuthCodeGranted, + this.handleTrackOAuthCodeGrantedTrackEvent + ); + } + + private handleTrackOAuthCodeGrantedTrackEvent = ({ + tenantId, + }: ISaleInvoiceCreatedPayload) => { + this.posthog.trackEvent({ + distinctId: `tenant-${tenantId}`, + event: STRIPE_INTEGRAION_CONNECTED, + properties: {}, + }); + }; +} diff --git a/packages/server/src/services/EventsTracker/events/events.ts b/packages/server/src/services/EventsTracker/events/events.ts index 3dafa92bb..89714f02d 100644 --- a/packages/server/src/services/EventsTracker/events/events.ts +++ b/packages/server/src/services/EventsTracker/events/events.ts @@ -15,6 +15,7 @@ import { BankRuleEventsTracker } from './BankRuleEventsTracker'; import { PdfTemplateEventsTracker } from './PdfTemplateEventsTracker'; import { PaymentMethodEventsTracker } from './PaymentMethodEventsTracker'; import { PaymentLinkEventsTracker } from './PaymentLinkEventsTracker'; +import { StripeIntegrationEventsTracker } from './StripeIntegrationEventsTracker'; export const EventsTrackerListeners = [ SaleInvoiceEventsTracker, @@ -34,4 +35,5 @@ export const EventsTrackerListeners = [ PdfTemplateEventsTracker, PaymentMethodEventsTracker, PaymentLinkEventsTracker, + StripeIntegrationEventsTracker, ];