33var path = require ( "path" ) ,
44 fs = require ( "fs" ) ,
55 dir = path . resolve ( __dirname , ".." ) ;
6+ var userPackageJson = require ( "../../package.json" ) ;
7+ var ignoreScreen = false ;
8+ if ( userPackageJson && userPackageJson [ 'sensorsData' ] && userPackageJson [ 'sensorsData' ] [ 'ignoreScreen' ] ) {
9+ ignoreScreen = true ;
10+ }
611var reactNavigationPath = dir + '/react-navigation' ,
712 reactNavigationPath3X = dir + '/@react-navigation/native/src' ,
813 reactNavigationPath4X = dir + '/@react-navigation/native/lib/module' ,
@@ -135,11 +140,18 @@ var sensorsdataNavigation5HookCode = `
135140 saProperties.sensorsdataurl = params.sensorsdataurl;
136141 }
137142 if(params.sensorsdataparams){
138- saProperties.sensorsdataparams = params.sensorsdataparams;
143+ saProperties.sensorsdataparams = JSON.parse(JSON.stringify( params.sensorsdataparams)) ;
139144 }
140145 } else {
141146 saProperties.sensorsdataurl = screenName;
142147 }
148+ if(${ ignoreScreen } ){
149+ if(saProperties.sensorsdataparams){
150+ saProperties.sensorsdataparams.SAIgnoreViewScreen = true;
151+ }else{
152+ saProperties.sensorsdataparams = {SAIgnoreViewScreen : true};
153+ }
154+ }
143155 var dataModule = ReactNative?.NativeModules?.RNSensorsDataModule;
144156 dataModule?.trackViewScreen && dataModule.trackViewScreen(saProperties);
145157 }
@@ -194,11 +206,18 @@ var sensorsDataHookReduxCreateCode =
194206 saProperties.sensorsdataurl = params.sensorsdataurl;
195207 }
196208 if(params.sensorsdataparams){
197- saProperties.sensorsdataparams = params.sensorsdataparams;
209+ saProperties.sensorsdataparams = JSON.parse(JSON.stringify( params.sensorsdataparams)) ;
198210 }
199211 } else {
200212 saProperties.sensorsdataurl = screenName;
201213 }
214+ if(${ ignoreScreen } ){
215+ if(saProperties.sensorsdataparams){
216+ saProperties.sensorsdataparams.SAIgnoreViewScreen = true;
217+ }else{
218+ saProperties.sensorsdataparams = {SAIgnoreViewScreen : true};
219+ }
220+ }
202221 var dataModule = ReactNative?.NativeModules?.RNSensorsDataModule;
203222 dataModule?.trackViewScreen && dataModule.trackViewScreen(saProperties);
204223 }
@@ -267,11 +286,18 @@ var sensorsDataHookReduxMiddleCode = `
267286 saProperties.sensorsdataurl = params.sensorsdataurl;
268287 }
269288 if(params.sensorsdataparams){
270- saProperties.sensorsdataparams = params.sensorsdataparams;
289+ saProperties.sensorsdataparams = JSON.parse(JSON.stringify( params.sensorsdataparams)) ;
271290 }
272291 } else {
273292 saProperties.sensorsdataurl = screenName;
274293 }
294+ if(${ ignoreScreen } ){
295+ if(saProperties.sensorsdataparams){
296+ saProperties.sensorsdataparams.SAIgnoreViewScreen = true;
297+ }else{
298+ saProperties.sensorsdataparams = {SAIgnoreViewScreen : true};
299+ }
300+ }
275301 var dataModule = ReactNative?.NativeModules?.RNSensorsDataModule;
276302 dataModule?.trackViewScreen && dataModule.trackViewScreen(saProperties);
277303 }
@@ -865,7 +891,7 @@ navigationString3 = function (
865891 saProperties.sensorsdataurl = route.params.sensorsdataurl;
866892 }
867893 if(route.params.sensorsdataparams){
868- saProperties.sensorsdataparams = route.params.sensorsdataparams;
894+ saProperties.sensorsdataparams = JSON.parse(JSON.stringify( route.params.sensorsdataparams)) ;
869895 }
870896 } else {
871897 saProperties = {sensorsdataurl:route.routeName};
@@ -898,6 +924,13 @@ navigationString3 = function (
898924
899925 script = `
900926 ${ script } var params = $$$getActivePageName$$$(${ currentStateVarName } );
927+ if(${ ignoreScreen } ){
928+ if(params.sensorsdataparams){
929+ params.sensorsdataparams.SAIgnoreViewScreen = true;
930+ }else{
931+ params.sensorsdataparams = {SAIgnoreViewScreen : true};
932+ }
933+ }
901934 if (require('react-native').Platform.OS === 'android') {
902935 if (${ prevStateVarName } ){
903936 var prevParams = $$$getActivePageName$$$(${ prevStateVarName } );
@@ -933,6 +966,13 @@ navigationEventString = function () {
933966 saProperties.sensorsdataurl = payload.state.routeName;
934967 }
935968 if(type == 'didFocus') {
969+ if(${ ignoreScreen } ){
970+ if(saProperties.sensorsdataparams){
971+ saProperties.sensorsdataparams.SAIgnoreViewScreen = true;
972+ }else{
973+ saProperties.sensorsdataparams = {SAIgnoreViewScreen : true};
974+ }
975+ }
936976 var ReactNative = require('react-native');
937977 var dataModule = ReactNative.NativeModules.RNSensorsDataModule;
938978 dataModule && dataModule.trackViewScreen && dataModule.trackViewScreen(saProperties);
@@ -957,7 +997,7 @@ navigationString = function (currentStateVarName, actionName) {
957997 saProperties.sensorsdataurl = route.params.sensorsdataurl;
958998 }
959999 if(route.params.sensorsdataparams){
960- saProperties.sensorsdataparams = route.params.sensorsdataparams;
1000+ saProperties.sensorsdataparams = JSON.parse(JSON.stringify( route.params.sensorsdataparams)) ;
9611001 }
9621002 } else {
9631003 saProperties.sensorsdataurl = route.routeName;
@@ -968,14 +1008,21 @@ navigationString = function (currentStateVarName, actionName) {
9681008
9691009 if ( actionName ) {
9701010 script = `${ script }
971- var type = ${ actionName } .type;
972- if(type == 'Navigation/SET_PARAMS' || type == 'Navigation/COMPLETE_TRANSITION') {
973- return;
974- }
975- `;
1011+ var type = ${ actionName } .type;
1012+ if(type == 'Navigation/SET_PARAMS' || type == 'Navigation/COMPLETE_TRANSITION') {
1013+ return;
1014+ }
1015+ `;
9761016 }
9771017
9781018 script = `${ script } var params = $$$getActivePageName$$$(${ currentStateVarName } );
1019+ if(${ ignoreScreen } ){
1020+ if(params.sensorsdataparams){
1021+ params.sensorsdataparams.SAIgnoreViewScreen = true;
1022+ }else{
1023+ params.sensorsdataparams = {SAIgnoreViewScreen : true};
1024+ }
1025+ }
9791026 if (require('react-native').Platform.OS === 'android') {
9801027 var ReactNative = require('react-native');
9811028 var dataModule = ReactNative.NativeModules.RNSensorsDataModule;
@@ -1135,14 +1182,14 @@ injectReactNavigation = function (dirPath, type, reset = false) {
11351182} ;
11361183
11371184// hook pageview 文件
1138- sensorsdataHookViewRN = function ( ) {
1185+ sensorsdataHookNavigationRN = function ( ) {
11391186 injectReactNavigation ( reactNavigationPath , 1 ) ;
11401187 injectReactNavigation ( reactNavigationPath3X , 2 ) ;
11411188 injectReactNavigation ( reactNavigationPath4X , 2 ) ;
11421189} ;
11431190
11441191// 恢复被 hook 的 pageview 文件
1145- sensorsdataResetViewRN = function ( ) {
1192+ sensorsdataResetNavigationRN = function ( ) {
11461193 injectReactNavigation ( reactNavigationPath , 1 , true ) ;
11471194 injectReactNavigation ( reactNavigationPath3X , 2 , true ) ;
11481195 injectReactNavigation ( reactNavigationPath4X , 2 , true ) ;
@@ -1151,7 +1198,7 @@ sensorsdataResetViewRN = function () {
11511198// 全部 hook 文件恢复
11521199resetAllSensorsdataHookRN = function ( ) {
11531200 sensorsdataResetRN ( RNClickFilePath ) ;
1154- sensorsdataResetViewRN ( ) ;
1201+ sensorsdataResetNavigationRN ( ) ;
11551202 sensorsdataHookClickableRN ( true ) ;
11561203 // 2 期
11571204 sensorsdataHookSliderRN ( true ) ;
@@ -1167,20 +1214,40 @@ resetAllSensorsdataHookRN = function () {
11671214} ;
11681215// 全部 hook 文件
11691216allSensorsdataHookRN = function ( ) {
1170- sensorsdataHookClickRN ( RNClickFilePath ) ;
1171- sensorsdataHookViewRN ( ) ;
1172- sensorsdataHookClickableRN ( ) ;
1173- // 2 期
1174- sensorsdataHookSliderRN ( ) ;
1175- sensorsdataHookSwitchRN ( ) ;
1176- sensorsdataHookSegmentedControlRN ( ) ;
1177- sensorsdataHookGestureButtonsRN ( false )
1178- // 3 期
1179- sensorsdataHookPressabilityClickRN ( RNClickPressabilityFilePath ) ;
1180- sensorsdataHookNavigation5 ( ) ;
1181- // react-navigation-redux-helper
1182- sensorsdataHookNavigationReduxCreate ( ) ;
1183- sensorsdataHookNavigationReduxMiddle ( reactNavigationReduxMiddlePath ) ;
1217+ if ( ignoreScreen ) {
1218+ console . log ( 'ignore screen' ) ;
1219+ }
1220+ if ( userPackageJson && userPackageJson [ 'sensorsData' ] ) {
1221+ var sensorsData = userPackageJson [ 'sensorsData' ] ;
1222+ if ( sensorsData [ 'ignoreClick' ] ) {
1223+ console . log ( 'ignore click' ) ;
1224+ } else {
1225+ sensorsdataHookClickRN ( RNClickFilePath ) ;
1226+ sensorsdataHookClickableRN ( ) ;
1227+ // 2 期
1228+ sensorsdataHookSliderRN ( ) ;
1229+ sensorsdataHookSwitchRN ( ) ;
1230+ sensorsdataHookSegmentedControlRN ( ) ;
1231+ sensorsdataHookGestureButtonsRN ( false )
1232+ // 3 期
1233+ sensorsdataHookPressabilityClickRN ( RNClickPressabilityFilePath ) ;
1234+ }
1235+ } else {
1236+ sensorsdataHookClickRN ( RNClickFilePath ) ;
1237+ sensorsdataHookClickableRN ( ) ;
1238+ // 2 期
1239+ sensorsdataHookSliderRN ( ) ;
1240+ sensorsdataHookSwitchRN ( ) ;
1241+ sensorsdataHookSegmentedControlRN ( ) ;
1242+ sensorsdataHookGestureButtonsRN ( false )
1243+ // 3 期
1244+ sensorsdataHookPressabilityClickRN ( RNClickPressabilityFilePath ) ;
1245+ }
1246+ sensorsdataHookNavigationRN ( ) ;
1247+ sensorsdataHookNavigation5 ( ) ;
1248+ // react-navigation-redux-helper
1249+ sensorsdataHookNavigationReduxCreate ( ) ;
1250+ sensorsdataHookNavigationReduxMiddle ( reactNavigationReduxMiddlePath ) ;
11841251} ;
11851252// 命令行
11861253switch ( process . argv [ 2 ] ) {
0 commit comments