Files
calendar/packages/features/tasker/tasks/analytics/sendAnalyticsEvent.ts
T
Benny JooandGitHub 76332a759b refactor: circular deps between app store and lib [5] (#23936)
* getBulkEventTypes

* 2 eventtypes related utils to features

* locationsResolver

* checkForEmptyAssignment

* mv defaultEvents to features

* update imports

* PrismaAppRepository

* mv currencyConversions from appstore to lib

* useAppsData

* videoClient

* analytics files

* fix

* mv

* prettier

* use named import
2025-09-19 10:16:56 -03:00

38 lines
1.2 KiB
TypeScript

import logger from "@calcom/lib/logger";
import { safeStringify } from "@calcom/lib/safeStringify";
import { CredentialRepository } from "@calcom/lib/server/repository/credential";
import AnalyticsManager from "./analyticsManager";
import { sendAnalyticsEventSchema } from "./schema";
const log = logger.getSubLogger({ prefix: [`[[tasker] sendAnalyticsEvent]`] });
export async function sendAnalyticsEvent(payload: string): Promise<void> {
try {
const parsedPayload = sendAnalyticsEventSchema.safeParse(JSON.parse(payload));
if (!parsedPayload.success) {
throw new Error(`malformed payload in sendAnalyticsEvent: ${parsedPayload.error}`);
}
const { credentialId, info } = parsedPayload.data;
const credential = await CredentialRepository.findFirstByIdWithKeyAndUser({ id: credentialId });
if (!credential) {
throw new Error("Invalid credential");
}
const manager = new AnalyticsManager(credential);
if (!manager) return;
await manager.sendEvent(info);
} catch (err) {
log.error(
`[Will retry] Error creating analytics event: error: ${safeStringify(err)} payload: ${safeStringify({
payload,
})}`
);
// Intentional rethrow to trigger retry
throw err;
}
}