diff --git a/src/components/background.js b/src/components/background.js index 08d5115..195cfd9 100644 --- a/src/components/background.js +++ b/src/components/background.js @@ -1,9 +1,9 @@ import messages from 'content/messages'; -import * as commandActions from 'actions/command'; import * as consoleActions from 'actions/console'; import * as inputActions from 'actions/input'; import * as settingsActions from 'actions/setting'; import * as tabActions from 'actions/tab'; +import * as commands from 'shared/commands'; export default class BackgroundComponent { constructor(store) { @@ -12,7 +12,7 @@ export default class BackgroundComponent { browser.runtime.onMessage.addListener((message, sender) => { try { - this.onMessage(message, sender); + return this.onMessage(message, sender); } catch (e) { this.store.dispatch(consoleActions.showError(e.message), sender); } @@ -47,11 +47,9 @@ export default class BackgroundComponent { return this.store.dispatch( consoleActions.hide(), sender); case messages.CONSOLE_ENTERED: - return this.store.dispatch( - commandActions.exec(message.text, this.settings), sender); - case messages.CONSOLE_CHANGEED: - return this.store.dispatch( - commandActions.complete(message.text, this.settings), sender); + return commands.exec(message.text, this.settings); + case messages.CONSOLE_QUERY_COMPLETIONS: + return commands.complete(message.text, this.settings); case messages.SETTINGS_RELOAD: this.store.dispatch(settingsActions.load()); } diff --git a/src/components/console.js b/src/components/console.js index 25b135c..177cfe5 100644 --- a/src/components/console.js +++ b/src/components/console.js @@ -36,7 +36,7 @@ export default class ConsoleComponent { return browser.runtime.sendMessage({ type: messages.CONSOLE_ENTERED, text: e.target.value - }); + }).then(this.onBlur); case KeyboardEvent.DOM_VK_TAB: if (e.shiftKey) { this.store.dispatch(completionActions.selectPrev()); @@ -63,8 +63,10 @@ export default class ConsoleComponent { this.prevValue = e.target.value; return browser.runtime.sendMessage({ - type: messages.CONSOLE_CHANGEED, + type: messages.CONSOLE_QUERY_COMPLETIONS, text: e.target.value + }).then((completions) => { + this.store.dispatch(completionActions.setItems(completions)); }); } diff --git a/src/content/messages.js b/src/content/messages.js index df9fba2..72a566b 100644 --- a/src/content/messages.js +++ b/src/content/messages.js @@ -4,7 +4,7 @@ export default { CONSOLE_BLURRED: 'console.blured', CONSOLE_ENTERED: 'console.entered', - CONSOLE_CHANGEED: 'console.changed', + CONSOLE_QUERY_COMPLETIONS: 'console.query.completions', KEYDOWN: 'keydown', diff --git a/src/pages/console.js b/src/pages/console.js index a4536ec..4d78826 100644 --- a/src/pages/console.js +++ b/src/pages/console.js @@ -39,6 +39,5 @@ browser.runtime.onMessage.addListener((action) => { if (action.type === messages.STATE_UPDATE) { let state = action.state.console; consoleComponent.update(state); - store.dispatch(completionActions.setItems(state.completions)); } }); diff --git a/src/actions/command.js b/src/shared/commands.js similarity index 93% rename from src/actions/command.js rename to src/shared/commands.js index a40cc97..b1d8780 100644 --- a/src/actions/command.js +++ b/src/shared/commands.js @@ -1,6 +1,5 @@ import * as tabs from 'background/tabs'; import * as histories from 'background/histories'; -import * as consoleActions from './console'; const normalizeUrl = (string, searchConfig) => { try { @@ -132,16 +131,13 @@ const getCompletions = (command, keywords, settings) => { const exec = (line, settings) => { let name = line.split(' ')[0]; let remaining = line.replace(name + ' ', ''); - return doCommand(name, remaining, settings).then(() => { - return consoleActions.hide(); - }); + return doCommand(name, remaining, settings); }; const complete = (line, settings) => { let command = line.split(' ', 1)[0]; let keywords = line.replace(command + ' ', ''); - return getCompletions(command, keywords, settings) - .then(consoleActions.setCompletions); + return getCompletions(command, keywords, settings); }; export { exec, complete };