From 825bb6347623d998c671d3d42268230d1a783d76 Mon Sep 17 00:00:00 2001 From: Shin'ya Ueoka Date: Sun, 1 Oct 2017 17:04:26 +0900 Subject: BackgroundComponent --- src/components/background.js | 59 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 src/components/background.js (limited to 'src/components') 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()); + } + } +} -- cgit v1.2.3