forked from MetaMask/metamask-mobile
-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
105 lines (92 loc) · 4.53 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
import './shim.js';
// Needed to polyfill random number generation.
import 'react-native-get-random-values';
import '@walletconnect/react-native-compat';
import 'react-native-gesture-handler';
import 'react-native-url-polyfill/auto';
import crypto from 'crypto'; // eslint-disable-line import/no-nodejs-modules, no-unused-vars
require('react-native-browser-polyfill'); // eslint-disable-line import/no-commonjs
import * as Sentry from '@sentry/react-native'; // eslint-disable-line import/no-namespace
import { setupSentry } from './app/util/sentry/utils';
setupSentry();
import { AppRegistry, LogBox, ErrorUtils } from 'react-native';
import Root from './app/components/Views/Root';
import { name } from './app.json';
import { isE2E } from './app/util/test/utils.js';
import { Performance } from './app/core/Performance';
import { handleCustomError, setReactNativeDefaultHandler } from './app/core/ErrorHandler';
Performance.setupPerformanceObservers();
LogBox.ignoreAllLogs();
// List of warnings that we're ignoring
LogBox.ignoreLogs([
'{}',
// Uncomment the below lines (21 and 22) to run browser-tests.spec.js in debug mode
// in e2e tests until issue https://github.com/MetaMask/metamask-mobile/issues/1395 is resolved
//"Error in RPC response",
// 'User rejected account access',
"Can't perform a React state update",
'Error evaluating injectedJavaScript',
'createErrorFromErrorData',
'Encountered an error loading page',
'Error handling userAuthorizedUpdate',
'MaxListenersExceededWarning',
'Expected delta of 0 for the fields',
'The network request was invalid',
'Require cycle',
'ListView is deprecated',
'WebView has been extracted from react-native core',
'Exception was previously raised by watchStore',
'StateUpdateController',
'this.web3.eth',
'collectibles.map',
'Warning: bind(): You are binding a component method to the component',
'AssetsDectionController._callee',
'Accessing view manager configs directly off',
'Function components cannot be given refs.',
'Task orphaned for request',
'Module RNOS requires',
'use RCT_EXPORT_MODULE',
'Setting a timer for a long period of time',
'Did not receive response to shouldStartLoad in time',
'startLoadWithResult invoked with invalid',
'RCTBridge required dispatch_sync',
'Remote debugger is in a background tab',
"Can't call setState (or forceUpdate) on an unmounted component",
'No stops in gradient',
"Cannot read property 'hash' of null",
'componentWillUpdate',
'componentWillReceiveProps',
'getNode()',
'Non-serializable values were found in the navigation state.', // We are not saving navigation state so we can ignore this
'new NativeEventEmitter', // New libraries have not yet implemented native methods to handle warnings (https://stackoverflow.com/questions/69538962/new-nativeeventemitter-was-called-with-a-non-null-argument-without-the-requir)
'EventEmitter.removeListener',
'Module TcpSockets requires main queue setup',
'Module RCTSearchApiManager requires main queue setup',
'PushNotificationIOS has been extracted', // RNC PushNotification iOS issue - https://github.com/react-native-push-notification/ios/issues/43
"ViewPropTypes will be removed from React Native, along with all other PropTypes. We recommend that you migrate away from PropTypes and switch to a type system like TypeScript. If you need to continue using ViewPropTypes, migrate to the 'deprecated-react-native-prop-types' package.",
'ReactImageView: Image source "null"',
'Warning: componentWillReceiveProps has been renamed',
]);
const IGNORE_BOXLOGS_DEVELOPMENT = process.env.IGNORE_BOXLOGS_DEVELOPMENT;
// Ignore box logs, useful for QA testing in development builds
if (IGNORE_BOXLOGS_DEVELOPMENT === 'true') {
LogBox.ignoreAllLogs();
}
/* Uncomment and comment regular registration below */
// import Storybook from './.storybook';
// AppRegistry.registerComponent(name, () => Storybook);
/**
* Application entry point responsible for registering root component
*/
AppRegistry.registerComponent(name, () =>
// Disable Sentry for E2E tests
isE2E ? Root : Sentry.wrap(Root),
);
function setupGlobalErrorHandler() {
const reactNativeDefaultHandler = global.ErrorUtils.getGlobalHandler();
// set the base handler to the react native ExceptionsManager.handleException(), please refer to setupErrorHandling.js under react-native/Libraries/Core/ for details.
setReactNativeDefaultHandler(reactNativeDefaultHandler);
// override the global handler to provide custom error handling
global.ErrorUtils.setGlobalHandler(handleCustomError);
}
setupGlobalErrorHandler();