UNPKG

@applicaster/zapp-react-native-utils

Version:

Applicaster Zapp React Native utilities package

62 lines (51 loc) 1.62 kB
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); };