From 129aae38df1a17a5850898d5832bb8112ead3cbb Mon Sep 17 00:00:00 2001 From: Shin'ya Ueoka Date: Sun, 6 May 2018 22:30:04 +0900 Subject: Indicator shows the add-on enabled --- src/content/components/common/index.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src/content/components/common') diff --git a/src/content/components/common/index.js b/src/content/components/common/index.js index 565632c..c5d1df7 100644 --- a/src/content/components/common/index.js +++ b/src/content/components/common/index.js @@ -14,10 +14,12 @@ export default class Common { input.onKey(key => keymapper.key(key)); this.store = store; + this.prevEnabled = this.store.getState().addon.enabled; this.reloadSettings(); messages.onMessage(this.onMessage.bind(this)); + store.subscribe(() => this.update()); } onMessage(message) { @@ -27,6 +29,18 @@ export default class Common { } } + update() { + let enabled = this.store.getState().addon.enabled; + if (enabled !== this.prevEnabled) { + this.prevEnabled = enabled; + + browser.runtime.sendMessage({ + type: messages.ADDON_ENABLED_RESPONSE, + enabled, + }); + } + } + reloadSettings() { browser.runtime.sendMessage({ type: messages.SETTINGS_QUERY, -- cgit v1.2.3 From 6d057a974bb42406259b6f0b0a8c0b1e22335073 Mon Sep 17 00:00:00 2001 From: Shin'ya Ueoka Date: Sun, 6 May 2018 22:47:58 +0900 Subject: Toggle add-on enabled by clicking indicator --- src/background/components/indicator.js | 7 +++++++ src/content/components/common/index.js | 5 ++++- src/shared/messages.js | 1 + 3 files changed, 12 insertions(+), 1 deletion(-) (limited to 'src/content/components/common') diff --git a/src/background/components/indicator.js b/src/background/components/indicator.js index ccdcc74..cceb119 100644 --- a/src/background/components/indicator.js +++ b/src/background/components/indicator.js @@ -7,6 +7,7 @@ export default class IndicatorComponent { messages.onMessage(this.onMessage.bind(this)); + browser.browserAction.onClicked.addListener(this.onClicked); browser.tabs.onActivated.addListener((info) => { return browser.tabs.query({ currentWindow: true }).then(() => { return this.onTabActivated(info); @@ -22,6 +23,12 @@ export default class IndicatorComponent { }); } + onClicked(tab) { + browser.tabs.sendMessage(tab.id, { + type: messages.ADDON_TOGGLE_ENABLED, + }); + } + onMessage(message) { switch (message.type) { case messages.ADDON_ENABLED_RESPONSE: diff --git a/src/content/components/common/index.js b/src/content/components/common/index.js index c5d1df7..c76a7d9 100644 --- a/src/content/components/common/index.js +++ b/src/content/components/common/index.js @@ -3,6 +3,7 @@ import KeymapperComponent from './keymapper'; import FollowComponent from './follow'; import * as settingActions from 'content/actions/setting'; import messages from 'shared/messages'; +import * as addonActions from '../../actions/addon'; export default class Common { constructor(win, store) { @@ -25,7 +26,9 @@ export default class Common { onMessage(message) { switch (message.type) { case messages.SETTINGS_CHANGED: - this.reloadSettings(); + return this.reloadSettings(); + case messages.ADDON_TOGGLE_ENABLED: + return this.store.dispatch(addonActions.toggleEnabled()); } } diff --git a/src/shared/messages.js b/src/shared/messages.js index 2a286bf..1f9c816 100644 --- a/src/shared/messages.js +++ b/src/shared/messages.js @@ -50,6 +50,7 @@ export default { ADDON_ENABLED_QUERY: 'addon.enabled.query', ADDON_ENABLED_RESPONSE: 'addon.enabled.response', + ADDON_TOGGLE_ENABLED: 'addon.toggle.enabled', OPEN_URL: 'open.url', -- cgit v1.2.3 From cf30ef0cd503b3b9dee882202d64ba9db9922ee3 Mon Sep 17 00:00:00 2001 From: Shin'ya Ueoka Date: Sun, 6 May 2018 21:35:11 +0900 Subject: update indicator on loaded --- src/content/components/common/index.js | 2 +- src/content/components/top-content/index.js | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) (limited to 'src/content/components/common') diff --git a/src/content/components/common/index.js b/src/content/components/common/index.js index c76a7d9..9b7b083 100644 --- a/src/content/components/common/index.js +++ b/src/content/components/common/index.js @@ -15,7 +15,7 @@ export default class Common { input.onKey(key => keymapper.key(key)); this.store = store; - this.prevEnabled = this.store.getState().addon.enabled; + this.prevEnabled = undefined; this.reloadSettings(); diff --git a/src/content/components/top-content/index.js b/src/content/components/top-content/index.js index cb9e160..a0d0480 100644 --- a/src/content/components/top-content/index.js +++ b/src/content/components/top-content/index.js @@ -44,6 +44,8 @@ export default class TopContent { .some(regex => regex.test(partial)); if (matched) { this.store.dispatch(addonActions.disable()); + } else { + this.store.dispatch(addonActions.enable()); } } -- cgit v1.2.3