diff --git a/src/content/actions/index.js b/src/content/actions/index.js index 0b3749d..f8db948 100644 --- a/src/content/actions/index.js +++ b/src/content/actions/index.js @@ -2,16 +2,13 @@ export default { // User input INPUT_KEY_PRESS: 'input.key,press', INPUT_CLEAR_KEYS: 'input.clear.keys', - INPUT_SET_KEYMAPS: 'input.set,keymaps', + INPUT_SET_KEYMAPS: 'input.set.keymaps', // Completion COMPLETION_SET_ITEMS: 'completion.set.items', COMPLETION_SELECT_NEXT: 'completions.select.next', COMPLETION_SELECT_PREV: 'completions.select.prev', - // Settings - SETTING_SET_SETTINGS: 'setting.set.settings', - // Follow FOLLOW_ENABLE: 'follow.enable', FOLLOW_DISABLE: 'follow.disable', diff --git a/src/content/actions/input.js b/src/content/actions/input.js index cc4efac..10ff835 100644 --- a/src/content/actions/input.js +++ b/src/content/actions/input.js @@ -20,4 +20,11 @@ const clearKeys = () => { }; }; -export { keyPress, clearKeys }; +const setKeymaps = (keymaps) => { + return { + type: actions.INPUT_SET_KEYMAPS, + keymaps, + }; +}; + +export { keyPress, clearKeys, setKeymaps }; diff --git a/src/content/components/keymapper.js b/src/content/components/keymapper.js index 8f2cead..655c3f2 100644 --- a/src/content/components/keymapper.js +++ b/src/content/components/keymapper.js @@ -10,14 +10,10 @@ export default class KeymapperComponent { } key(key, ctrl) { - let keymaps = this.keymaps(); - if (!keymaps) { - return; - } this.store.dispatch(inputActions.keyPress(key, ctrl)); let input = this.store.getState().input; - let matched = Object.keys(keymaps).filter((keyStr) => { + let matched = Object.keys(input.keymaps).filter((keyStr) => { return keyStr.startsWith(input.keys); }); if (matched.length === 0) { @@ -27,17 +23,9 @@ export default class KeymapperComponent { matched.length === 1 && input.keys !== matched[0]) { return true; } - let operation = keymaps[matched]; + let operation = input.keymaps[matched]; this.store.dispatch(operationActions.exec(operation)); this.store.dispatch(inputActions.clearKeys()); return true; } - - keymaps() { - let settings = this.store.getState().setting.settings; - if (!settings || !settings.json) { - return null; - } - return JSON.parse(settings.json).keymaps; - } } diff --git a/src/content/index.js b/src/content/index.js index 63bbf77..1ed8463 100644 --- a/src/content/index.js +++ b/src/content/index.js @@ -1,6 +1,6 @@ import './console-frame.scss'; import * as consoleFrames from './console-frames'; -import * as settingActions from 'settings/actions/setting'; +import * as inputActions from './actions/input'; import { createStore } from 'shared/store'; import ContentInputComponent from 'content/components/content-input'; import KeymapperComponent from 'content/components/keymapper'; @@ -34,7 +34,8 @@ const reloadSettings = () => { return browser.runtime.sendMessage({ type: messages.SETTINGS_QUERY, }).then((settings) => { - store.dispatch(settingActions.set(settings)); + let keymaps = JSON.parse(settings.json).keymaps; + store.dispatch(inputActions.setKeymaps(keymaps)); }); }; diff --git a/src/content/reducers/index.js b/src/content/reducers/index.js index a62217f..c026a19 100644 --- a/src/content/reducers/index.js +++ b/src/content/reducers/index.js @@ -1,18 +1,15 @@ -import settingReducer from 'settings/reducers/setting'; import inputReducer from './input'; import followReducer from './follow'; // Make setting reducer instead of re-use const defaultState = { input: inputReducer(undefined, {}), - setting: settingReducer(undefined, {}), follow: followReducer(undefined, {}), }; export default function reducer(state = defaultState, action = {}) { return Object.assign({}, state, { input: inputReducer(state.input, action), - setting: settingReducer(state.setting, action), follow: followReducer(state.follow, action), }); } diff --git a/src/content/reducers/input.js b/src/content/reducers/input.js index 802020f..c79b206 100644 --- a/src/content/reducers/input.js +++ b/src/content/reducers/input.js @@ -2,6 +2,7 @@ import actions from 'content/actions'; const defaultState = { keys: '', + keymaps: {}, }; export default function reducer(state = defaultState, action = {}) { @@ -14,6 +15,10 @@ export default function reducer(state = defaultState, action = {}) { return Object.assign({}, state, { keys: '', }); + case actions.INPUT_SET_KEYMAPS: + return Object.assign({}, state, { + keymaps: action.keymaps, + }); default: return state; }