Summary: We only want to persist certain reducers that are whitelisted. Currently some parts of the `connections` reducer and everything from the other reducers was persisted. This changes the behavior to only persist what is explicitly whitelisted and not the other reducers. These pars of the store are whitelisted: - `connections.userPreferredDevice` - `connections.userPreferredPlugin` - `connections.userPreferredApp` Reviewed By: jknoxville Differential Revision: D10401403 fbshipit-source-id: e4aa4f2b2f8f6229b02dcf46798965fa1ae74df6
64 lines
1.8 KiB
JavaScript
64 lines
1.8 KiB
JavaScript
/**
|
|
* Copyright 2018-present Facebook.
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
* @format
|
|
*/
|
|
|
|
import {Provider} from 'react-redux';
|
|
import ReactDOM from 'react-dom';
|
|
import {ContextMenuProvider} from 'flipper';
|
|
import {precachedIcons} from './utils/icons.js';
|
|
import GK from './fb-stubs/GK.js';
|
|
import Logger from './fb-stubs/Logger.js';
|
|
import App from './App.js';
|
|
import BugReporter from './fb-stubs/BugReporter.js';
|
|
import {createStore} from 'redux';
|
|
import {persistStore} from 'redux-persist';
|
|
import reducers from './reducers/index.js';
|
|
import dispatcher from './dispatcher/index.js';
|
|
import {setupMenuBar} from './MenuBar.js';
|
|
import TooltipProvider from './ui/components/TooltipProvider.js';
|
|
const path = require('path');
|
|
|
|
const store = createStore(
|
|
reducers,
|
|
window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__(),
|
|
);
|
|
persistStore(store);
|
|
|
|
const logger = new Logger();
|
|
const bugReporter = new BugReporter(logger);
|
|
dispatcher(store, logger);
|
|
GK.init();
|
|
setupMenuBar();
|
|
|
|
const AppFrame = () => (
|
|
<TooltipProvider>
|
|
<ContextMenuProvider>
|
|
<Provider store={store}>
|
|
<App logger={logger} bugReporter={bugReporter} />
|
|
</Provider>
|
|
</ContextMenuProvider>
|
|
</TooltipProvider>
|
|
);
|
|
|
|
function init() {
|
|
// $FlowFixMe: this element exists!
|
|
ReactDOM.render(<AppFrame />, document.getElementById('root'));
|
|
// $FlowFixMe: service workers exist!
|
|
navigator.serviceWorker
|
|
.register(
|
|
process.env.NODE_ENV === 'production'
|
|
? path.join(__dirname, 'serviceWorker.js')
|
|
: './serviceWorker.js',
|
|
)
|
|
.then(r => {
|
|
(r.installing || r.active).postMessage({precachedIcons});
|
|
})
|
|
.catch(console.error);
|
|
}
|
|
|
|
// make init function callable from outside
|
|
window.Flipper.init = init;
|