/** * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * * @format */ import {remote} from 'electron'; import androidDevice from './androidDevice'; import metroDevice from './metroDevice'; import iOSDevice from './iOSDevice'; import desktopDevice from './desktopDevice'; import application from './application'; import tracking from './tracking'; import server from './server'; import notifications from './notifications'; import plugins from './plugins'; import user from './user'; import pluginManager from './pluginManager'; import reactNative from './reactNative'; import {Logger} from '../fb-interfaces/Logger'; import {Store} from '../reducers/index'; import {Dispatcher} from './types'; import {notNull} from '../utils/typeUtils'; export default function(store: Store, logger: Logger): () => Promise { // This only runs in development as when the reload // kicks in it doesn't unregister the shortcuts if (process.env.NODE_ENV === 'development') { remote.globalShortcut.unregisterAll(); } const dispatchers: Array = [ application, store.getState().settingsState.enableAndroid ? androidDevice : null, iOSDevice, metroDevice, desktopDevice, tracking, server, notifications, plugins, user, pluginManager, reactNative, ].filter(notNull); const globalCleanup = dispatchers .map(dispatcher => dispatcher(store, logger)) .filter(Boolean); return () => { return Promise.all(globalCleanup).then(() => {}); }; }