diff options
| author | Shin'ya Ueoka <ueokande@i-beam.org> | 2017-10-01 20:33:18 +0900 | 
|---|---|---|
| committer | Shin'ya Ueoka <ueokande@i-beam.org> | 2017-10-01 20:33:18 +0900 | 
| commit | 192e6fec1bbc540063bf7a56d5da98b61d1df6eb (patch) | |
| tree | 64d5ae21d2510475af9516efb061ea912b8decff /src/background | |
| parent | 1f3dc0ba5a3bc0f02a98e3e11fca6038b9fd8b87 (diff) | |
| parent | a74a8b537e8a82f1af63667fd73869b83d8b7d0d (diff) | |
Merge branch 'more-components'
Diffstat (limited to 'src/background')
| -rw-r--r-- | src/background/index.js | 91 | ||||
| -rw-r--r-- | src/background/keys.js | 21 | 
2 files changed, 7 insertions, 105 deletions
diff --git a/src/background/index.js b/src/background/index.js index 040a2d5..e968c82 100644 --- a/src/background/index.js +++ b/src/background/index.js @@ -1,36 +1,22 @@ -import * as keys from './keys'; -import * as inputActions from '../actions/input'; -import * as operationActions from '../actions/operation'; -import * as commandActions from '../actions/command';  import * as consoleActions from '../actions/console';  import * as settingsActions from '../actions/setting'; -import * as tabActions from '../actions/tab'; +import BackgroundComponent from '../components/background'; +import BackgroundInputComponent from '../components/background-input';  import reducers from '../reducers';  import messages from '../content/messages';  import * as store from '../store'; -let prevInput = []; -let settings = {}; -  const backgroundStore = store.createStore(reducers, (e, sender) => {    console.error('Vim-Vixen:', e);    if (sender) {      backgroundStore.dispatch(consoleActions.showError(e.message), sender);    }  }); +const backgroundComponent = new BackgroundComponent(backgroundStore); +const backgroundInputComponent = new BackgroundInputComponent(backgroundStore);  backgroundStore.subscribe((sender) => { -  let currentInput = backgroundStore.getState().input; -  if (JSON.stringify(prevInput) === JSON.stringify(currentInput)) { -    return; -  } -  prevInput = currentInput; - -  if (currentInput.keys.length === 0) { -    return; -  } -  if (sender) { -    return keyQueueChanged(backgroundStore.getState(), sender); -  } +  backgroundComponent.update(sender); +  backgroundInputComponent.update(sender);  });  backgroundStore.subscribe((sender) => {    if (sender) { @@ -40,68 +26,5 @@ backgroundStore.subscribe((sender) => {      });    }  }); -backgroundStore.subscribe(() => { -  let state = backgroundStore.getState().setting; -  if (!state.settings.json) { -    return; -  } -  settings = JSON.parse(backgroundStore.getState().setting.settings.json); -}); - -const keyQueueChanged = (state, sender) => { -  let prefix = keys.asKeymapChars(state.input.keys); -  let matched = Object.keys(settings.keymaps).filter((keyStr) => { -    return keyStr.startsWith(prefix); -  }); -  if (matched.length === 0) { -    backgroundStore.dispatch(inputActions.clearKeys(), sender); -    return Promise.resolve(); -  } else if (matched.length > 1 || -    matched.length === 1 && prefix !== matched[0]) { -    return Promise.resolve(); -  } -  let action = settings.keymaps[matched]; -  backgroundStore.dispatch( -    operationActions.exec(action, sender.tab, settings), sender); -  backgroundStore.dispatch(inputActions.clearKeys(), sender); -}; - -const handleMessage = (message, sender) => { -  switch (message.type) { -  case messages.KEYDOWN: -    return backgroundStore.dispatch( -      inputActions.keyPress(message.code, message.ctrl), sender); -  case messages.OPEN_URL: -    if (message.newTab) { -      return backgroundStore.dispatch( -        tabActions.openNewTab(message.url), sender); -    } -    return backgroundStore.dispatch( -      tabActions.openToTab(message.url, sender.tab), sender); -  case messages.CONSOLE_BLURRED: -    return backgroundStore.dispatch( -      consoleActions.hide(), sender); -  case messages.CONSOLE_ENTERED: -    return backgroundStore.dispatch( -      commandActions.exec(message.text, settings), sender); -  case messages.CONSOLE_CHANGEED: -    return backgroundStore.dispatch( -      commandActions.complete(message.text, settings), sender); -  case messages.SETTINGS_RELOAD: -    backgroundStore.dispatch(settingsActions.load()); -  } -}; - -browser.runtime.onMessage.addListener((message, sender) => { -  try { -    handleMessage(message, sender); -  } catch (e) { -    backgroundStore.dispatch(consoleActions.showError(e.message), sender); -  } -}); - -const initializeSettings = () => { -  backgroundStore.dispatch(settingsActions.load()); -}; -initializeSettings(); +backgroundStore.dispatch(settingsActions.load()); diff --git a/src/background/keys.js b/src/background/keys.js deleted file mode 100644 index aca050e..0000000 --- a/src/background/keys.js +++ /dev/null @@ -1,21 +0,0 @@ -const asKeymapChars = (keys) => { -  return keys.map((k) => { -    let c = String.fromCharCode(k.code); -    if (k.ctrl) { -      return '<C-' + c.toUpperCase() + '>'; -    } -    return c; -  }).join(''); -}; - -const asCaretChars = (keys) => { -  return keys.map((k) => { -    let c = String.fromCharCode(k.code); -    if (k.ctrl) { -      return '^' + c.toUpperCase(); -    } -    return c; -  }).join(''); -}; - -export { asKeymapChars, asCaretChars };  | 
