2020-10-16 17:26:19 +02:00
|
|
|
// Note about the application structure:
|
|
|
|
// - The user interface and its state is managed by React/Redux.
|
|
|
|
// - Persistent storage to SQLite and Web API is handled outside of React/Redux using regular JavaScript (no middleware, no thunk, etc.).
|
|
|
|
// - Communication from React to SQLite is done by calling model methods (note.save, etc.)
|
|
|
|
// - Communication from SQLite to Redux is done via dispatcher.
|
2017-11-16 19:55:01 +02:00
|
|
|
|
2020-10-16 17:26:19 +02:00
|
|
|
// So there's basically still a one way flux: React => SQLite => Redux => React
|
|
|
|
|
2024-03-06 12:03:11 +02:00
|
|
|
import './utils/polyfills';
|
2021-11-25 01:03:03 +02:00
|
|
|
|
2020-10-16 17:26:19 +02:00
|
|
|
import { LogBox, AppRegistry } from 'react-native';
|
2020-12-30 12:54:00 +02:00
|
|
|
const Root = require('./root').default;
|
2020-10-16 17:26:19 +02:00
|
|
|
|
|
|
|
// Seems JavaScript developers love adding warnings everywhere, even when these warnings can't be fixed
|
|
|
|
// or don't really matter. Because we want important warnings to actually be fixed, we disable
|
|
|
|
// all the useless ones, that way we aren't flooded by them when the app starts, and when there's
|
|
|
|
// one we know it should be fixed (or added here).
|
|
|
|
LogBox.ignoreLogs([
|
|
|
|
// Happens for example in react-native-side-menu, but the package is discontinued
|
|
|
|
// and we should just switch to a different one (or do it without a package).
|
|
|
|
'Animated: `useNativeDriver` was not specified. This is a required option and must be explicitly set to `true` or `false`',
|
|
|
|
|
|
|
|
// What's the point of printing warnings for non-user code. Of all the things that
|
|
|
|
// are broken and unreliable in React Native, require cycles are just a minor annoyance
|
|
|
|
// which shouldn't forever print warnings.
|
|
|
|
// To make it more fun, they don't normalise paths so forward slashes and backward slashes
|
|
|
|
// need to be handled to support Windows.
|
|
|
|
'Require cycle: node_modules/react-native-',
|
|
|
|
'Require cycle: node_modules\\react-native-',
|
|
|
|
'Require cycle: node_modules/rn-fetch-blob',
|
|
|
|
'Require cycle: node_modules\\rn-fetch-blob',
|
|
|
|
'Require cycle: node_modules/aws-sdk',
|
|
|
|
'Require cycle: node_modules\\aws-sdk',
|
2020-11-05 18:58:23 +02:00
|
|
|
'Require cycle: ../lib/node_modules/aws-sdk',
|
|
|
|
'Require cycle: ..\\lib\\node_modules\\aws-sdk',
|
2020-10-16 17:26:19 +02:00
|
|
|
|
|
|
|
// It's being updated over time and we don't need to see these warnings all the time
|
|
|
|
'Warning: componentWillReceiveProps has been renamed',
|
|
|
|
'Warning: componentWillUpdate has been renamed',
|
|
|
|
'Warning: componentWillMount has been renamed',
|
|
|
|
|
|
|
|
// Triggered by react-native-webview. Happens on slow devices when loading the note viewer.
|
|
|
|
// Apparently it can be safely ignored:
|
|
|
|
// https://github.com/react-native-webview/react-native-webview/issues/124
|
|
|
|
'Did not receive response to shouldStartLoad in time, defaulting to YES',
|
|
|
|
]);
|
|
|
|
|
|
|
|
AppRegistry.registerComponent('Joplin', () => Root);
|
2021-01-07 18:36:07 +02:00
|
|
|
|
|
|
|
// Using streams on react-native requires to polyfill process.nextTick()
|
|
|
|
global.process.nextTick = setImmediate;
|