UNPKG

@snowplow/react-native-tracker

Version:
60 lines (57 loc) 1.96 kB
"use strict"; import { buildSelfDescribingEvent } from '@snowplow/tracker-core'; import { DEEP_LINK_ENTITY_SCHEMA, DEEP_LINK_RECEIVED_EVENT_SCHEMA, PAGE_REFERRER_PROPERTY, PAGE_URL_PROPERTY, SCREEN_VIEW_EVENT_SCHEMA } from "../../constants.js"; import { getUsefulSchema } from "../../utils.js"; export function newDeepLinksPlugin(_ref, core) { var _ref$deepLinkContext = _ref.deepLinkContext, deepLinkContext = _ref$deepLinkContext === void 0 ? true : _ref$deepLinkContext; var lastDeepLink; var beforeTrack = function beforeTrack(payloadBuilder) { var schema = getUsefulSchema(payloadBuilder); if (schema == SCREEN_VIEW_EVENT_SCHEMA && lastDeepLink) { var _lastDeepLink = lastDeepLink, url = _lastDeepLink.url, referrer = _lastDeepLink.referrer; if (url) { payloadBuilder.add(PAGE_URL_PROPERTY, url); } if (referrer) { payloadBuilder.add(PAGE_REFERRER_PROPERTY, referrer); } if (deepLinkContext) { payloadBuilder.addContextEntity({ schema: DEEP_LINK_ENTITY_SCHEMA, data: lastDeepLink }); } // Clear the last deep link since we only add it to the first screen view event lastDeepLink = undefined; } }; var trackDeepLinkReceivedEvent = function trackDeepLinkReceivedEvent(argmap, contexts) { lastDeepLink = argmap; var payload = buildSelfDescribingEvent({ event: { schema: DEEP_LINK_RECEIVED_EVENT_SCHEMA, data: argmap } }); // Add atomic event properties var url = argmap.url, referrer = argmap.referrer; if (url) { payload.add(PAGE_URL_PROPERTY, url); } if (referrer) { payload.add(PAGE_REFERRER_PROPERTY, referrer); } core.track(payload, contexts); }; return { trackDeepLinkReceivedEvent: trackDeepLinkReceivedEvent, plugin: { beforeTrack: beforeTrack } }; } //# sourceMappingURL=index.js.map