aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/settings/actions/setting.js12
-rw-r--r--src/settings/components/form/keymaps-form.jsx38
-rw-r--r--src/shared/settings/default.js (renamed from src/shared/default-settings.js)38
-rw-r--r--src/shared/settings/values.js35
4 files changed, 83 insertions, 40 deletions
diff --git a/src/settings/actions/setting.js b/src/settings/actions/setting.js
index fa158a3..1d4ef34 100644
--- a/src/settings/actions/setting.js
+++ b/src/settings/actions/setting.js
@@ -1,6 +1,7 @@
import actions from 'settings/actions';
import messages from 'shared/messages';
-import DefaultSettings from 'shared/default-settings';
+import DefaultSettings from 'shared/settings/default';
+import * as settingsValues from 'shared/settings/values';
const load = () => {
return browser.storage.local.get('settings').then(({ settings }) => {
@@ -24,12 +25,19 @@ const save = (settings) => {
};
const set = (settings) => {
+ let value = JSON.parse(DefaultSettings.json);
+ if (settings.source === 'json') {
+ value = settingsValues.fromJson(settings.json);
+ } else if (settings.source === 'form') {
+ value = settingsValues.fromForm(settings.form);
+ }
+
return {
type: actions.SETTING_SET_SETTINGS,
source: settings.source,
json: settings.json,
form: settings.form,
- value: JSON.parse(settings.json),
+ value,
};
};
diff --git a/src/settings/components/form/keymaps-form.jsx b/src/settings/components/form/keymaps-form.jsx
index a112979..a827e4e 100644
--- a/src/settings/components/form/keymaps-form.jsx
+++ b/src/settings/components/form/keymaps-form.jsx
@@ -4,29 +4,29 @@ import Input from '../ui/input';
const KeyMapFields = [
[
- ['scroll.vertically?{count:-1}', 'Scroll down'],
- ['scroll.vertically?{count:1}', 'Scroll up'],
- ['scroll.horizonally?{count:-1}', 'Scroll left'],
- ['scroll.horizonally?{count:1}', 'Scroll right'],
+ ['scroll.vertically?{"count":1}', 'Scroll down'],
+ ['scroll.vertically?{"count":-1}', 'Scroll up'],
+ ['scroll.horizonally?{"count":-1}', 'Scroll left'],
+ ['scroll.horizonally?{"count":1}', 'Scroll right'],
['scroll.home', 'Scroll leftmost'],
['scroll.end', 'Scroll last'],
- ['scroll.pages?{count:-0.5}', 'Scroll up by half of screen'],
- ['scroll.pages?{count:0.5}', 'Scroll up by half of screen'],
- ['scroll.pages?{count:-1}', 'Scroll up by a screen'],
- ['scroll.pages?{count:1}', 'Scroll up by a screen'],
+ ['scroll.pages?{"count":-0.5}', 'Scroll up by half of screen'],
+ ['scroll.pages?{"count":0.5}', 'Scroll up by half of screen'],
+ ['scroll.pages?{"count":-1}', 'Scroll up by a screen'],
+ ['scroll.pages?{"count":1}', 'Scroll up by a screen'],
], [
['tabs.close', 'Close a tab'],
['tabs.reopen', 'Reopen closed tab'],
- ['tabs.next?{count:1}', 'Select next Tab'],
- ['tabs.prev?{count:1}', 'Select prev Tab'],
+ ['tabs.next?{"count":1}', 'Select next Tab'],
+ ['tabs.prev?{"count":1}', 'Select prev Tab'],
['tabs.first', 'Select first tab'],
['tabs.last', 'Select last tab'],
- ['tabs.reload?{cache:true}', 'Reload current tab'],
+ ['tabs.reload?{"cache":true}', 'Reload current tab'],
['tabs.pin.toggle', 'Toggle pinned state'],
['tabs.duplicate', 'Dupplicate a tab'],
], [
- ['follow.start?{newTab:false}', 'Follow a link'],
- ['follow.start?{newTab:true}', 'Follow a link in new tab'],
+ ['follow.start?{"newTab":false}', 'Follow a link'],
+ ['follow.start?{"newTab":true}', 'Follow a link in new tab'],
['navigate.histories.prev', 'Go back in histories'],
['navigate.histories.next', 'Go forward in histories'],
['navigate.link.next', 'Open next link'],
@@ -39,12 +39,12 @@ const KeyMapFields = [
['find.prev', 'Find previous word'],
], [
['command.show', 'Open console'],
- ['command.show.open?{alter:false}', 'Open URL'],
- ['command.show.open?{alter:true}', 'Alter URL'],
- ['command.show.tabopen?{alter:false}', 'Open URL in new Tab'],
- ['command.show.tabopen?{alter:true}', 'Alter URL in new Tab'],
- ['command.show.winopen?{alter:false}', 'Open URL in new window'],
- ['command.show.winopen?{alter:true}', 'Alter URL in new window'],
+ ['command.show.open?{"alter":false}', 'Open URL'],
+ ['command.show.open?{"alter":true}', 'Alter URL'],
+ ['command.show.tabopen?{"alter":false}', 'Open URL in new Tab'],
+ ['command.show.tabopen?{"alter":true}', 'Alter URL in new Tab'],
+ ['command.show.winopen?{"alter":false}', 'Open URL in new window'],
+ ['command.show.winopen?{"alter":true}', 'Alter URL in new window'],
['command.show.buffer', 'Open buffer command'],
], [
['addon.toggle.enabled', 'Enable or disable'],
diff --git a/src/shared/default-settings.js b/src/shared/settings/default.js
index 218390b..fc259b8 100644
--- a/src/shared/default-settings.js
+++ b/src/shared/settings/default.js
@@ -66,29 +66,29 @@ export default {
'form': {
'keymaps': {
- 'scroll.vertically?{count:-1}': 'j',
- 'scroll.vertically?{count:1}': 'k',
- 'scroll.horizonally?{count:-1}': 'h',
- 'scroll.horizonally?{count:1}': 'l',
+ 'scroll.vertically?{"count":1}': 'j',
+ 'scroll.vertically?{"count":-1}': 'k',
+ 'scroll.horizonally?{"count":-1}': 'h',
+ 'scroll.horizonally?{"count":1}': 'l',
'scroll.home': '0',
'scroll.end': '$',
- 'scroll.pages?{count:-0.5}': '<C-U>',
- 'scroll.pages?{count:0.5}': '<C-D>',
- 'scroll.pages?{count:-1}': '<C-B>',
- 'scroll.pages?{count:1}': '<C-F>',
+ 'scroll.pages?{"count":-0.5}': '<C-U>',
+ 'scroll.pages?{"count":0.5}': '<C-D>',
+ 'scroll.pages?{"count":-1}': '<C-B>',
+ 'scroll.pages?{"count":1}': '<C-F>',
'tabs.close': 'd',
'tabs.reopen': 'u',
- 'tabs.next?{count:1}': 'J',
- 'tabs.prev?{count:1}': 'K',
+ 'tabs.next?{"count":1}': 'J',
+ 'tabs.prev?{"count":1}': 'K',
'tabs.first': 'g0',
'tabs.last': 'g$',
- 'tabs.reload?{cache:true}': 'r',
+ 'tabs.reload?{"cache":true}': 'r',
'tabs.pin.toggle': 'zp',
'tabs.duplicate': 'zd',
- 'follow.start?{newTab:false}': 'f',
- 'follow.start?{newTab:true}': 'F',
+ 'follow.start?{"newTab":false}': 'f',
+ 'follow.start?{"newTab":true}': 'F',
'navigate.histories.prev': 'H',
'navigate.histories.next': 'L',
'navigate.link.next': ']]',
@@ -101,12 +101,12 @@ export default {
'find.prev': 'N',
'command.show': ':',
- 'command.show.open?{alter:false}': 'o',
- 'command.show.open?{alter:true}': 'O',
- 'command.show.tabopen?{alter:false}': 't',
- 'command.show.tabopen?{alter:true}': 'T',
- 'command.show.winopen?{alter:false}': 'w',
- 'command.show.winopen?{alter:true}': 'W',
+ 'command.show.open?{"alter":false}': 'o',
+ 'command.show.open?{"alter":true}': 'O',
+ 'command.show.tabopen?{"alter":false}': 't',
+ 'command.show.tabopen?{"alter":true}': 'T',
+ 'command.show.winopen?{"alter":false}': 'w',
+ 'command.show.winopen?{"alter":true}': 'W',
'command.show.buffer': 'b',
'addon.toggle.enabled': '<S-Esc>',
diff --git a/src/shared/settings/values.js b/src/shared/settings/values.js
new file mode 100644
index 0000000..d86cfdc
--- /dev/null
+++ b/src/shared/settings/values.js
@@ -0,0 +1,35 @@
+const operationFromName = (name) => {
+ let [type, argStr] = name.split('?');
+ let args = {};
+ if (argStr) {
+ args = JSON.parse(argStr);
+ }
+ return Object.assign({ type }, args);
+};
+
+const fromJson = (json) => {
+ return JSON.parse(json);
+};
+
+const fromForm = (form) => {
+ let keymaps = {};
+ for (let name of Object.keys(form.keymaps)) {
+ let keys = form.keymaps[name];
+ keymaps[keys] = operationFromName(name);
+ }
+
+ let engines = {};
+ for (let { name, url } of form.search.engines) {
+ engines[name] = url;
+ }
+ let search = {
+ default: form.search.default,
+ engines,
+ };
+
+ let blacklist = form.blacklist;
+
+ return { keymaps, search, blacklist };
+};
+
+export { fromJson, fromForm };