From 34ffcfec3bb920c57adddcd413f6ab2b6011f61d Mon Sep 17 00:00:00 2001 From: Gregory Schier Date: Fri, 26 Apr 2019 13:58:05 -0700 Subject: [PATCH] Added a request "quick create" hotkey and data migration to ensure (#1469) new hotkeys are added to the database --- packages/insomnia-app/app/common/hotkeys.js | 7 +++ packages/insomnia-app/app/models/settings.js | 12 ++++ .../app/ui/components/settings/shortcuts.js | 57 ++++++++++--------- .../insomnia-app/app/ui/containers/app.js | 9 +++ 4 files changed, 57 insertions(+), 28 deletions(-) diff --git a/packages/insomnia-app/app/common/hotkeys.js b/packages/insomnia-app/app/common/hotkeys.js index 5cbd155b53..8ceac9db98 100644 --- a/packages/insomnia-app/app/common/hotkeys.js +++ b/packages/insomnia-app/app/common/hotkeys.js @@ -136,6 +136,8 @@ export const hotKeyRefs = { REQUEST_SHOW_CREATE: defineHotKey('request_showCreate', 'Create Request'), + REQUEST_QUICK_CREATE: defineHotKey('request_quickCreate', 'Create Request (Quick)'), + REQUEST_SHOW_DELETE: defineHotKey('request_showDelete', 'Delete Request'), REQUEST_SHOW_CREATE_FOLDER: defineHotKey('request_showCreateFolder', 'Create Folder'), @@ -266,6 +268,11 @@ const defaultRegistry: HotKeyRegistry = { keyComb(true, false, false, false, keyboardKeys.n.keyCode), ), + [hotKeyRefs.REQUEST_QUICK_CREATE.id]: keyBinds( + keyComb(false, true, false, true, keyboardKeys.n.keyCode), + keyComb(true, true, false, false, keyboardKeys.n.keyCode), + ), + [hotKeyRefs.REQUEST_SHOW_DELETE.id]: keyBinds( keyComb(false, false, true, true, keyboardKeys.delete.keyCode), keyComb(true, false, true, false, keyboardKeys.delete.keyCode), diff --git a/packages/insomnia-app/app/models/settings.js b/packages/insomnia-app/app/models/settings.js index c919974cae..f64f09fafd 100644 --- a/packages/insomnia-app/app/models/settings.js +++ b/packages/insomnia-app/app/models/settings.js @@ -89,6 +89,7 @@ export function init(): BaseSettings { } export function migrate(doc: Settings): Settings { + doc = migrateEnsureHotKeys(doc); return doc; } @@ -117,3 +118,14 @@ export async function getOrCreate(patch: Object = {}): Promise { return results[0]; } } + +/** + * Ensure map is updated when new hotkeys are added + */ +function migrateEnsureHotKeys(settings: Settings): Settings { + settings.hotKeyRegistry = { + ...hotkeys.newDefaultRegistry(), + ...settings.hotKeyRegistry, + }; + return settings; +} diff --git a/packages/insomnia-app/app/ui/components/settings/shortcuts.js b/packages/insomnia-app/app/ui/components/settings/shortcuts.js index a1ca511ded..418446354d 100644 --- a/packages/insomnia-app/app/ui/components/settings/shortcuts.js +++ b/packages/insomnia-app/app/ui/components/settings/shortcuts.js @@ -22,6 +22,34 @@ type Props = { handleUpdateKeyBindings: Function, }; +const HOT_KEY_DEFS: Array = [ + hotKeyRefs.PREFERENCES_SHOW_KEYBOARD_SHORTCUTS, + hotKeyRefs.REQUEST_QUICK_SWITCH, + hotKeyRefs.REQUEST_SEND, + hotKeyRefs.REQUEST_SHOW_OPTIONS, + hotKeyRefs.REQUEST_SHOW_CREATE, + hotKeyRefs.REQUEST_SHOW_DELETE, + hotKeyRefs.REQUEST_SHOW_CREATE_FOLDER, + hotKeyRefs.REQUEST_SHOW_DUPLICATE, + hotKeyRefs.REQUEST_SHOW_GENERATE_CODE_EDITOR, + hotKeyRefs.SHOW_COOKIES_EDITOR, + hotKeyRefs.ENVIRONMENT_SHOW_EDITOR, + hotKeyRefs.ENVIRONMENT_SHOW_SWITCH_MENU, + hotKeyRefs.REQUEST_FOCUS_URL, + hotKeyRefs.RESPONSE_FOCUS, + hotKeyRefs.REQUEST_TOGGLE_HTTP_METHOD_MENU, + hotKeyRefs.SIDEBAR_TOGGLE, + hotKeyRefs.SIDEBAR_FOCUS_FILTER, + hotKeyRefs.REQUEST_TOGGLE_HISTORY, + hotKeyRefs.SHOW_AUTOCOMPLETE, + hotKeyRefs.PREFERENCES_SHOW_GENERAL, + hotKeyRefs.WORKSPACE_SHOW_SETTINGS, + hotKeyRefs.REQUEST_SHOW_SETTINGS, + hotKeyRefs.TOGGLE_MAIN_MENU, + hotKeyRefs.PLUGIN_RELOAD, + hotKeyRefs.ENVIRONMENT_UNCOVER_VARIABLES, +]; + @autobind class Shortcuts extends PureComponent { /** @@ -152,33 +180,6 @@ class Shortcuts extends PureComponent { } render() { - const hotKeyDefs: Array = [ - hotKeyRefs.PREFERENCES_SHOW_KEYBOARD_SHORTCUTS, - hotKeyRefs.REQUEST_QUICK_SWITCH, - hotKeyRefs.REQUEST_SEND, - hotKeyRefs.REQUEST_SHOW_OPTIONS, - hotKeyRefs.REQUEST_SHOW_CREATE, - hotKeyRefs.REQUEST_SHOW_DELETE, - hotKeyRefs.REQUEST_SHOW_CREATE_FOLDER, - hotKeyRefs.REQUEST_SHOW_DUPLICATE, - hotKeyRefs.REQUEST_SHOW_GENERATE_CODE_EDITOR, - hotKeyRefs.SHOW_COOKIES_EDITOR, - hotKeyRefs.ENVIRONMENT_SHOW_EDITOR, - hotKeyRefs.ENVIRONMENT_SHOW_SWITCH_MENU, - hotKeyRefs.REQUEST_FOCUS_URL, - hotKeyRefs.RESPONSE_FOCUS, - hotKeyRefs.REQUEST_TOGGLE_HTTP_METHOD_MENU, - hotKeyRefs.SIDEBAR_TOGGLE, - hotKeyRefs.SIDEBAR_FOCUS_FILTER, - hotKeyRefs.REQUEST_TOGGLE_HISTORY, - hotKeyRefs.SHOW_AUTOCOMPLETE, - hotKeyRefs.PREFERENCES_SHOW_GENERAL, - hotKeyRefs.WORKSPACE_SHOW_SETTINGS, - hotKeyRefs.REQUEST_SHOW_SETTINGS, - hotKeyRefs.TOGGLE_MAIN_MENU, - hotKeyRefs.PLUGIN_RELOAD, - hotKeyRefs.ENVIRONMENT_UNCOVER_VARIABLES, - ]; return (
@@ -190,7 +191,7 @@ class Shortcuts extends PureComponent {
- {hotKeyDefs.map((def: HotKeyDefinition, idx: number) => { + {HOT_KEY_DEFS.map((def: HotKeyDefinition, idx: number) => { return this.renderHotKey(def, idx); })} diff --git a/packages/insomnia-app/app/ui/containers/app.js b/packages/insomnia-app/app/ui/containers/app.js index 539418fc53..d2588197e9 100644 --- a/packages/insomnia-app/app/ui/containers/app.js +++ b/packages/insomnia-app/app/ui/containers/app.js @@ -157,6 +157,15 @@ class App extends PureComponent { showModal(CookiesModal, activeWorkspace); }, ], + [ + hotKeyRefs.REQUEST_QUICK_CREATE, + async () => { + const { activeRequest, activeWorkspace } = this.props; + const parentId = activeRequest ? activeRequest.parentId : activeWorkspace._id; + const request = await models.request.create({ parentId, name: 'New Request' }); + await this._handleSetActiveRequest(request._id); + }, + ], [ hotKeyRefs.REQUEST_SHOW_CREATE, () => {