@flagship.io/react-native-sdk
Version:
Flagship SDK for React Native
70 lines (69 loc) • 3.07 kB
JavaScript
'use client';
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
import { Flagship, useFlagship as useFs } from '@flagship.io/react-sdk';
import { useCallback, useMemo } from 'react';
import { Dimensions, PixelRatio, Platform } from 'react-native';
const DEVICE_CATEGORY_MAP = {
ios: 'iphone',
android: 'android',
macos: 'darwin',
windows: 'win32',
web: 'browser',
};
const createPageView = (visitorId, screenName) => {
var _a;
const viewport = Dimensions.get('window');
const screen = Dimensions.get('screen');
const config = Flagship.getConfig();
return {
visitorId: visitorId,
customerAccountId: (_a = config === null || config === void 0 ? void 0 : config.envId) !== null && _a !== void 0 ? _a : '',
currentUrl: screenName,
hasAdBlocker: false,
screenDepth: "24",
screenSize: `${screen.width},${screen.height};`,
doNotTrack: 'unspecified',
fonts: '[]',
hasFakeBrowserInfos: false,
hasFakeLanguageInfos: false,
hasFakeOsInfos: false,
hasFakeResolutionInfos: false,
userLanguage: 'en',
deviceCategory: DEVICE_CATEGORY_MAP[Platform.OS] || 'unknown',
pixelRatio: PixelRatio.get(),
viewportSize: `[${viewport.width},${viewport.height}]`,
touchSupport: "[5, true, true]",
userAgent: 'React Native',
documentReferer: '',
eventCategory: "click tunnel auto",
timezoneOffset: new Date().getTimezoneOffset(),
};
};
export const useFlagship = () => {
const fs = useFs();
const sendEaiPageViewAsync = useCallback((screenName) => __awaiter(void 0, void 0, void 0, function* () {
if (!fs.context) {
return;
}
const pageView = createPageView(fs.visitorId, screenName);
const visitor = Flagship.getVisitor();
visitor.sendEaiPageView(pageView);
}), [fs.context]);
const collectEAIEventsAsync = useCallback((screenName) => __awaiter(void 0, void 0, void 0, function* () {
if (!fs.context) {
return;
}
const pageView = createPageView(fs.visitorId, screenName);
return fs.collectEAIEventsAsync(pageView);
}), [fs.collectEAIEventsAsync, fs.context]);
return useMemo(() => (Object.assign(Object.assign({}, fs), { collectEAIEventsAsync,
sendEaiPageViewAsync })), [fs, collectEAIEventsAsync, sendEaiPageViewAsync]);
};