react-native-netmera 2.1.0-beta02 → 2.1.0-beta03
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -1
- package/lib/module/NetmeraAnalyticProvider.js +9 -7
- package/lib/module/NetmeraAnalyticProvider.js.map +1 -1
- package/lib/module/autotracking/useNavigationTracking.js +3 -1
- package/lib/module/autotracking/useNavigationTracking.js.map +1 -1
- package/lib/module/autotracking/useTapTracking.js +6 -4
- package/lib/module/autotracking/useTapTracking.js.map +1 -1
- package/lib/typescript/src/NetmeraAnalyticProvider.d.ts.map +1 -1
- package/lib/typescript/src/autotracking/useNavigationTracking.d.ts.map +1 -1
- package/lib/typescript/src/autotracking/useTapTracking.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/NetmeraAnalyticProvider.tsx +17 -21
- package/src/autotracking/useNavigationTracking.ts +3 -1
- package/src/autotracking/useTapTracking.ts +6 -3
package/README.md
CHANGED
|
@@ -595,6 +595,8 @@ export default function App() {
|
|
|
595
595
|
}
|
|
596
596
|
```
|
|
597
597
|
|
|
598
|
+
> **Note:** Use a single `NetmeraAnalyticProvider` per application. The current screen name is stored in a module-level singleton — mounting multiple providers simultaneously will cause them to overwrite each other's screen state.
|
|
599
|
+
|
|
598
600
|
### Manual action tracking with `Netmera.trackAction`
|
|
599
601
|
|
|
600
602
|
For components that do not fire standard `onPress` or `onValueChange` events (e.g. third-party dropdowns, custom pickers, gesture-only views), call `Netmera.trackAction` to record the interaction manually.
|
|
@@ -617,7 +619,7 @@ When a tap is detected, Netmera resolves an identifier for the tapped component
|
|
|
617
619
|
1. **`accessibilityLabel`** — the preferred identifier; human-readable and stable.
|
|
618
620
|
2. **`testID`** — used when `accessibilityLabel` is absent.
|
|
619
621
|
3. **`placeholder`** — for `TextInput` components with no label or testID.
|
|
620
|
-
4. **Child text content** — the text of the first `<Text>` descendant
|
|
622
|
+
4. **Child text content** — the text of the first `<Text>` descendant.
|
|
621
623
|
|
|
622
624
|
If none of the above resolves to a non-empty string the tap is not recorded.
|
|
623
625
|
|
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import React, { useEffect, useRef, useState } from 'react';
|
|
8
|
-
import {
|
|
8
|
+
import { NativeModules, StyleSheet, View } from 'react-native';
|
|
9
|
+
import { netmeraRCTEventEmitter } from "./utils/RNNetmera.js";
|
|
9
10
|
import { useNavigationTracking } from "./autotracking/useNavigationTracking.js";
|
|
10
11
|
import { useTapTracking } from "./autotracking/useTapTracking.js";
|
|
11
12
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
12
|
-
const _emitter = new NativeEventEmitter(NativeModules.RNNetmeraRCTEventEmitter);
|
|
13
13
|
/**
|
|
14
14
|
* Wraps your app to enable automatic screen tracking and tap tracking.
|
|
15
15
|
* Place it outside your NavigationContainer (or Static Navigation component).
|
|
@@ -27,8 +27,10 @@ export function NetmeraAnalyticProvider({
|
|
|
27
27
|
}
|
|
28
28
|
appliedConfigRef.current = incomingConfig;
|
|
29
29
|
setConfig(incomingConfig);
|
|
30
|
-
|
|
31
|
-
|
|
30
|
+
if (__DEV__) {
|
|
31
|
+
console.log('[NMAutotrack] screen tracking', incomingConfig.isScreenFlowEnabled ? 'enabled' : 'disabled');
|
|
32
|
+
console.log('[NMAutotrack] input action tracking', incomingConfig.isInputActionEnabled ? `enabled ${incomingConfig.shouldCollectValues ? 'with' : 'without'} collection values` : 'disabled');
|
|
33
|
+
}
|
|
32
34
|
};
|
|
33
35
|
useEffect(() => {
|
|
34
36
|
NativeModules.RNNetmera?.getAutoTrackConfig?.()?.then(fetchedConfig => {
|
|
@@ -38,7 +40,7 @@ export function NetmeraAnalyticProvider({
|
|
|
38
40
|
})?.catch(_err => {});
|
|
39
41
|
}, []);
|
|
40
42
|
useEffect(() => {
|
|
41
|
-
const subscription =
|
|
43
|
+
const subscription = netmeraRCTEventEmitter.addListener('onAutoTrackConfigUpdate', updatedConfig => {
|
|
42
44
|
if (updatedConfig) {
|
|
43
45
|
applyConfig(updatedConfig);
|
|
44
46
|
}
|
|
@@ -58,8 +60,8 @@ export function NetmeraAnalyticProvider({
|
|
|
58
60
|
} = useTapTracking(inputActionEnabled, shouldCollectValues);
|
|
59
61
|
return /*#__PURE__*/_jsx(View, {
|
|
60
62
|
style: styles.container,
|
|
61
|
-
onTouchStart: onTouchStart,
|
|
62
|
-
onTouchEnd: onTouchEnd,
|
|
63
|
+
onTouchStart: inputActionEnabled ? onTouchStart : undefined,
|
|
64
|
+
onTouchEnd: inputActionEnabled ? onTouchEnd : undefined,
|
|
63
65
|
children: children
|
|
64
66
|
});
|
|
65
67
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useEffect","useRef","useState","
|
|
1
|
+
{"version":3,"names":["React","useEffect","useRef","useState","NativeModules","StyleSheet","View","netmeraRCTEventEmitter","useNavigationTracking","useTapTracking","jsx","_jsx","NetmeraAnalyticProvider","children","navigationRef","config","setConfig","appliedConfigRef","applyConfig","incomingConfig","currentConfig","current","isScreenFlowEnabled","isInputActionEnabled","shouldCollectValues","__DEV__","console","log","RNNetmera","getAutoTrackConfig","then","fetchedConfig","catch","_err","subscription","addListener","updatedConfig","remove","screenFlowEnabled","inputActionEnabled","onTouchStart","onTouchEnd","style","styles","container","undefined","create","flex"],"sourceRoot":"../../src","sources":["NetmeraAnalyticProvider.tsx"],"mappings":";;AAAA;AACA;AACA;;AAEA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAC1D,SAASC,aAAa,EAAEC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAC9D,SAASC,sBAAsB,QAAQ,sBAAmB;AAC1D,SAASC,qBAAqB,QAAQ,yCAAsC;AAC5E,SAASC,cAAc,QAAQ,kCAA+B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAiC/D;AACA;AACA;AACA;AACA,OAAO,SAASC,uBAAuBA,CAAC;EACtCC,QAAQ;EACRC;AAC4B,CAAC,EAAE;EAC/B,MAAM,CAACC,MAAM,EAAEC,SAAS,CAAC,GAAGb,QAAQ,CAAyB,IAAI,CAAC;EAClE,MAAMc,gBAAgB,GAAGf,MAAM,CAAyB,IAAI,CAAC;EAE7D,MAAMgB,WAAW,GAAIC,cAA+B,IAAK;IACvD,MAAMC,aAAa,GAAGH,gBAAgB,CAACI,OAAO;IAC9C,IACED,aAAa,EAAEE,mBAAmB,KAChCH,cAAc,CAACG,mBAAmB,IACpCF,aAAa,EAAEG,oBAAoB,KACjCJ,cAAc,CAACI,oBAAoB,IACrCH,aAAa,EAAEI,mBAAmB,KAAKL,cAAc,CAACK,mBAAmB,EACzE;MACA;IACF;IACAP,gBAAgB,CAACI,OAAO,GAAGF,cAAc;IACzCH,SAAS,CAACG,cAAc,CAAC;IACzB,IAAIM,OAAO,EAAE;MACXC,OAAO,CAACC,GAAG,CACT,+BAA+B,EAC/BR,cAAc,CAACG,mBAAmB,GAAG,SAAS,GAAG,UACnD,CAAC;MACDI,OAAO,CAACC,GAAG,CACT,qCAAqC,EACrCR,cAAc,CAACI,oBAAoB,GAC/B,WAAWJ,cAAc,CAACK,mBAAmB,GAAG,MAAM,GAAG,SAAS,oBAAoB,GACtF,UACN,CAAC;IACH;EACF,CAAC;EAEDvB,SAAS,CAAC,MAAM;IACdG,aAAa,CAACwB,SAAS,EAAEC,kBAAkB,GAAG,CAAC,EAC3CC,IAAI,CAAEC,aAAqC,IAAK;MAChD,IAAIA,aAAa,EAAE;QACjBb,WAAW,CAACa,aAAa,CAAC;MAC5B;IACF,CAAC,CAAC,EACAC,KAAK,CAAEC,IAAa,IAAK,CAAC,CAAC,CAAC;EAClC,CAAC,EAAE,EAAE,CAAC;EAENhC,SAAS,CAAC,MAAM;IACd,MAAMiC,YAAY,GAAG3B,sBAAsB,CAAC4B,WAAW,CACrD,yBAAyB,EACxBC,aAA8B,IAAK;MAClC,IAAIA,aAAa,EAAE;QACjBlB,WAAW,CAACkB,aAAa,CAAC;MAC5B;IACF,CACF,CAAC;IACD,OAAO,MAAMF,YAAY,CAACG,MAAM,CAAC,CAAC;EACpC,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMC,iBAAiB,GAAGvB,MAAM,EAAEO,mBAAmB,IAAI,KAAK;EAC9D,MAAMiB,kBAAkB,GAAGxB,MAAM,EAAEQ,oBAAoB,IAAI,KAAK;EAChE,MAAMC,mBAAmB,GAAGT,MAAM,EAAES,mBAAmB,IAAI,KAAK;;EAEhE;EACA;EACAhB,qBAAqB,CACnBM,aAAa,EACbwB,iBAAiB,IAAIC,kBAAkB,EACvCD,iBACF,CAAC;EACD,MAAM;IAAEE,YAAY;IAAEC;EAAW,CAAC,GAAGhC,cAAc,CACjD8B,kBAAkB,EAClBf,mBACF,CAAC;EAED,oBACEb,IAAA,CAACL,IAAI;IACHoC,KAAK,EAAEC,MAAM,CAACC,SAAU;IACxBJ,YAAY,EAAED,kBAAkB,GAAGC,YAAY,GAAGK,SAAU;IAC5DJ,UAAU,EAAEF,kBAAkB,GAAGE,UAAU,GAAGI,SAAU;IAAAhC,QAAA,EAEvDA;EAAQ,CACL,CAAC;AAEX;AAEA,MAAM8B,MAAM,GAAGtC,UAAU,CAACyC,MAAM,CAAC;EAC/BF,SAAS,EAAE;IAAEG,IAAI,EAAE;EAAE;AACvB,CAAC,CAAC","ignoreList":[]}
|
|
@@ -26,6 +26,7 @@ function isNavContainerRef(value) {
|
|
|
26
26
|
*/
|
|
27
27
|
export function useNavigationTracking(navigationRef, enabled, screenLogEnabled) {
|
|
28
28
|
const screenLogEnabledRef = useRef(screenLogEnabled);
|
|
29
|
+
const lastEmittedRouteRef = useRef(null);
|
|
29
30
|
useEffect(() => {
|
|
30
31
|
screenLogEnabledRef.current = screenLogEnabled;
|
|
31
32
|
}, [screenLogEnabled]);
|
|
@@ -37,7 +38,8 @@ export function useNavigationTracking(navigationRef, enabled, screenLogEnabled)
|
|
|
37
38
|
const handleChange = () => {
|
|
38
39
|
try {
|
|
39
40
|
const route = navRef.getCurrentRoute();
|
|
40
|
-
if (route?.name) {
|
|
41
|
+
if (route?.name && route.name !== lastEmittedRouteRef.current) {
|
|
42
|
+
lastEmittedRouteRef.current = route.name;
|
|
41
43
|
setCurrentScreen(route.name);
|
|
42
44
|
if (screenLogEnabledRef.current) {
|
|
43
45
|
RNNetmera.trackView(route.name);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useEffect","useRef","setCurrentScreen","RNNetmera","isNavContainerRef","value","addListener","getCurrentRoute","isReady","useNavigationTracking","navigationRef","enabled","screenLogEnabled","screenLogEnabledRef","current","navRef","handleChange","route","name","trackView","_","unsubState","unsubReady","undefined"],"sourceRoot":"../../../src","sources":["autotracking/useNavigationTracking.ts"],"mappings":";;AAAA;AACA;AACA;;AAEA,SAASA,SAAS,EAAEC,MAAM,QAAQ,OAAO;AAEzC,SAASC,gBAAgB,QAAQ,6BAA0B;AAC3D,SAASC,SAAS,QAAQ,uBAAoB;;AAE9C;AACA,SAASC,iBAAiBA,CAACC,KAAU,EAAW;EAC9C,OACEA,KAAK,IAAI,IAAI,IACb,OAAOA,KAAK,CAACC,WAAW,KAAK,UAAU,IACvC,OAAOD,KAAK,CAACE,eAAe,KAAK,UAAU,IAC3C,OAAOF,KAAK,CAACG,OAAO,KAAK,UAAU;AAEvC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,qBAAqBA,CACnCC,aAA+C,EAC/CC,OAAgB,EAChBC,gBAAyB,EACnB;EACN,MAAMC,mBAAmB,GAAGZ,MAAM,CAACW,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"names":["useEffect","useRef","setCurrentScreen","RNNetmera","isNavContainerRef","value","addListener","getCurrentRoute","isReady","useNavigationTracking","navigationRef","enabled","screenLogEnabled","screenLogEnabledRef","lastEmittedRouteRef","current","navRef","handleChange","route","name","trackView","_","unsubState","unsubReady","undefined"],"sourceRoot":"../../../src","sources":["autotracking/useNavigationTracking.ts"],"mappings":";;AAAA;AACA;AACA;;AAEA,SAASA,SAAS,EAAEC,MAAM,QAAQ,OAAO;AAEzC,SAASC,gBAAgB,QAAQ,6BAA0B;AAC3D,SAASC,SAAS,QAAQ,uBAAoB;;AAE9C;AACA,SAASC,iBAAiBA,CAACC,KAAU,EAAW;EAC9C,OACEA,KAAK,IAAI,IAAI,IACb,OAAOA,KAAK,CAACC,WAAW,KAAK,UAAU,IACvC,OAAOD,KAAK,CAACE,eAAe,KAAK,UAAU,IAC3C,OAAOF,KAAK,CAACG,OAAO,KAAK,UAAU;AAEvC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,qBAAqBA,CACnCC,aAA+C,EAC/CC,OAAgB,EAChBC,gBAAyB,EACnB;EACN,MAAMC,mBAAmB,GAAGZ,MAAM,CAACW,gBAAgB,CAAC;EACpD,MAAME,mBAAmB,GAAGb,MAAM,CAAgB,IAAI,CAAC;EAEvDD,SAAS,CAAC,MAAM;IACda,mBAAmB,CAACE,OAAO,GAAGH,gBAAgB;EAChD,CAAC,EAAE,CAACA,gBAAgB,CAAC,CAAC;EAEtBZ,SAAS,CAAC,MAAM;IACd,IAAI,CAACW,OAAO,IAAI,CAACP,iBAAiB,CAACM,aAAa,EAAEK,OAAO,CAAC,EAAE;MAC1D;IACF;IAEA,MAAMC,MAAM,GAAGN,aAAa,CAAEK,OAAO;IAErC,MAAME,YAAY,GAAGA,CAAA,KAAM;MACzB,IAAI;QACF,MAAMC,KAAK,GAAGF,MAAM,CAACT,eAAe,CAAC,CAAC;QACtC,IAAIW,KAAK,EAAEC,IAAI,IAAID,KAAK,CAACC,IAAI,KAAKL,mBAAmB,CAACC,OAAO,EAAE;UAC7DD,mBAAmB,CAACC,OAAO,GAAGG,KAAK,CAACC,IAAI;UACxCjB,gBAAgB,CAACgB,KAAK,CAACC,IAAI,CAAC;UAC5B,IAAIN,mBAAmB,CAACE,OAAO,EAAE;YAC/BZ,SAAS,CAACiB,SAAS,CAACF,KAAK,CAACC,IAAI,CAAC;UACjC;QACF;MACF,CAAC,CAAC,OAAOE,CAAC,EAAE,CAAC;IACf,CAAC;IAED,MAAMC,UAAU,GAAGN,MAAM,CAACV,WAAW,CAAC,OAAO,EAAEW,YAAY,CAAC;;IAE5D;IACA;IACA,IAAIM,UAAoC;IACxC,IAAIP,MAAM,CAACR,OAAO,CAAC,CAAC,EAAE;MACpBS,YAAY,CAAC,CAAC;IAChB,CAAC,MAAM;MACLM,UAAU,GAAGP,MAAM,CAACV,WAAW,CAAC,OAAO,EAAE,MAAM;QAC7CW,YAAY,CAAC,CAAC;QACdM,UAAU,GAAG,CAAC;QACdA,UAAU,GAAGC,SAAS;MACxB,CAAC,CAAC;IACJ;IAEA,OAAO,MAAM;MACXF,UAAU,GAAG,CAAC;MACdC,UAAU,GAAG,CAAC;IAChB,CAAC;EACH,CAAC,EAAE,CAACZ,OAAO,EAAED,aAAa,CAAC,CAAC;AAC9B","ignoreList":[]}
|
|
@@ -27,7 +27,7 @@ function isSwitch(props) {
|
|
|
27
27
|
// Tapping them only opens the picker UI — the real select event fires separately.
|
|
28
28
|
function isInsideSelectionControl(fiber) {
|
|
29
29
|
let node = fiber?.return;
|
|
30
|
-
for (let d = 0; d <
|
|
30
|
+
for (let d = 0; d < 3 && node; d++, node = node.return) {
|
|
31
31
|
if (node?.memoizedProps?.onSelect != null) {
|
|
32
32
|
return true;
|
|
33
33
|
}
|
|
@@ -190,7 +190,8 @@ export function useTapTracking(enabled, shouldCollectValues) {
|
|
|
190
190
|
touchStartRef.current = {
|
|
191
191
|
x: e.nativeEvent.pageX,
|
|
192
192
|
y: e.nativeEvent.pageY,
|
|
193
|
-
switchValue
|
|
193
|
+
switchValue,
|
|
194
|
+
isSwitch: switchValue !== undefined
|
|
194
195
|
};
|
|
195
196
|
}, []);
|
|
196
197
|
const onTouchEnd = useCallback(e => {
|
|
@@ -203,7 +204,8 @@ export function useTapTracking(enabled, shouldCollectValues) {
|
|
|
203
204
|
}
|
|
204
205
|
const dx = Math.abs(e.nativeEvent.pageX - start.x);
|
|
205
206
|
const dy = Math.abs(e.nativeEvent.pageY - start.y);
|
|
206
|
-
|
|
207
|
+
const isScrollGesture = dx > TAP_THRESHOLD || dy > TAP_THRESHOLD;
|
|
208
|
+
if (isScrollGesture && !start.isSwitch) {
|
|
207
209
|
return;
|
|
208
210
|
}
|
|
209
211
|
try {
|
|
@@ -265,7 +267,7 @@ export function useTapTracking(enabled, shouldCollectValues) {
|
|
|
265
267
|
newValue = preTapValue !== undefined ? !preTapValue : !interactiveNode.memoizedProps.value;
|
|
266
268
|
}
|
|
267
269
|
switchLastLoggedRef.current.set(identifier, newValue);
|
|
268
|
-
const switchPath = buildPath(screen, listType, identifier, indexSuffix, newValue);
|
|
270
|
+
const switchPath = buildPath(screen, listType, identifier, indexSuffix, shouldCollectValuesRef.current ? newValue : undefined);
|
|
269
271
|
RNNetmera.trackAction(switchPath);
|
|
270
272
|
} else {
|
|
271
273
|
const tapPath = buildPath(screen, listType, identifier, indexSuffix);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useEffect","useRef","getCurrentScreen","RNNetmera","MAX_FIBER_DEPTH","MAX_TEXT_DEPTH","TAP_THRESHOLD","isInteractive","props","onPress","onClick","onValueChange","isSwitch","value","isInsideSelectionControl","fiber","node","return","d","memoizedProps","onSelect","textFromChildren","children","depth","undefined","t","trim","length","String","Array","isArray","child","resolveIdentifier","accessibilityLabel","testID","placeholder","resolveListIndex","startFiber","p","index","cellKey","onUnmount","flatIndex","stateNode","sections","up","i","upProps","endsWith","idx","si","count","data","type","sectionIndex","itemIndex","buildPath","screen","listType","identifier","indexSuffix","switchValue","screenName","base","useTapTracking","enabled","shouldCollectValues","enabledRef","shouldCollectValuesRef","touchStartRef","lastScreenRef","switchLastLoggedRef","Map","current","clear","onTouchStart","e","_targetInst","_","x","nativeEvent","pageX","y","pageY","onTouchEnd","start","dx","Math","abs","dy","interactiveNode","identifierNode","isSwitchNode","listIndex","lastLogged","get","newValue","preTapValue","set","switchPath","trackAction","tapPath"],"sourceRoot":"../../../src","sources":["autotracking/useTapTracking.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"names":["useCallback","useEffect","useRef","getCurrentScreen","RNNetmera","MAX_FIBER_DEPTH","MAX_TEXT_DEPTH","TAP_THRESHOLD","isInteractive","props","onPress","onClick","onValueChange","isSwitch","value","isInsideSelectionControl","fiber","node","return","d","memoizedProps","onSelect","textFromChildren","children","depth","undefined","t","trim","length","String","Array","isArray","child","resolveIdentifier","accessibilityLabel","testID","placeholder","resolveListIndex","startFiber","p","index","cellKey","onUnmount","flatIndex","stateNode","sections","up","i","upProps","endsWith","idx","si","count","data","type","sectionIndex","itemIndex","buildPath","screen","listType","identifier","indexSuffix","switchValue","screenName","base","useTapTracking","enabled","shouldCollectValues","enabledRef","shouldCollectValuesRef","touchStartRef","lastScreenRef","switchLastLoggedRef","Map","current","clear","onTouchStart","e","_targetInst","_","x","nativeEvent","pageX","y","pageY","onTouchEnd","start","dx","Math","abs","dy","isScrollGesture","interactiveNode","identifierNode","isSwitchNode","listIndex","lastLogged","get","newValue","preTapValue","set","switchPath","trackAction","tapPath"],"sourceRoot":"../../../src","sources":["autotracking/useTapTracking.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NetmeraAnalyticProvider.d.ts","sourceRoot":"","sources":["../../../src/NetmeraAnalyticProvider.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAsC,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"NetmeraAnalyticProvider.d.ts","sourceRoot":"","sources":["../../../src/NetmeraAnalyticProvider.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAM3D,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B;;;;;;;;;;;;;;;;;;;OAmBG;IACH,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;CACtC;AAQD;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,EACtC,QAAQ,EACR,aAAa,GACd,EAAE,4BAA4B,2CA8E9B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useNavigationTracking.d.ts","sourceRoot":"","sources":["../../../../src/autotracking/useNavigationTracking.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAc/B;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,SAAS,EAC/C,OAAO,EAAE,OAAO,EAChB,gBAAgB,EAAE,OAAO,GACxB,IAAI,
|
|
1
|
+
{"version":3,"file":"useNavigationTracking.d.ts","sourceRoot":"","sources":["../../../../src/autotracking/useNavigationTracking.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAc/B;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,SAAS,EAC/C,OAAO,EAAE,OAAO,EAChB,gBAAgB,EAAE,OAAO,GACxB,IAAI,CAgDN"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTapTracking.d.ts","sourceRoot":"","sources":["../../../../src/autotracking/useTapTracking.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AA4K1D,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,OAAO;
|
|
1
|
+
{"version":3,"file":"useTapTracking.d.ts","sourceRoot":"","sources":["../../../../src/autotracking/useTapTracking.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AA4K1D,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,OAAO;sBA8BtC,qBAAqB;oBAuBvB,qBAAqB;EA8GzD"}
|
package/package.json
CHANGED
|
@@ -3,17 +3,11 @@
|
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
5
|
import React, { useEffect, useRef, useState } from 'react';
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
NativeModules,
|
|
9
|
-
StyleSheet,
|
|
10
|
-
View,
|
|
11
|
-
} from 'react-native';
|
|
6
|
+
import { NativeModules, StyleSheet, View } from 'react-native';
|
|
7
|
+
import { netmeraRCTEventEmitter } from './utils/RNNetmera';
|
|
12
8
|
import { useNavigationTracking } from './autotracking/useNavigationTracking';
|
|
13
9
|
import { useTapTracking } from './autotracking/useTapTracking';
|
|
14
10
|
|
|
15
|
-
const _emitter = new NativeEventEmitter(NativeModules.RNNetmeraRCTEventEmitter);
|
|
16
|
-
|
|
17
11
|
export interface NetmeraAnalyticProviderProps {
|
|
18
12
|
children: React.ReactNode;
|
|
19
13
|
/**
|
|
@@ -69,16 +63,18 @@ export function NetmeraAnalyticProvider({
|
|
|
69
63
|
}
|
|
70
64
|
appliedConfigRef.current = incomingConfig;
|
|
71
65
|
setConfig(incomingConfig);
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
66
|
+
if (__DEV__) {
|
|
67
|
+
console.log(
|
|
68
|
+
'[NMAutotrack] screen tracking',
|
|
69
|
+
incomingConfig.isScreenFlowEnabled ? 'enabled' : 'disabled'
|
|
70
|
+
);
|
|
71
|
+
console.log(
|
|
72
|
+
'[NMAutotrack] input action tracking',
|
|
73
|
+
incomingConfig.isInputActionEnabled
|
|
74
|
+
? `enabled ${incomingConfig.shouldCollectValues ? 'with' : 'without'} collection values`
|
|
75
|
+
: 'disabled'
|
|
76
|
+
);
|
|
77
|
+
}
|
|
82
78
|
};
|
|
83
79
|
|
|
84
80
|
useEffect(() => {
|
|
@@ -92,7 +88,7 @@ export function NetmeraAnalyticProvider({
|
|
|
92
88
|
}, []);
|
|
93
89
|
|
|
94
90
|
useEffect(() => {
|
|
95
|
-
const subscription =
|
|
91
|
+
const subscription = netmeraRCTEventEmitter.addListener(
|
|
96
92
|
'onAutoTrackConfigUpdate',
|
|
97
93
|
(updatedConfig: AutoTrackConfig) => {
|
|
98
94
|
if (updatedConfig) {
|
|
@@ -122,8 +118,8 @@ export function NetmeraAnalyticProvider({
|
|
|
122
118
|
return (
|
|
123
119
|
<View
|
|
124
120
|
style={styles.container}
|
|
125
|
-
onTouchStart={onTouchStart}
|
|
126
|
-
onTouchEnd={onTouchEnd}
|
|
121
|
+
onTouchStart={inputActionEnabled ? onTouchStart : undefined}
|
|
122
|
+
onTouchEnd={inputActionEnabled ? onTouchEnd : undefined}
|
|
127
123
|
>
|
|
128
124
|
{children}
|
|
129
125
|
</View>
|
|
@@ -34,6 +34,7 @@ export function useNavigationTracking(
|
|
|
34
34
|
screenLogEnabled: boolean
|
|
35
35
|
): void {
|
|
36
36
|
const screenLogEnabledRef = useRef(screenLogEnabled);
|
|
37
|
+
const lastEmittedRouteRef = useRef<string | null>(null);
|
|
37
38
|
|
|
38
39
|
useEffect(() => {
|
|
39
40
|
screenLogEnabledRef.current = screenLogEnabled;
|
|
@@ -49,7 +50,8 @@ export function useNavigationTracking(
|
|
|
49
50
|
const handleChange = () => {
|
|
50
51
|
try {
|
|
51
52
|
const route = navRef.getCurrentRoute();
|
|
52
|
-
if (route?.name) {
|
|
53
|
+
if (route?.name && route.name !== lastEmittedRouteRef.current) {
|
|
54
|
+
lastEmittedRouteRef.current = route.name;
|
|
53
55
|
setCurrentScreen(route.name);
|
|
54
56
|
if (screenLogEnabledRef.current) {
|
|
55
57
|
RNNetmera.trackView(route.name);
|
|
@@ -31,7 +31,7 @@ function isSwitch(props: any): boolean {
|
|
|
31
31
|
// Tapping them only opens the picker UI — the real select event fires separately.
|
|
32
32
|
function isInsideSelectionControl(fiber: any): boolean {
|
|
33
33
|
let node: any = fiber?.return;
|
|
34
|
-
for (let d = 0; d <
|
|
34
|
+
for (let d = 0; d < 3 && node; d++, node = node.return) {
|
|
35
35
|
if (node?.memoizedProps?.onSelect != null) {
|
|
36
36
|
return true;
|
|
37
37
|
}
|
|
@@ -182,6 +182,7 @@ export function useTapTracking(enabled: boolean, shouldCollectValues: boolean) {
|
|
|
182
182
|
x: number;
|
|
183
183
|
y: number;
|
|
184
184
|
switchValue?: boolean;
|
|
185
|
+
isSwitch?: boolean;
|
|
185
186
|
} | null>(null);
|
|
186
187
|
const lastScreenRef = useRef<string | null | undefined>(undefined);
|
|
187
188
|
|
|
@@ -223,6 +224,7 @@ export function useTapTracking(enabled: boolean, shouldCollectValues: boolean) {
|
|
|
223
224
|
x: e.nativeEvent.pageX,
|
|
224
225
|
y: e.nativeEvent.pageY,
|
|
225
226
|
switchValue,
|
|
227
|
+
isSwitch: switchValue !== undefined,
|
|
226
228
|
};
|
|
227
229
|
}, []);
|
|
228
230
|
|
|
@@ -236,7 +238,8 @@ export function useTapTracking(enabled: boolean, shouldCollectValues: boolean) {
|
|
|
236
238
|
}
|
|
237
239
|
const dx = Math.abs(e.nativeEvent.pageX - start.x);
|
|
238
240
|
const dy = Math.abs(e.nativeEvent.pageY - start.y);
|
|
239
|
-
|
|
241
|
+
const isScrollGesture = dx > TAP_THRESHOLD || dy > TAP_THRESHOLD;
|
|
242
|
+
if (isScrollGesture && !start.isSwitch) {
|
|
240
243
|
return;
|
|
241
244
|
}
|
|
242
245
|
|
|
@@ -322,7 +325,7 @@ export function useTapTracking(enabled: boolean, shouldCollectValues: boolean) {
|
|
|
322
325
|
listType,
|
|
323
326
|
identifier,
|
|
324
327
|
indexSuffix,
|
|
325
|
-
newValue
|
|
328
|
+
shouldCollectValuesRef.current ? newValue : undefined
|
|
326
329
|
);
|
|
327
330
|
RNNetmera.trackAction(switchPath);
|
|
328
331
|
} else {
|