@snowplow/react-native-tracker
Version:
React Native tracker for Snowplow
60 lines (57 loc) • 1.96 kB
JavaScript
;
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