2025-08-04 18:41:00 -04:00

74 lines
2.1 KiB
TypeScript

import { addEventType } from "./_addEventType";
import type AlgoliaAnalytics from "./insights";
import type { WithAdditionalParams } from "./utils";
import { extractAdditionalParams, storeQueryForObject } from "./utils";
export interface InsightsSearchClickEvent {
eventName: string;
userToken?: string;
authenticatedUserToken?: string;
timestamp?: number;
index: string;
queryID: string;
objectIDs: string[];
positions: number[];
}
export function clickedObjectIDsAfterSearch(
this: AlgoliaAnalytics,
...params: Array<WithAdditionalParams<InsightsSearchClickEvent>>
): ReturnType<AlgoliaAnalytics["sendEvents"]> {
const { events, additionalParams } =
extractAdditionalParams<InsightsSearchClickEvent>(params);
events.forEach(({ index, queryID, objectIDs }) =>
objectIDs.forEach(
(objectID) =>
!this._userHasOptedOut && storeQueryForObject(index, objectID, queryID)
)
);
return this.sendEvents(addEventType("click", events), additionalParams);
}
export interface InsightsClickObjectIDsEvent {
eventName: string;
userToken?: string;
authenticatedUserToken?: string;
timestamp?: number;
index: string;
objectIDs: string[];
}
export function clickedObjectIDs(
this: AlgoliaAnalytics,
...params: Array<WithAdditionalParams<InsightsClickObjectIDsEvent>>
): ReturnType<AlgoliaAnalytics["sendEvents"]> {
const { events, additionalParams } =
extractAdditionalParams<InsightsClickObjectIDsEvent>(params);
return this.sendEvents(addEventType("click", events), additionalParams);
}
export interface InsightsClickFiltersEvent {
eventName: string;
userToken?: string;
authenticatedUserToken?: string;
timestamp?: number;
index: string;
filters: string[];
}
export function clickedFilters(
this: AlgoliaAnalytics,
...params: Array<WithAdditionalParams<InsightsClickFiltersEvent>>
): ReturnType<AlgoliaAnalytics["sendEvents"]> {
const { events, additionalParams } =
extractAdditionalParams<InsightsClickFiltersEvent>(params);
return this.sendEvents(addEventType("click", events), additionalParams);
}