@applicaster/zapp-react-native-utils
Version:
Applicaster Zapp React Native utilities package
62 lines (51 loc) • 1.62 kB
text/typescript
import { log_error, log_debug } from "../logger";
import { ANALYTICS_CORE_EVENTS } from "../events";
import { postAnalyticEvent } from "../manager";
import {
replaceAnalyticsPropsNils,
eventForEntry,
eventForComponent,
extensionsEvents,
} from "./helper";
declare type AnalyticsDefaultHelperProperties = {
analyticsScreenData: AnalyticsScreenProperties;
extraProps: any;
component: ZappUIComponent;
zappPipesData: ZappPipesData;
};
export const sendOnClickEvent = ({
component,
zappPipesData,
extraProps,
analyticsScreenData,
}: AnalyticsDefaultHelperProperties) => {
const castedExtraProps: ExtraProps = extraProps;
const componentData = component || extraProps.component;
const data = zappPipesData || extraProps.zappPipesData;
const eventName = ANALYTICS_CORE_EVENTS.TAP_CELL;
if (!analyticsScreenData) {
log_error(
`sendOnClickEvent: no screen data available to send analytics event ${eventName}`
);
}
const analyticsCustomProperties = extensionsEvents(
castedExtraProps?.item?.extensions
);
const analyticsProps = {
...eventForEntry(castedExtraProps?.item, castedExtraProps?.index),
...eventForComponent(componentData, data?.data?.title, data),
...replaceAnalyticsPropsNils({
...analyticsScreenData,
}),
};
if (analyticsCustomProperties) {
analyticsProps.analyticsCustomProperties = analyticsCustomProperties;
}
log_debug(
`sendOnClickEvent: send event: ${eventName}, screenName: ${analyticsScreenData.screen_name}`,
{
analyticsProps,
}
);
postAnalyticEvent(eventName, analyticsProps);
};