// 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 } 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
// NOTE: not working - can make the app go into an infinite crash/restart loop
// 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 };