diff options
Diffstat (limited to 'src/console')
-rw-r--r-- | src/console/components/completion.js | 4 | ||||
-rw-r--r-- | src/console/components/console.js | 21 | ||||
-rw-r--r-- | src/console/index.js | 12 |
3 files changed, 14 insertions, 23 deletions
diff --git a/src/console/components/completion.js b/src/console/components/completion.js index 5033b5c..a49a221 100644 --- a/src/console/components/completion.js +++ b/src/console/components/completion.js @@ -3,6 +3,10 @@ export default class Completion { this.wrapper = wrapper; this.store = store; this.prevState = {}; + + store.subscribe(() => { + this.update(); + }); } update() { diff --git a/src/console/components/console.js b/src/console/components/console.js index dcd4041..5028e2a 100644 --- a/src/console/components/console.js +++ b/src/console/components/console.js @@ -4,7 +4,6 @@ import * as consoleActions from 'console/actions/console'; export default class ConsoleComponent { constructor(wrapper, store) { this.wrapper = wrapper; - this.prevValue = ''; this.prevState = {}; this.completionOrigin = ''; this.store = store; @@ -13,10 +12,14 @@ export default class ConsoleComponent { let input = doc.querySelector('#vimvixen-console-command-input'); input.addEventListener('blur', this.onBlur.bind(this)); input.addEventListener('keydown', this.onKeyDown.bind(this)); - input.addEventListener('keyup', this.onKeyUp.bind(this)); + input.addEventListener('input', this.onInput.bind(this)); this.hideCommand(); this.hideMessage(); + + store.subscribe(() => { + this.update(); + }); } onBlur() { @@ -49,22 +52,14 @@ export default class ConsoleComponent { } } - onKeyUp(e) { - if (e.keyCode === KeyboardEvent.DOM_VK_TAB) { - return; - } - if (e.target.value === this.prevValue) { - return; - } - + onInput(e) { let doc = this.wrapper.ownerDocument; let input = doc.querySelector('#vimvixen-console-command-input'); this.completionOrigin = input.value; - this.prevValue = e.target.value; return browser.runtime.sendMessage({ type: messages.CONSOLE_QUERY_COMPLETIONS, - text: e.target.value + text: e.target.value, }).then((completions) => { this.store.dispatch(consoleActions.setCompletions(completions)); }); @@ -109,7 +104,7 @@ export default class ConsoleComponent { input.focus(); window.focus(); - this.prevValue = ''; + this.onInput({ target: input }); } hideCommand() { diff --git a/src/console/index.js b/src/console/index.js index 2ae5779..36473fe 100644 --- a/src/console/index.js +++ b/src/console/index.js @@ -7,14 +7,11 @@ import { createStore } from 'shared/store'; import * as consoleActions from 'console/actions/console'; const store = createStore(reducers); -let completionComponent = null; -let consoleComponent = null; window.addEventListener('load', () => { let wrapper = document.querySelector('#vimvixen-console-completion'); - completionComponent = new CompletionComponent(wrapper, store); - - consoleComponent = new ConsoleComponent(document.body, store); + new CompletionComponent(wrapper, store); // eslint-disable-line no-new + new ConsoleComponent(document.body, store); // eslint-disable-line no-new }); const onMessage = (message) => { @@ -30,11 +27,6 @@ const onMessage = (message) => { } }; -store.subscribe(() => { - completionComponent.update(); - consoleComponent.update(); -}); - browser.runtime.onMessage.addListener(onMessage); window.addEventListener('message', (event) => { onMessage(JSON.parse(event.data)); |