diff options
author | Shin'ya Ueoka <ueokande@i-beam.org> | 2018-07-22 00:01:24 +0900 |
---|---|---|
committer | Shin'ya Ueoka <ueokande@i-beam.org> | 2018-07-22 00:01:24 +0900 |
commit | 89c28d67fd7b961833b557da904bd17aa28660c5 (patch) | |
tree | 2af29fb34f81e9dba508a4bccad98fad73dea143 /src/background/infrastructures | |
parent | 0652131de885df3ebb7c9c0e762fd1604486a892 (diff) |
Settings as clean architecture
Diffstat (limited to 'src/background/infrastructures')
3 files changed, 40 insertions, 4 deletions
diff --git a/src/background/infrastructures/content-message-client.js b/src/background/infrastructures/content-message-client.js new file mode 100644 index 0000000..b3b37b4 --- /dev/null +++ b/src/background/infrastructures/content-message-client.js @@ -0,0 +1,12 @@ +import messages from '../../shared/messages'; + +export default class ContentMessageClient { + async broadcastSettingsChanged() { + let tabs = await browser.tabs.query({}); + for (let tab of tabs) { + browser.tabs.sendMessage(tab.id, { + type: messages.SETTINGS_CHANGED, + }); + } + } +} diff --git a/src/background/infrastructures/content-message-listener.js b/src/background/infrastructures/content-message-listener.js index a0ed66c..6236f1c 100644 --- a/src/background/infrastructures/content-message-listener.js +++ b/src/background/infrastructures/content-message-listener.js @@ -1,8 +1,10 @@ import messages from '../../shared/messages'; import CompletionsController from '../controllers/completions'; +import SettingController from '../controllers/setting'; export default class ContentMessageListener { constructor() { + this.settingController = new SettingController(); this.completionsController = new CompletionsController(); } @@ -22,13 +24,24 @@ export default class ContentMessageListener { onMessage(message) { switch (message.type) { case messages.CONSOLE_QUERY_COMPLETIONS: - return this.onConsoleQueryCompletions(message); + return this.onConsoleQueryCompletions(message.text); + case messages.SETTINGS_QUERY: + return this.onSettingsQuery(); + case messages.SETTINGS_RELOAD: + return this.onSettingsReload(); } } - async onConsoleQueryCompletions(message) { - let completions = - await this.completionsController.getCompletions(message.text); + async onConsoleQueryCompletions(line) { + let completions = await this.completionsController.getCompletions(line); return Promise.resolve(completions.serialize()); } + + onSettingsQuery() { + return this.settingController.getSetting(); + } + + onSettingsReload() { + return this.settingController.reload(); + } } diff --git a/src/background/infrastructures/memory-storage.js b/src/background/infrastructures/memory-storage.js new file mode 100644 index 0000000..0a05928 --- /dev/null +++ b/src/background/infrastructures/memory-storage.js @@ -0,0 +1,11 @@ +const db = {}; + +export default class MemoryStorage { + set(name, value) { + db[name] = value; + } + + get(name) { + return db[name]; + } +} |