diff options
author | Shin'ya Ueoka <ueokande@i-beam.org> | 2018-01-11 13:02:14 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-01-11 13:02:14 +0000 |
commit | f5dfdb0bd7ab850c77cae523928c876fe5e002fa (patch) | |
tree | 083a7c9dcd4e85daef7f8323067454b48730c6e6 /src/shared/settings/storage.js | |
parent | c3d1535224231cd379cf503a4c4937342ef27383 (diff) | |
parent | fad8f96a663d83792138cc986474ec4228b6c6c9 (diff) |
Merge pull request #303 from ueokande/properties
Properties support
Diffstat (limited to 'src/shared/settings/storage.js')
-rw-r--r-- | src/shared/settings/storage.js | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/shared/settings/storage.js b/src/shared/settings/storage.js new file mode 100644 index 0000000..1edb441 --- /dev/null +++ b/src/shared/settings/storage.js @@ -0,0 +1,31 @@ +import DefaultSettings from './default'; +import * as settingsValues from './values'; + +const loadRaw = () => { + return browser.storage.local.get('settings').then(({ settings }) => { + if (!settings) { + return DefaultSettings; + } + return Object.assign({}, DefaultSettings, settings); + }); +}; + +const loadValue = () => { + return loadRaw().then((settings) => { + let value = JSON.parse(DefaultSettings.json); + if (settings.source === 'json') { + value = settingsValues.valueFromJson(settings.json); + } else if (settings.source === 'form') { + value = settingsValues.valueFromForm(settings.form); + } + return value; + }); +}; + +const save = (settings) => { + return browser.storage.local.set({ + settings, + }); +}; + +export { loadRaw, loadValue, save }; |