aboutsummaryrefslogtreecommitdiff
path: root/src/content
diff options
context:
space:
mode:
Diffstat (limited to 'src/content')
-rw-r--r--src/content/actions/addon.js22
-rw-r--r--src/content/actions/index.js4
-rw-r--r--src/content/actions/operation.js4
-rw-r--r--src/content/actions/setting.js2
-rw-r--r--src/content/components/common/index.js35
-rw-r--r--src/content/components/common/keymapper.js4
-rw-r--r--src/content/index.js1
-rw-r--r--src/content/reducers/addon.js10
8 files changed, 30 insertions, 52 deletions
diff --git a/src/content/actions/addon.js b/src/content/actions/addon.js
index 8d38025..b30cf16 100644
--- a/src/content/actions/addon.js
+++ b/src/content/actions/addon.js
@@ -1,15 +1,19 @@
+import messages from 'shared/messages';
import actions from 'content/actions';
-const enable = () => {
- return { type: actions.ADDON_ENABLE };
-};
+const enable = () => setEnabled(true);
-const disable = () => {
- return { type: actions.ADDON_DISABLE };
-};
+const disable = () => setEnabled(false);
-const toggleEnabled = () => {
- return { type: actions.ADDON_TOGGLE_ENABLED };
+const setEnabled = async(enabled) => {
+ await browser.runtime.sendMessage({
+ type: messages.ADDON_ENABLED_RESPONSE,
+ enabled,
+ });
+ return {
+ type: actions.ADDON_SET_ENABLED,
+ enabled,
+ };
};
-export { enable, disable, toggleEnabled };
+export { enable, disable, setEnabled };
diff --git a/src/content/actions/index.js b/src/content/actions/index.js
index 7e32e12..1c51ab0 100644
--- a/src/content/actions/index.js
+++ b/src/content/actions/index.js
@@ -1,8 +1,6 @@
export default {
// Enable/disable
- ADDON_ENABLE: 'addon.enable',
- ADDON_DISABLE: 'addon.disable',
- ADDON_TOGGLE_ENABLED: 'addon.toggle.enabled',
+ ADDON_SET_ENABLED: 'addon.set.enabled',
// Settings
SETTING_SET: 'setting.set',
diff --git a/src/content/actions/operation.js b/src/content/actions/operation.js
index a1761fc..c1bd1c8 100644
--- a/src/content/actions/operation.js
+++ b/src/content/actions/operation.js
@@ -9,7 +9,7 @@ import * as addonActions from './addon';
import * as properties from 'shared/settings/properties';
// eslint-disable-next-line complexity, max-lines-per-function
-const exec = (operation, repeat, settings) => {
+const exec = (operation, repeat, settings, addonEnabled) => {
let smoothscroll = settings.properties.smoothscroll ||
properties.defaults.smoothscroll;
switch (operation.type) {
@@ -18,7 +18,7 @@ const exec = (operation, repeat, settings) => {
case operations.ADDON_DISABLE:
return addonActions.disable();
case operations.ADDON_TOGGLE_ENABLED:
- return addonActions.toggleEnabled();
+ return addonActions.setEnabled(!addonEnabled);
case operations.FIND_NEXT:
window.top.postMessage(JSON.stringify({
type: messages.FIND_NEXT,
diff --git a/src/content/actions/setting.js b/src/content/actions/setting.js
index 50c09ca..1c15dd7 100644
--- a/src/content/actions/setting.js
+++ b/src/content/actions/setting.js
@@ -34,4 +34,4 @@ const load = async() => {
return set(settings);
};
-export { load };
+export { set, load };
diff --git a/src/content/components/common/index.js b/src/content/components/common/index.js
index e81bf1f..a1e71a1 100644
--- a/src/content/components/common/index.js
+++ b/src/content/components/common/index.js
@@ -4,7 +4,6 @@ import FollowComponent from './follow';
import * as settingActions from 'content/actions/setting';
import messages from 'shared/messages';
import * as addonActions from '../../actions/addon';
-import * as re from 'shared/utils/re';
import * as blacklists from 'shared/blacklists';
export default class Common {
@@ -24,44 +23,26 @@ export default class Common {
this.reloadSettings();
messages.onMessage(this.onMessage.bind(this));
- store.subscribe(() => this.update());
}
onMessage(message) {
+ let { enabled } = this.store.getState().addon;
switch (message.type) {
case messages.SETTINGS_CHANGED:
return this.reloadSettings();
case messages.ADDON_TOGGLE_ENABLED:
- return this.store.dispatch(addonActions.toggleEnabled());
- }
- }
-
- update() {
- let enabled = this.store.getState().addon.enabled;
- if (enabled !== this.prevEnabled) {
- this.prevEnabled = enabled;
-
- browser.runtime.sendMessage({
- type: messages.ADDON_ENABLED_RESPONSE,
- enabled,
- });
- }
-
- let blacklist = this.store.getState().setting.blacklist;
- let str = JSON.stringify(blacklist)
- if (blacklist !== str) {
- this.prevBlacklist = str;
- if (blacklists.includes(blacklist, this.win.location)) {
- this.store.dispatch(addonActions.disable());
- } else {
- this.store.dispatch(addonActions.enable());
- }
+ this.store.dispatch(addonActions.setEnabled(!enabled));
}
}
reloadSettings() {
try {
- this.store.dispatch(settingActions.load());
+ this.store.dispatch(settingActions.load()).then(({ value: settings }) => {
+ let enabled = !blacklists.includes(
+ settings.blacklist, this.win.location.href
+ );
+ this.store.dispatch(addonActions.setEnabled(enabled));
+ });
} catch (e) {
// Sometime sendMessage fails when background script is not ready.
console.warn(e);
diff --git a/src/content/components/common/keymapper.js b/src/content/components/common/keymapper.js
index 326bdd9..4c294b4 100644
--- a/src/content/components/common/keymapper.js
+++ b/src/content/components/common/keymapper.js
@@ -48,7 +48,9 @@ export default class KeymapperComponent {
return true;
}
let operation = keymaps.get(matched[0]);
- let act = operationActions.exec(operation, key.repeat, state.setting);
+ let act = operationActions.exec(
+ operation, key.repeat, state.setting, state.addon.enabled
+ );
this.store.dispatch(act);
this.store.dispatch(inputActions.clearKeys());
return true;
diff --git a/src/content/index.js b/src/content/index.js
index d6743ce..3b0b49b 100644
--- a/src/content/index.js
+++ b/src/content/index.js
@@ -10,7 +10,6 @@ const store = createStore(
applyMiddleware(promise),
);
-
if (window.self === window.top) {
new TopContentComponent(window, store); // eslint-disable-line no-new
} else {
diff --git a/src/content/reducers/addon.js b/src/content/reducers/addon.js
index b881ca0..0def55a 100644
--- a/src/content/reducers/addon.js
+++ b/src/content/reducers/addon.js
@@ -6,15 +6,9 @@ const defaultState = {
export default function reducer(state = defaultState, action = {}) {
switch (action.type) {
- case actions.ADDON_ENABLE:
+ case actions.ADDON_SET_ENABLED:
return { ...state,
- enabled: true, };
- case actions.ADDON_DISABLE:
- return { ...state,
- enabled: false, };
- case actions.ADDON_TOGGLE_ENABLED:
- return { ...state,
- enabled: !state.enabled, };
+ enabled: action.enabled, };
default:
return state;
}