diff options
| author | Shin'ya Ueoka <ueokande@i-beam.org> | 2017-10-01 17:04:26 +0900 | 
|---|---|---|
| committer | Shin'ya Ueoka <ueokande@i-beam.org> | 2017-10-01 17:17:47 +0900 | 
| commit | 825bb6347623d998c671d3d42268230d1a783d76 (patch) | |
| tree | bc62a31c9cccf91abcfff83645beb3028a75a3d6 /src/components | |
| parent | 1f3dc0ba5a3bc0f02a98e3e11fca6038b9fd8b87 (diff) | |
BackgroundComponent
Diffstat (limited to 'src/components')
| -rw-r--r-- | src/components/background.js | 59 | 
1 files changed, 59 insertions, 0 deletions
| diff --git a/src/components/background.js b/src/components/background.js new file mode 100644 index 0000000..4c5bb19 --- /dev/null +++ b/src/components/background.js @@ -0,0 +1,59 @@ +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'; + +export default class BackgroundComponent { +  constructor(store) { +    this.store = store; +    this.setting = {}; + +    browser.runtime.onMessage.addListener((message, sender) => { +      try { +        this.onMessage(message, sender); +      } catch (e) { +        this.store.dispatch(consoleActions.showError(e.message), sender); +      } +    }); +  } + +  update() { +    let state = this.store.getState(); +    this.updateSettings(state.setting); +  } + +  updateSettings(setting) { +    if (!setting.settings.json) { +      return; +    } +    this.settings = JSON.parse(setting.settings.json); +  } + +  onMessage(message, sender) { +    switch (message.type) { +    case messages.KEYDOWN: +      return this.store.dispatch( +        inputActions.keyPress(message.code, message.ctrl), sender); +    case messages.OPEN_URL: +      if (message.newTab) { +        return this.store.dispatch( +          tabActions.openNewTab(message.url), sender); +      } +      return this.store.dispatch( +        tabActions.openToTab(message.url, sender.tab), sender); +    case messages.CONSOLE_BLURRED: +      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); +    case messages.SETTINGS_RELOAD: +      this.store.dispatch(settingsActions.load()); +    } +  } +} | 
