Summary: Started abstraction some Electron specific APIs away, like process id, select directory dialogs etc. Reviewed By: timur-valiev, aigoncharov Differential Revision: D31827016 fbshipit-source-id: e835ac9095e63d7ea79dd0eaf7f2918ac8d09994
60 lines
1.4 KiB
TypeScript
60 lines
1.4 KiB
TypeScript
/**
|
|
* 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 {Store} from '../reducers';
|
|
import {getRenderHostInstance} from '../RenderHost';
|
|
|
|
type ShortcutEventCommand =
|
|
| {
|
|
shortcut: string;
|
|
command: string;
|
|
}
|
|
| '';
|
|
|
|
export default (store: Store) => {
|
|
const settings = store.getState().settingsState.reactNative;
|
|
const renderHost = getRenderHostInstance();
|
|
|
|
if (!settings.shortcuts.enabled) {
|
|
return;
|
|
}
|
|
|
|
const shortcuts: ShortcutEventCommand[] = [
|
|
settings.shortcuts.reload && {
|
|
shortcut: settings.shortcuts.reload,
|
|
command: 'reload',
|
|
},
|
|
settings.shortcuts.openDevMenu && {
|
|
shortcut: settings.shortcuts.openDevMenu,
|
|
command: 'devMenu',
|
|
},
|
|
];
|
|
|
|
shortcuts.forEach(
|
|
(shortcut: ShortcutEventCommand) =>
|
|
shortcut &&
|
|
shortcut.shortcut &&
|
|
renderHost.registerShortcut(shortcut.shortcut, () => {
|
|
const devices = store
|
|
.getState()
|
|
.connections.devices.filter(
|
|
(device) => device.os === 'Metro' && !device.isArchived,
|
|
);
|
|
|
|
devices.forEach((device) =>
|
|
device.flipperServer.exec(
|
|
'metro-command',
|
|
device.serial,
|
|
shortcut.command,
|
|
),
|
|
);
|
|
}),
|
|
);
|
|
};
|