// 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.

// So there's basically still a one way flux: React => SQLite => Redux => React

// console.disableYellowBox = true

import { YellowBox, AppRegistry, NativeModules } from 'react-native';
YellowBox.ignoreWarnings([
	'Require cycle: node_modules/react-native-',
	'Require cycle: node_modules/rn-fetch-blob',
	'Warning: componentWillReceiveProps has been renamed',
	'Warning: componentWillUpdate has been renamed',
	'Warning: componentWillMount has been renamed',
]);
const { Root } = require('./root.js');

// Disable buggy Fast Refresh
if (__DEV__) {
	const { DevSettings } = NativeModules;
	DevSettings.setHotLoadingEnabled(false);
	DevSettings.setLiveReloadEnabled(false);
}

function main() {
	AppRegistry.registerComponent('Joplin', () => Root);
	console.ignoredYellowBox = ['Remote debugger'];
	// Note: The final part of the initialization process is in
	// AppComponent.componentDidMount(), when the application is ready.
}

module.exports = { main };