import { DomainEventHandlerInterface, SubscriptionReactivatedEvent } from '@standardnotes/domain-events' import { inject, injectable } from 'inversify' import TYPES from '../../Bootstrap/Types' import { AnalyticsActivity } from '../Analytics/AnalyticsActivity' import { AnalyticsStoreInterface } from '../Analytics/AnalyticsStoreInterface' import { Period } from '../Time/Period' import { GetUserAnalyticsId } from '../UseCase/GetUserAnalyticsId/GetUserAnalyticsId' @injectable() export class SubscriptionReactivatedEventHandler implements DomainEventHandlerInterface { constructor( @inject(TYPES.AnalyticsStore) private analyticsStore: AnalyticsStoreInterface, @inject(TYPES.GetUserAnalyticsId) private getUserAnalyticsId: GetUserAnalyticsId, ) {} async handle(event: SubscriptionReactivatedEvent): Promise { const { analyticsId } = await this.getUserAnalyticsId.execute({ userEmail: event.payload.userEmail }) await this.analyticsStore.markActivity([AnalyticsActivity.SubscriptionReactivated], analyticsId, [ Period.Today, Period.ThisWeek, Period.ThisMonth, ]) } }