diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/settings/actions/setting.js | 12 | ||||
| -rw-r--r-- | src/settings/components/form/keymaps-form.jsx | 38 | ||||
| -rw-r--r-- | src/shared/settings/default.js (renamed from src/shared/default-settings.js) | 38 | ||||
| -rw-r--r-- | src/shared/settings/values.js | 35 | 
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 };  | 
