aboutsummaryrefslogtreecommitdiff
path: root/src/content/actions/setting.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/content/actions/setting.ts')
-rw-r--r--src/content/actions/setting.ts37
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 };