UNPKG

@applicaster/zapp-react-native-utils

Version:

Applicaster Zapp React Native utilities package

72 lines (61 loc) 1.99 kB
import { log_error, log_debug } from "../logger"; import { ANALYTICS_CORE_EVENTS, ACTION_TYPE } from "../events"; import { postAnalyticEvent } from "../manager"; import { replaceAnalyticsPropsNils, eventForEntry, eventForComponent, extensionsEvents, getLocalStorageSetPayload, getLocalStorageToggleFlagPayload, } 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 actionCellPayload = extraProps?.item?.type?.value === ACTION_TYPE ? getLocalStorageSetPayload(extraProps) || getLocalStorageToggleFlagPayload(extraProps) : null; const eventName = actionCellPayload ? ANALYTICS_CORE_EVENTS.TAP_SELECTABLE_CELL : 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, }), ...actionCellPayload, }; if (analyticsCustomProperties) { analyticsProps.analyticsCustomProperties = analyticsCustomProperties; } log_debug( `sendOnClickEvent: send event: ${eventName}, screenName: ${analyticsScreenData.screen_name}`, { analyticsProps, } ); postAnalyticEvent(eventName, analyticsProps); };