import ProductInsightsSDK from "../core/base"; import { Events, MetricState, EntityType } from "../types"; class Metric { private entityType: EntityType; constructor(private sdk: ProductInsightsSDK, entityType: EntityType) { this.entityType = entityType; } async initMetric({ entityDocumentId }: { entityDocumentId: string }) { await this.sdk.sendEvent(Events.RECORD_METRIC, { entityDocumentId, entityType: this.entityType, }); } async complete(entityDocumentId: string) { this.updateMetric({ entityDocumentId, state: MetricState.COMPLETED, }); } async cancel(entityDocumentId: string) { this.updateMetric({ entityDocumentId, state: MetricState.CANCELED, }); } private async updateMetric({ entityDocumentId, state, }: { entityDocumentId: string; state: MetricState; }) { await this.sdk.sendEvent(Events.UPDATE_METRIC, { entityDocumentId, state, entityType: this.entityType, }); } } export default Metric;