diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/console/actions/console.js | 30 | ||||
| -rw-r--r-- | src/console/components/console.js | 61 | ||||
| -rw-r--r-- | src/console/index.js | 8 | 
3 files changed, 53 insertions, 46 deletions
diff --git a/src/console/actions/console.js b/src/console/actions/console.js index f80045f..3713a76 100644 --- a/src/console/actions/console.js +++ b/src/console/actions/console.js @@ -1,3 +1,4 @@ +import messages from 'shared/messages';  import actions from 'console/actions';  const hide = () => { @@ -34,11 +35,30 @@ const showInfo = (text) => {  };  const hideCommand = () => { +  window.top.postMessage(JSON.stringify({ +    type: messages.CONSOLE_UNFOCUS, +  }), '*');    return {      type: actions.CONSOLE_HIDE_COMMAND,    };  }; +const enterCommand = async(text) => { +  await browser.runtime.sendMessage({ +    type: messages.CONSOLE_ENTER_COMMAND, +    text, +  }); +  return hideCommand(text); +}; + +const enterFind = (text) => { +  window.top.postMessage(JSON.stringify({ +    type: messages.CONSOLE_ENTER_FIND, +    text, +  }), '*'); +  return hideCommand(); +}; +  const setConsoleText = (consoleText) => {    return {      type: actions.CONSOLE_SET_CONSOLE_TEXT, @@ -46,11 +66,15 @@ const setConsoleText = (consoleText) => {    };  }; -const setCompletions = (completionSource, completions) => { +const getCompletions = async(text) => { +  let completions = await browser.runtime.sendMessage({ +    type: messages.CONSOLE_QUERY_COMPLETIONS, +    text, +  });    return {      type: actions.CONSOLE_SET_COMPLETIONS, -    completionSource,      completions, +    completionSource: text,    };  }; @@ -68,5 +92,5 @@ const completionPrev = () => {  export {    hide, showCommand, showFind, showError, showInfo, hideCommand, setConsoleText, -  setCompletions, completionNext, completionPrev +  enterCommand, enterFind, getCompletions, completionNext, completionPrev  }; diff --git a/src/console/components/console.js b/src/console/components/console.js index 417c9f6..bd3e344 100644 --- a/src/console/components/console.js +++ b/src/console/components/console.js @@ -1,4 +1,3 @@ -import messages from 'shared/messages';  import * as consoleActions from 'console/actions/console';  const inputShownMode = (state) => { @@ -26,15 +25,22 @@ export default class ConsoleComponent {    onBlur() {      let state = this.store.getState(); -    if (state.mode === 'command') { -      this.hideCommand(); +    if (state.mode === 'command' || state.mode === 'find') { +      return this.store.dispatch(consoleActions.hideCommand());      }    }    doEnter(e) {      e.stopPropagation();      e.preventDefault(); -    return this.onEntered(e.target.value); + +    let state = this.store.getState(); +    let value = e.target.value; +    if (state.mode === 'command') { +      return this.store.dispatch(consoleActions.enterCommand(value)); +    } else if (state.mode === 'find') { +      return this.store.dispatch(consoleActions.enterFind(value)); +    }    }    selectNext(e) { @@ -51,11 +57,11 @@ export default class ConsoleComponent {    onKeyDown(e) {      if (e.keyCode === KeyboardEvent.DOM_VK_ESCAPE && e.ctrlKey) { -      return this.hideCommand(); +      this.store.dispatch(consoleActions.hideCommand());      }      switch (e.keyCode) {      case KeyboardEvent.DOM_VK_ESCAPE: -      return this.hideCommand(); +      return this.store.dispatch(consoleActions.hideCommand());      case KeyboardEvent.DOM_VK_RETURN:        return this.doEnter(e);      case KeyboardEvent.DOM_VK_TAB: @@ -69,7 +75,7 @@ export default class ConsoleComponent {        break;      case KeyboardEvent.DOM_VK_OPEN_BRACKET:        if (e.ctrlKey) { -        return this.hideCommand(); +        return this.store.dispatch(consoleActions.hideCommand());        }        break;      case KeyboardEvent.DOM_VK_M: @@ -90,32 +96,10 @@ export default class ConsoleComponent {      }    } -  onEntered(value) { -    let state = this.store.getState(); -    if (state.mode === 'command') { -      browser.runtime.sendMessage({ -        type: messages.CONSOLE_ENTER_COMMAND, -        text: value, -      }); -      this.hideCommand(); -    } else if (state.mode === 'find') { -      this.hideCommand(); -      window.top.postMessage(JSON.stringify({ -        type: messages.CONSOLE_ENTER_FIND, -        text: value, -      }), '*'); -    } -  } - -  async onInput(e) { -    this.store.dispatch(consoleActions.setConsoleText(e.target.value)); - -    let source = e.target.value; -    let completions = await browser.runtime.sendMessage({ -      type: messages.CONSOLE_QUERY_COMPLETIONS, -      text: source, -    }); -    this.store.dispatch(consoleActions.setCompletions(source, completions)); +  onInput(e) { +    let text = e.target.value; +    this.store.dispatch(consoleActions.setConsoleText(text)); +    this.store.dispatch(consoleActions.getCompletions(text));    }    onInputShown(state) { @@ -126,17 +110,12 @@ export default class ConsoleComponent {      window.focus();      if (state.mode === 'command') { -      this.onInput({ target: input }); +      let text = state.consoleText; +      input.value = text; +      this.store.dispatch(consoleActions.getCompletions(text));      }    } -  hideCommand() { -    this.store.dispatch(consoleActions.hideCommand()); -    window.top.postMessage(JSON.stringify({ -      type: messages.CONSOLE_UNFOCUS, -    }), '*'); -  } -    update() {      let state = this.store.getState(); diff --git a/src/console/index.js b/src/console/index.js index 156456c..8724a44 100644 --- a/src/console/index.js +++ b/src/console/index.js @@ -3,10 +3,14 @@ import messages from 'shared/messages';  import CompletionComponent from 'console/components/completion';  import ConsoleComponent from 'console/components/console';  import reducers from 'console/reducers'; -import { createStore } from 'shared/store'; +import { createStore, applyMiddleware } from 'redux'; +import promise from 'redux-promise';  import * as consoleActions from 'console/actions/console'; -const store = createStore(reducers); +const store = createStore( +  reducers, +  applyMiddleware(promise), +);  window.addEventListener('load', () => {    let wrapper = document.querySelector('#vimvixen-console-completion');  | 
