diff options
Diffstat (limited to 'src/content/actions/setting.ts')
-rw-r--r-- | src/content/actions/setting.ts | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/content/actions/setting.ts b/src/content/actions/setting.ts new file mode 100644 index 0000000..1c15dd7 --- /dev/null +++ b/src/content/actions/setting.ts @@ -0,0 +1,37 @@ +import actions from 'content/actions'; +import * as keyUtils from 'shared/utils/keys'; +import operations from 'shared/operations'; +import messages from 'shared/messages'; + +const reservedKeymaps = { + '<Esc>': { type: operations.CANCEL }, + '<C-[>': { type: operations.CANCEL }, +}; + +const set = (value) => { + let entries = []; + if (value.keymaps) { + let keymaps = { ...value.keymaps, ...reservedKeymaps }; + entries = Object.entries(keymaps).map((entry) => { + return [ + keyUtils.fromMapKeys(entry[0]), + entry[1], + ]; + }); + } + + return { + type: actions.SETTING_SET, + value: { ...value, + keymaps: entries, } + }; +}; + +const load = async() => { + let settings = await browser.runtime.sendMessage({ + type: messages.SETTINGS_QUERY, + }); + return set(settings); +}; + +export { set, load }; |